elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8
41  Programación / Ingeniería Inversa / Re: Que sucede en este trozo? en: 26 Enero 2011, 18:01 pm
Me parece que no estás buscando donde debes. Eso debe ser la sección de datos del programa no instrucciones a ejecutar. De hecho pone (aunque tú ya lo sabías):
Código:
(...)te trains with AddStaticVehicle/EX
Código:
maxplayers
Código:
SCRIPT: 
Saludos.
42  Programación / Programación Visual Basic / Re: [Ayuda] Acces y VB6 (y dale con eso) en: 4 Diciembre 2010, 06:05 am
Creo que nunca he usado un objeto data, pero casi seguro que será así:
Código
  1.    bd.Recordset.AddNew    
  2.    bd.Recordset.Fields(0) = "juanito"
  3.    bd.Recordset.Fields(1) = 88
  4.    bd.Recordset.Update

Saludos.
43  Programación / Programación Visual Basic / Re: click automatico en Webbrowser en: 6 Octubre 2010, 18:42 pm
Seguro que no es la forma idónea, pero esto funciona:

Código
  1. Option Explicit
  2.  
  3. Private Sub EsperarNavegador(ByRef obj As Object)
  4.  
  5.  DoEvents
  6.  While obj.Busy = True
  7.    DoEvents
  8.  Wend
  9.  
  10. End Sub
  11.  
  12. Private Sub Form_Activate()
  13. Dim HTMLdoc As HTMLDocument
  14. Dim HTMLlinks As HTMLAnchorElement
  15.  
  16.  wbNav.Navigate "http://guiasciudades.wordpress.com./"
  17.  EsperarNavegador wbNav
  18.  Set HTMLdoc = wbNav.Document
  19.  For Each HTMLlinks In HTMLdoc.links
  20.    If HTMLlinks.outerText = "Cuenca" Then
  21.      MsgBox HTMLlinks.href
  22.      MsgBox HTMLlinks.innerText
  23.      HTMLlinks.Click
  24.      EsperarNavegador wbNav
  25.      Exit For
  26.    End If
  27.  Next HTMLlinks
  28.  Set HTMLdoc = wbNav.Document
  29.  For Each HTMLlinks In HTMLdoc.links
  30.    If HTMLlinks.outerText = "Casasimarro" Then
  31.      HTMLlinks.Click
  32.      EsperarNavegador wbNav
  33.      Exit For
  34.    End If
  35.  Next HTMLlinks
  36.  
  37. End Sub
Va entrar en el primer link "Cuenca" (hay 3).
Si la web tuviese frames, tendrías que específicar en cual se encuentra:
Código
  1.  Set HTMLdoc = WebBrowser1.Document.frames("nombre_frame").Document
  2.  

Saludos.
44  Programación / Ingeniería Inversa / Re: Quitar una imagen de la impresion en: 15 Junio 2010, 14:08 pm
¿ como llegaste a saber que la rutina de 00F99640 es la que controla el periodo de prueba?
Adelanté la fecha de windows para ver el mensaje que salía al haber caducado. Luego puse un punto de ruptura en rtcMsgBox y vi que procedimiento era el que lo llamaba.

Saludos.
45  Programación / Ingeniería Inversa / Re: Quitar una imagen de la impresion en: 15 Junio 2010, 01:02 am
Esta es la línea donde empieza el prodecimiento que imprime " Trial Version " en las tarjetas:
Código
  1. 010A93A0     55                     PUSH EBP
y basta con convertir esa línea en un RET (0xC3)

Esta es la línea donde empieza el procedimiento que controla el período de prueba:
Código
  1. 00F99640     55                     PUSH EBP
y basta con convertir esa línea en un RET (0xC3)

Con esos dos parches el programa ya da no caduca ni muestra el texto. Pero podemos quitar esa ventanita que al arrancar nos dice que nos quedan 30 días. Y ésta es la línea donde comienza el procedimiento que nos muestra dicha nag:
Código
  1. 012A5060     55                     PUSH EBP
y basta, nuevamente, con convertir esa línea en un RET (0xC3)

Y si queréis que no os salga la ventana que pregunta qué tipo de versión queremos evaluar (por cierto yo no noto diferencia entre ellas), podéis nopear estas líneas:
Código
  1. 012A6A42     E8 09020000            CALL 012A6C50
  2. 012A6A47     3BC6                   CMP EAX,ESI
  3. 012A6A49     7F 15                  JG SHORT 012A6A60

