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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1]
1  Programación / Ingeniería Inversa / Re: Una ayuda que esto atascado en: 10 Mayo 2008, 01:28 am
Hola!

La explicación de por qué el parche es el que proponía solidcls es el siguiente:

· Ejecutamos el programa en OllyDbg. Cuando sale el MessageBox, pausamos y ejecutamos hasta que se produzca la vuelta al código cliente (Alt+F9). Al pulsar sobre el botón de aceptar, paramos en 46091F. Subiendo un poco vemos que desde 460910 está la llamada a MessageBoxA, y si bajamos desde 46091F vemos que no hay ningún salto que permita "puentear" la llamada a la API, por lo que esa función entera es llamada en caso de no estar registrado.

· Entonces, pulsamos Ctrl+F9 y con F7, salimos a la función que llamó al procedimiento que mostraba el MessageBox (460834...460988). Caemos en una zona que el programa utiliza para restablecer EBX, ESI y EDI de manera genérica así que seguimos hasta el RET.

· Este RET nos lleva a 4B851A. Si nos fijamos, la línea siguiente en la que caemos es apuntada por un salto. Dicho salto está en 4B8500 y éste sí que permite evitar llamar al MessageBox:

Código:
004B84F9  |.  E8 A6DDFFFF   CALL jpgserve.004B62A4
004B84FE  |.  84C0          TEST AL,AL
004B8500  |.  75 1A         JNZ SHORT jpgserve.004B851C
004B8502  |.  6A 00         PUSH 0
004B8504  |.  B9 58874B00   MOV ECX,jpgserve.004B8758                ;  ASCII "Unregistered Version"
004B8509  |.  BA 70874B00   MOV EDX,jpgserve.004B8770                ;  ASCII "You are running an ..."
004B850E  |.  A1 B4214C00   MOV EAX,DWORD PTR DS:[4C21B4]
004B8513  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B8515  |.  E8 1A83FAFF   CALL jpgserve.00460834
004B851A  |.  EB 38         JMP SHORT jpgserve.004B8554
004B851C  |>  8D55 84       LEA EDX,DWORD PTR SS:[EBP-7C]

· He copiado toda esa zona, para que observes que primero se llama a 4B62A4, y después se comprueba si devolvió diferente de cero, en cuyo caso salta el código que muestra el MessageBox. Nos introducimos entonces en la función 4B62A4, y tenemos:

Código:
004B62A4  /$  E8 FB010000   CALL jpgserve.004B64A4
004B62A9  \.  C3            RETN

de manera que volvemos a introducirnos en 4B64A4, y estaremos en la rutina que comprueba si el programa está registrado. Ensamblamos lo comentado anteriormene, y todo irá de perlas...

Saludos, mikello
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines