Empecemos pues...
Carguemos a nuestro amigo en el SoftICE y enseñémosle
quien es el que manda!!!
Bien, nos encontramos al principio del programa:
014F:004F1000 PUSH DWORD PTR
[ESP+0C]
014F:004F1004 PUSH DWORD PTR [ESP+0C]
014F:004F1008 PUSH DWORD PTR [ESP+0C]
014F:004F100C PUSH FCF52370
014F:004F1011 PUSH FCB06073
014F:004F1016 PUSH FCF520AC
014F:004F101B PUSH FCF52056
014F:004F1020 CALL [00454178] <--
Descomprime parte del programa.
014F:004F1026 PUSH FFFFFFFF
014F:004F102B CALL EAX <-- Continua
con lo suyo. :))
014F:004F102D RET 000C
En la línea 014F:004F1020
se ejecuta CALL [00454178], que es una llamada a una función
del compresor VBOX que descomprime parte del programa y
devuelve en EAX la dirección de memoria donde el programa
debe continuar. Así que inspeccionemos que se hace
ahí, pulsemos F8 en el CALL EAX.
Nos encontramos con lo siguiente:
014F:004F1000 PUSH DWORD PTR
[ESP+0C]
014F:004F1004 PUSH DWORD PTR [ESP+0C]
014F:004F1008 PUSH DWORD PTR [ESP+0C]
014F:004F100C PUSH 27292979
014F:004F1011 PUSH 510C3BF6
014F:004F1016 PUSH 9655349C
014F:004F101B PUSH E79A2ACE
014F:004F1020 CALL [0045315C] <--
Función Importante.
014F:004F1026 PUSH FFFFFFFF
014F:004F102B CALL EAX <-- Salta al
programa original. :))
014F:004F102D RET 000C
El código es muy
parecido. En la línea 014F:004F1020 hace una llamada
a la librería VBOX, la cual comprueba si ya han pasado
los 15 días y si no han pasado, termina de descomprimir
el programa original. Luego muestra una Nag muy fea...
Como antes, tambien se devuelve en EAX donde debe continuar
el programa: devolverá la dirección del programa original
si no han pasado los 15 dias y una dirección para salir
del programa si ya han pasado...
Asi que ejecutemos paso a paso el programa hasta la linea
014F:004F102B, en la cual vamos a cambiar unas lineas, para
eso introducimos el comando a,
para ensamblar y escribimos jmp eip.
Esto provocara que el programa quede en un bucle infinito
(Acuerdate antes de apuntarte el valor del registro EAX,
puesto que lo necesitaremos mas tarde).
Ahora le toca el turno al ProcDump. Cargamos el ProcDump
y elegimos la opción de Dump (FULL).
Guardamos el fichero con el nombre que queramos (este fichero
contiene el codigo original, ya descomprimido). Por lo que
solo nos queda modificar la cabecera para que lo que se
ejecute sea el codigo original y no el del descompresor.
Para eso elegimos la opción de PE
Editor y cargamos nuestro fichero. Debemos de cambiar
el "Entry Point" para que apunte al codigo original, de
tal forma que Base Image + Entry Point = El valor del registro
EAX (te lo habias apuntado, no?). Sustituyelo y pulsa OK!!
Ahora ejecuta el fichero y ya tienes Ulead Button.Applet
1.0 para rato... :))
|