Saludos.

------------------
Edito porque se me olvidó quitar un mensaje "molesto". Cuando le das a imprimir te sale un messagebox diciéndote que es una versión de prueba y que le va a añadir el texto " Trial Version " a la tarjeta (aunque realmente no lo haga porque lo hemos parcheado antes). Así que podemos parchear la llamada a esa messagebox y el salto como que aceptamos siempre:
Código
  1. 011EE1F7     E8 54AAEBFF            CALL 010A8C50
  2. 011EE1FC     0FBFD0                 MOVSX EDX,AX
  3. 011EE1FF     85D2                   TEST EDX,EDX
  4. 011EE201     75 60                  JNZ SHORT 011EE263
dejándolo así:
Código
  1. 011EE1F7     90                     NOP
  2. 011EE1F8     90                     NOP
  3. 011EE1F9     90                     NOP
  4. 011EE1FA     90                     NOP
  5. 011EE1FB     90                     NOP
  6. 011EE1FC     0FBFD0                 MOVSX EDX,AX
  7. 011EE1FF     85D2                   TEST EDX,EDX
  8. 011EE201     EB 60                  JMP SHORT 011EE263

Y como no me ha llegado a salir la nag esa de la pausa cada media hora pues no la he investigado.

Saludos.
46  Programación / ASM / Re: calcular SizeOfImage y la VirtualSize de un archivo en: 11 Junio 2010, 10:19 am
lo que no me queda claro es de donde sale el valor de la segunda columna 00600100 que es el que puedo ver con un editor hexadecimal en el offset 281 y 282
Ese valor es el mismo que antes (0x00016000).
En los ejecutables, los dwords, words... se almacenan inversamente por bytes.
Prueba a crear un programa en cualquier lenguaje y mete una constante de tamaño dword con el valor 0x12345678h. Sil o abres con un editor hexadecimal verás que está almacenada como 78673412.
Código
  1. .386
  2. .model flat, stdcall
  3. option casemap :none
  4.  
  5. include \masm32\include\kernel32.inc
  6.  
  7. includelib \masm32\lib\kernel32.lib
  8.  
  9. .data
  10. ddConstante dd 12345678h
  11.  
  12. .code
  13. start:
  14. mov eax, ddConstante
  15. push 0
  16. call ExitProcess
  17. end start
Cuando lo abras con el Olly verás esto:

en el "dump" está 0x78563412 pero Olly ya nos indica que la dirección 0x00430000 contiene el valor 0x12345678:
Código:
[00430000]=12345678

Saludos.
47  Programación / Ingeniería Inversa / Re: Problema con registro en Delphi -->MCKSys Argentina en: 14 Mayo 2010, 13:02 pm
Solo 2 preguntas: ¿me podrias mandar los tutes que as echo para leerlos?
Para la primera pregunta. Lo cierto es que esos tutoriales "individualizados" (¿esto existe o me lo acabo de inventar?) los escribo contestando mensajes privados así que no los tengo. Tendría que revisar los foros por los que los he hecho a ver si guardan copia y conservo alguno a ver si hay suerte.
También tengo alguno en inglés en crackmes.de  http://www.crackmes.de/users/peterpunk
y recuerdo haber hecho uno en PDF sobre esto:
http://foro.elhacker.net/ingenieria_inversa/me_kedan_10_dias_o_no_se_si_devolverlo-t246629.0.html;msg1191695#msg1191695
Si lo encuentro te lo paso por privado.

y ¿como buscas las referencias a una dirección? yo me pongo encima le doy ctrl+R pero no me sale lo que a ti

a ti te sale esto:

Código:
References in Art:.text to 0054A5DC
Address       Disassembly          Comment
004D667C      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
004D6779      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
0050CACC      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
0050CB92      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
0050FEC9      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
0050FF2F      MOV EAX,[54A5DC]     (Initial CPU selection)
00510133      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
00539B0B      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1

