Karpoff Spanish Tutor

Programa:

Cripple


 

PROTECCION: Empakado, serial name
Descripcion: ?????? 
Dificultad: Principiante++
DOWNLOAD: ??????
Herramientas: Softice, w32dasm, Editor Hex, Process Patcher R!SC
CRACKER: Txotxo   FECHA: 22/09/2000

 

 INTRODUCCION

Primero, debemos darnos cuenta, de que se trata de un programa hecho en Visual Basic. Probamos con el gettype, y nos dice que está comprimido con UPX.

 

 AL ATAKE

Bueno, abrimos Procdump, e intentamos descomprimirlo:
Pero aquí, nos encontramos, con que la ventana no aparece en ningún sitio, y el procdump, se queda pillado, sin hacer nada durante un rato. Por lo que procederemos a descomprimirlo manualmente (es más divertido). Abrimos el Frogsice, para esconder el debugger. Abrimos el Sice, y cargamos la librería msvbvm60.dll, si es que no la teníamos en el winice.dat. Y le damos a ejecutar. Pero mira por donde, el sice no se para en ningún sitio, y el programa es ejecutado tal cual. NO PASA NADA. Abrimos procdump, y le damos a PE Editor, y vemos las secciones, y vemos que las características de la primera pone algo así: E0000080, eso debemos cambiarlo por E0000020. Y ahora, si nos rompera el SICE.

Las rutinas de descompresión, hacen algo como esto:

PUSHAD
..........
..........
POPAD
JMP EntryPoint del programa descomprimido

Bueno, pues lo que tenemos que buscar es el POPAD (61).
Por lo que al entrar en el Sice, rompe en la dirección 4070C1, entonces ponemos: s 4070C1 l ffffffff 61, y nos lo encuentra en 407217. Ponemos un breakpoint en esa dirección: bpx 407217, y pulsamos CTRL+D. Nos rompe en ella, y vemos lo siguiente:

407217 POPAD
407218 JMP 40124C

Este último valor es el entry point del programa descomprimido. LLegamos al jmp, y lo editamos con el commando a. Ponemos jmp eip. Y pulsamos CTRL+D.

Abrimos procdump, y buscamos el programa en la lista de tareas, y con el boton derecho del ratón, seleccionadmos la opcion Dump (full), y lo salvamos con el nombre Dump.exe. Editamos ese programa con el procdump, con el PE Editor, y vemos, que la Base es 400000, simplemente, restamos 40124C-400000, y nos da 124C, que es el entrypoint, que tenemos que poner. ejecutamos el Dump.exe, y vemos que funciona perfectamente.

Ahora, abrimos el W32DasmVB, y pulsamos STR REF, y Seleccionamos la última.
Seleccionamos esta última, y vamos hacia atrás, hasta encontrarnos algún salto condicional (je xxxxx/ jne xxxxxx).
Apuntamos el Offset, y parcheamos(cambiamos el 74 por 75) con algún editor hexadecimal, ejecutamos, y ya está. 
El problema, es que el original está comprimido, por lo que podemos generar un Loader, que partxee el programa en memoria. Yo uso Risc Process Patcher, y el script correspondiente es el siguiente:

T=2000: 
F=Crippleware.exe: 
O=CrippleLoader.exe: 
P=4034F6/74/75: 


Que genera el CrippleLoader.exe, ejecutadlo, y vereis como funciona perfectamente. -(:-D

Este tutorial está disponible en www.geocities.com/ttxotxo Sección Cracking.

 

Karpoff Spanish Tutor: Pagina dedicada a la divulgacion de informacion en Castellano, sobre Ingenieria Inversa y Programacion. Email "Colabora con tus Proyectos"
www.000webhost.com