0) Introduccion. |
1) Herramientas necesarias. |
2) Un vistazo al Procdump. |
3) Descompresión manual. |
4) Añadir un Script. |
5) Nota final. |
0) Introduccion. |
La intencion de este manual es enseñar como descomprimir nuestro objetivo
cuando no hay un descompresor para el (o por lo menos no lo tenemos). Nuestra cobaya va a ser el CuentaPasos v3.75. |
1) Herramientas Necesarias. |
|
2) Un vistazo al Procdump. |
ProcDump es una herramienta que te permite (entre otras cosas) copiar el contenido
de un proceso al disco duro. También te permite editar la cabecera de los
programas de tipo PE (Portable Executable).
Veamos entonces como funciona...
¿Que utilidad tienen las listas?
|
3) Descompresión manual. |
OK!! Empecemos por analizer el fichero. Para ello he utilizado la magnifica
herramienta Gettyp, y los resultados son:
- [cpasos32.exe] -----
¿Que es lo que sabemos hasta ahora? Sabiendo esto, cargemos a nuestra cobaya en el SoftICE y pongamos un breackpoint al principio del codigo:
0051440A ; S u b r o u t i n e
En esta Ocasión, vamos a utilizar la opcion PE Editor, con la que podemos editar
la cabecera del ejecutable (alli entre otras cosas esta el punto de entrada), y
seleccionamos el archivo que hemos creado. Nos aparecera una ventana como esta:
![]() Debemos de fijarnos en los cuadros de texto de Image Base (IB) y Entry Point (EP). El programa empieza a ejecutarse en IB+EP, por lo que sabiendo esto nos resultara fácil modificar la cabecera para que apunte a 00401228. Tan solo debemos poner en Entry Point 00401228 - Image Base = 00001228. Asi que pongamos 00001228 en Entry Point y pulsemos OK. Prueba a ejecutar ahora el programa!! Bien, Funciona. Ahora ya tenemos el CuentaPasos descomprimido. xDD |
4) Añadir un Script. |
Vamos a añadir un Script al ProcDump para que sea capaz de descomprimir el
CuentaPasos, asi que editemos el fichero script.ini del ProcDump para añadir una
nueva entrada:
P1A=PCGUARD v2.10
Realmente es bastante sencillo lo que hace este Script: La primera linea busca
la secuencia de bytes FFE0 que corresponden a los opcodes de JMP EAX, luego
ponemos un BreackPoint y ejecutamos el progama paso a paso para gaurdarlo al disco duro. |
5) Nota final. |
Bueno, esto es todo por hoy. Pero no queria terminar este articulo sin deciros
que este metodo de compresion es realente muy sencillo (Si lo intentamos descomprimir
con el metodo estandar que viene con el ProcDump, tambien tendremos exito :)) ). Pero
mi intención era enseñar como hacer esto mismo manualmente y luego añadir un pequeño
Script al ProcDump para ser capaces de descomprimir otros programas que emplean el mismo
compresor.
PD: Recordad que muchos compresores utilizan trucos antidebug y tambien es posible encontrarse
otros que incluyan codigo antiSoftICE... :))
|