Y a mi con control+R encima de la dirección solo me sale 1 dirección que la misma de la que estoy encima (perdonadme por mi ignorancia).
Botón derecho en la línea de la que quieras ver las referencias y allí:
Find References -> Address Constant
Lo cierto es que dependiendo de la línea sobre la que hagas click con el botón derecho te pueden salir diversas opciones. Por ejemplo (código de un programa aleatorio)
Código:
0045F3B0   /.  832D 64544600 01     SUB DWORD PTR [465464],1
te mostrará tres opciones:
-Selected Command CTRL+R <- te busca las referencias a 0x45F3B0
en este caso a mi me devuelve
Código:
References in Keygneme:.text to 0045F3B0
Address       Disassembly                       Comment
0045E8C4      DD Keygneme.0045F3B0
0045F3B0      SUB DWORD PTR [465464],1          (Initial CPU selection)
-Inmediate constant <- referencias a 1
Esta me muestra mogollón de líneas (todas en las que se pone algo a 1)
-Address constant <- referencias a 0x465464
Me devuelve
Código:
References in Keygneme:.text to 00465464
Address       Disassembly                       Comment
0042767D      INC DWORD PTR [465464]            DS:[00465464]=00000000
0045F3B0      SUB DWORD PTR [465464],1          (Initial CPU selection)

Si la línea sobre la que pinchas es un salto o una llamada te aparecerían aparte del "Selected Command CTRL+R" (que aparece siempre), "Jump Destination" o "Call Destination" dependiendo del caso.

Saludos.
48  Programación / Ingeniería Inversa / Re: Problema con registro en Delphi -->MCKSys Argentina en: 13 Mayo 2010, 22:02 pm
¿De cual de los dos programas me habalas?
??? Esta vez soy yo el que no te entiende a ti. Hablo del ejecutable art.exe que es el único que he abierto.
La verdad es que ni siquiera he tocado el tuyo, pero como leí que decías que cuando le dabas a registrar el programa se te "registraba bien", supuse que habías parcheado esta zona:
Código:
0050CAE9   |> \C645 FF 00           MOV BYTE PTR [EBP-1],>
0050CAED   |.  8D45 EC              LEA EAX,[EBP-14]
0050CAF0   |.  50                   PUSH EAX              ; /Arg1
0050CAF1   |.  33C9                 XOR ECX,ECX           ; |
0050CAF3   |.  BA 28CC5000          MOV EDX,0050CC28      ; |ASCII "If you have paid, please enter registration code"
0050CAF8   |.  B8 64CC5000          MOV EAX,0050CC64      ; |ASCII "Enter registration code"
0050CAFD   |.  E8 E6D0F5FF          CALL 00469BE8         ; \Art.00469BE8
0050CB02   |.  837D EC 00           CMP DWORD PTR [EBP-14>
0050CB06   |.  0F84 C0000000        JE 0050CBCC
0050CB0C   |.  8B45 EC              MOV EAX,[EBP-14]
0050CB0F   |.  E8 0875EFFF          CALL 0040401C
0050CB14   |.  83F8 24              CMP EAX,24
0050CB17   |.  0F85 9A000000        JNZ 0050CBB7
0050CB1D   |.  8B45 EC              MOV EAX,[EBP-14]
0050CB20   |.  E8 BB76EFFF          CALL 004041E0
0050CB25   |.  8945 F8              MOV [EBP-8],EAX
0050CB28   |.  8B45 F8              MOV EAX,[EBP-8]
0050CB2B   |.  E8 D0320000          CALL 0050FE00
0050CB30   |.  84C0                 TEST AL,AL
0050CB32   |.  74 6C                JE SHORT 0050CBA0
0050CB34   |.  B2 01                MOV DL,1
0050CB36   |.  A1 601C4600          MOV EAX,[461C60]
0050CB3B   |.  E8 E452F5FF          CALL 00461E24
0050CB40   |.  8945 F0              MOV [EBP-10],EAX
0050CB43   |.  BA 01000080          MOV EDX,80000001
0050CB48   |.  8B45 F0              MOV EAX,[EBP-10]
0050CB4B   |.  E8 0454F5FF          CALL 00461F54
0050CB50   |.  B1 01                MOV CL,1
0050CB52   |.  BA 84CC5000          MOV EDX,0050CC84      ;  ASCII "\SOFTWARE\Elcom\ART\Registration"
0050CB57   |.  8B45 F0              MOV EAX,[EBP-10]
0050CB5A   |.  E8 A955F5FF          CALL 00462108
0050CB5F   |.  8845 F7              MOV [EBP-9],AL
0050CB62   |.  8D45 E8              LEA EAX,[EBP-18]
0050CB65   |.  8B55 F8              MOV EDX,[EBP-8]
0050CB68   |.  E8 E773EFFF          CALL 00403F54
0050CB6D   |.  8B4D E8              MOV ECX,[EBP-18]
0050CB70   |.  BA B0CC5000          MOV EDX,0050CCB0      ;  ASCII "Code"
0050CB75   |.  8B45 F0              MOV EAX,[EBP-10]
0050CB78   |.  E8 435BF5FF          CALL 004626C0
0050CB7D   |.  6A 00                PUSH 0                ; /Arg1 = 00000000
0050CB7F   |.  66:8B0D B8CC5000     MOV CX,[50CCB8]       ; |
0050CB86   |.  B2 02                MOV DL,2              ; |
0050CB88   |.  B8 C4CC5000          MOV EAX,0050CCC4      ; |ASCII "Thank you for registering !"
0050CB8D   |.  E8 B2CBF5FF          CALL 00469744         ; \Art.00469744
0050CB92   |.  A1 DCA55400          MOV EAX,[54A5DC]
0050CB97   |.  C600 01              MOV BYTE PTR [EAX],1
0050CB9A   |.  C645 FF 01           MOV BYTE PTR [EBP-1],>
0050CB9E   |.  EB 2C                JMP SHORT 0050CBCC
0050CBA0   |>  6A 00                PUSH 0                ; /Arg1 = 00000000
0050CBA2   |.  66:8B0D B8CC5000     MOV CX,[50CCB8]       ; |

¿De cual de los dos programas me habalas?
¿como sabes esto(donde lo miras)?

Lo que es el registro es inviable sacarlo:
Una clave de 36 caracteres de la que calcula el MD5 y luego la compara con muchísimas que están en el propio programa a partir de 0x4D6DAC.
[/quote]Sólo hay que profundizar en el código antes expuesto:
Código:
0050CB0F   |.  E8 0875EFFF          CALL 0040401C
0050CB14   |.  83F8 24              CMP EAX,24
0050CB17   |.  0F85 9A000000        JNZ 0050CBB7
Aquí compara la longitud introducida con 0x24 (36 letras de toda la vida)
Luego entramos aquí:
Código:
0050CB2B   |.  E8 D0320000          CALL 0050FE00
Código:
(...)
0050FE2D   |.  8B45 FC              MOV EAX,[EBP-4]
0050FE30   |.  E8 AB64FCFF          CALL 004D62E0                 ;  calcula el MD5 del codigo introducido
0050FE35   |.  8B45 E8              MOV EAX,[EBP-18]
0050FE38   |.  E8 DF41EFFF          CALL 0040401C
0050FE3D   |.  8945 F0              MOV [EBP-10],EAX
0050FE40   |.  A1 D8A55400          MOV EAX,[54A5D8]              ;  esto me apunta a 0x543528
0050FE45   |.  8B00                 MOV EAX,[EAX]                 ;  y esto me lleva a 0x4D6DAC
0050FE47   |.  E8 D041EFFF          CALL 0040401C
0050FE4C   |.  8945 EC              MOV [EBP-14],EAX
0050FE4F   |.  C645 E7 01           MOV BYTE PTR [EBP-19],1
0050FE53   |.  C745 F4 01000000     MOV DWORD PTR [EBP-C],1
0050FE5A   |>  8B45 EC              /MOV EAX,[EBP-14]
0050FE5D   |.  50                   |PUSH EAX                     ; /Arg2
0050FE5E   |.  6A 01                |PUSH 1                       ; |Arg1 = 00000001
0050FE60   |.  A1 D8A55400          |MOV EAX,[54A5D8]             ; |
0050FE65   |.  8B55 F4              |MOV EDX,[EBP-C]              ; |
0050FE68   |.  8B5490 FC            |MOV EDX,[EAX+EDX*4-4]        ; |
0050FE6C   |.  8B4D F0              |MOV ECX,[EBP-10]             ; |
0050FE6F   |.  8B45 E8              |MOV EAX,[EBP-18]             ; |
0050FE72   |.  E8 CDB6F8FF          |CALL 0049B544                ; \Art.0049B544
0050FE77   |.  48                   |DEC EAX
0050FE78   |.  75 06                |JNZ SHORT 0050FE80
0050FE7A   |.  C645 FB 01           |MOV BYTE PTR [EBP-5],1
0050FE7E   |.  EB 0C                |JMP SHORT 0050FE8C
0050FE80   |>  FF45 F4              |INC DWORD PTR [EBP-C]
0050FE83   |.  817D F4 65130000     |CMP DWORD PTR [EBP-C],1365   ;  bucle que compara el MD5 de nuestro
0050FE8A   |.^ 75 CE                \JNZ SHORT 0050FE5A           ;  codigo con todos los validos
0050FE8C   |>  33C0                 XOR EAX,EAX
(...)

y esto tampoco lo entiendo:

Pero si estudias el código que has parcheado para que te muestre que estás registrado verás que se pone a 1 una bandera que es apuntada desde 0x54A5DC. Así que con buscar todas las referencias a esa dirección:
Eso aún está más claro: el programa nada más indicar que estás bien registrado pone esa bandera a 1:
Código:
0050CB88   |.  B8 C4CC5000          MOV EAX,0050CCC4              ; |ASCII "Thank you for registering !"
0050CB8D   |.  E8 B2CBF5FF          CALL 00469744                 ; \Art.00469744
0050CB92   |.  A1 DCA55400          MOV EAX,[54A5DC]
0050CB97   |.  C600 01              MOV BYTE PTR [EAX],1
0050CB9A   |.  C645 FF 01           MOV BYTE PTR [EBP-1],1
aunque lo cierto es que yo ya lo había visto antes, pues al inicio del procedimiento tenemos:
Código:
0050CACC   |.  A1 DCA55400          MOV EAX,[54A5DC]
0050CAD1   |.  8038 00              CMP BYTE PTR [EAX],0
0050CAD4   |.  74 13                JE SHORT 0050CAE9
0050CAD6   |.  C645 FF 01           MOV BYTE PTR [EBP-1],1
0050CADA   |.  B8 00CC5000          MOV EAX,0050CC00              ;  ASCII "You have registered version!"
0050CADF   |.  E8 8CCDF5FF          CALL 00469870
0050CAE4   |.  E9 E3000000          JMP 0050CBCC
lo que evidenciaba su "pequeña" importancia.

PD: se que no te gusta hacer tutoriales ;)
Ja ja ja. Es cierto que soy un "poco" vago.
Aunque para excusarme un poco también he de decir que tampoco dispongo de mucho tiempo.
De todas formas todo depende de a quien vaya dirigido. Si creo que no va a ser de utilidad porque nadie lo va a leer, ya ni se me pasa por la cabeza hacerlo. Pero también es cierto que tengo creado tutoriales "exclusivos" para algunas personas que se mostraban interesadas en privados.

Saludos.

Je,je,je,je... Bueno, parece que ya no me necesitas...  ;)

@PeterPunk77: Buen trabajo amigo (aunque, la verdad, no esperaba menos de ti  ;D)

Saludos!
Muchas gracias, aunque era lo suficientemente sencillo para que tú o Tena os aburriéseis.

Saludos nuevamente (que MCKSys contestó mientras posteaba).
49  Programación / Ingeniería Inversa / Re: Problema con registro en Delphi -->MCKSys Argentina en: 13 Mayo 2010, 17:01 pm
Eso pasa porque realmente no está registrado. Y al arrancarlo de nuevo busca el código en el registro de Windows, vuelve a comprobar y ve que no está registrado.
De todas formas, éste parece muy fácil.
Lo que es el registro es inviable sacarlo:
Una clave de 36 caracteres de la que calcula el MD5 y luego la compara con muchísimas que están en el propio programa a partir de 0x4D6DAC.

Pero si estudias el código que has parcheado para que te muestre que estás registrado verás que se pone a 1 una bandera que es apuntada desde 0x54A5DC. Así que con buscar todas las referencias a esa dirección:
Código:
References in Art:.text to 0054A5DC
Address       Disassembly          Comment
004D667C      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
004D6779      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
0050CACC      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
0050CB92      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
0050FEC9      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
0050FF2F      MOV EAX,[54A5DC]     (Initial CPU selection)
00510133      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
00539B0B      MOV EAX,[54A5DC]     [0054A5DC]=005B2BD1
y actuar en consecuencia, aparentemente ya estaremos registrados. Así que:
1º fuerzas salto
2º nopeas
3º nopeas
4º nada
5º y 6º nopea
0050FF02   |. /74 33                JE SHORT 0050FF37

0050FF29   |. /74 0C                JE SHORT 0050FF37

7º nopeas
8º nopeas

Aunque supongo que con parchear sólo los dos saltos que indico en el 5º y 6º punto debería llegar, ya que parece que es cuando comprueba el código en el registro.

Saludos.
50  Programación / Programación Visual Basic / Re: Duda con listbox y textbox en: 23 Abril 2010, 19:36 pm
Código
  1. Text1.Text = "Esto es el " & List1.List(List1.ListIndex)

Saludos.
Páginas: 1 2 3 4 [5] 6 7 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines