PROGRAMA

      

PROTECCION

     

HERRAMIENTAS

Crackme 1 de Doblecero

DESCARGA

 

ASProtect

 

Olly Debugger

PE_editor

Import reconstructor

Stripper 2.07

 

 

 

 

 

     NIVEL: Avispado

 

 


 

Un nuevo packer y una nueva forma de desempacarlo.

Seguimos viendo el tema de reconstrucci�n de IAT que se va complicando pues ASProtect altera la tabla de importaci�n y debemos hacer unos ajustes extra con Import reconstructor para dejar el exe funcionando correctamente.

Nos servir� este capitulo para ir dejando cada vez mas claro el tema de la reconstrucci�n de la IAT.


 

Los pasos para hallar el OEP cambian un poco respecto a cap�tulos anteriores.
Empezaremos como en el capitulo anterior utilizando PE_editor para obtener los datos de la Image Base y Size of Image,
400000 y 19000 respectivamente

�������������������������� ����������������������������������������������������������������������������������������������������������������������������������������������

Cerramos PE_editor y abrimos Peid para tener una idea de cual puede ser el OEP del crackme, nos dice que esta empacado con ASProtect y nos da un OEP que nos servir� para tener una referencia mas a la hora de analizar el crackme: 401224

Cargamos el crackme en Olly aparecemos al principio de la secci�n code y para nuestra sorpresa no vemos ning�n pushad cercano al que hincarle el diente, aparte estamos justo en la secci�n code y no nos servir�a de nada buscar un salto que nos traiga a esta secci�n pues ya estamos en ella.

Atacaremos nuestro objetivo de otra manera.

Pulsamos F9 y Olly se pausa a causa de una excepci�n, podemos verlo debajo de la command bar

��� ->

Utilizaremos el llamado m�todo de las excepciones para localizar el OEP.

Este m�todo consiste en ir pasando con shift + F9 todas las excepciones que nos van apareciendo hasta que el programa se ejecuta, (pasa del estado a running) e irlas contando a la vez que las vamos pasando pues debemos tomar nota de cuantas excepciones nos encontremos hasta la ejecuci�n del programa, no hace falta apuntar las direcciones solo saber el numero, la cantidad de veces que debemos pulsar shift + F9 hasta que el programa se ejecute.

Primero lo haremos contando las veces que tenemos que pulsar shift + F9 en este caso son 16, cuando pulso shift + F916 veces el cartelitode Olly cambia a running y podemos ver que el crackme esta ejecut�ndose, comprobadlo.

Al pulsar shift + F9 por decimosexta vez os aparecer� este cartel que deber�is aceptar pues solo indica que la versi�n de ASProtect con la que empaquete el crackme es trial

Bien pues lo que debemos hacer sabiendo que al pulsar shift + F9 16 veces se ejecuta el crackme es ir contando y al llegar a la pen�ltima excepci�n (en este caso la que hace el numero 15) pasarla con shift + F7

Cargamos de nuevo el crackme en Olly o lo reiniciamos con control + F2, pulsamos F9 y para en la primera excepci�n, pulsamos 15 veces shift + F9 y esta es la direcci�n donde paramos:0033033 (esta direcci�n � la pen�ltima- conviene tomar la costumbre de apuntarla)

Pudiera ser que en vuestro PC cambien las direcciones pero como siempre digo: lo importante es seguir los pasos

luego una vez shift + F7 y caemos aqu�:

 

PulsamosViewpara ver el mapa de memoria

Buscamos en el Memory map el crackme y sobre la secci�n code ponemos un BP Memory on access

Pulsamos F9 y nos vuelve a aparecer este cartel que nos dice que el ASProtect con el que esta empacado es una versi�n trial, si este cartel os aparece antes de pulsar F9, o sea mientras est�is en el proceso de pasar las excepciones con shift + F9 deber�is reiniciar el an�lisis del crackme o mandarme un giro postal para que pueda comprar la licencia de los packers que uso en el curso y no aparezcan mas carteles como este ;)

En serio: si este cartel os aparece antes de pulsar F9, o sea mientras est�is en el proceso de pasar las excepciones con shift + F9 deber�is reiniciar el an�lisis del crackme

Por supuesto este cartel no os saldr� si lo que intent�is es estudiar un programa comercial empacado con ASProtect.

Aceptamos y Olly para aqu�: 401224 este es el OEP,vemos que coincide con el que nos dio Peid y adem�s si miramos unas l�neas mas arriba tiene toda la pinta de ser el OEP de un programa escrito en Visual Basic

Volcaremos desde aqu� con el plugin IsDebuggerPresent - Dumper

��������������������������������������������������� �����������������������������������������������������������������������������������������������������������������Ponemos los datos que hallamos con PE_editor en Offset la Image base y en Size escribimos Size of Image

Acordaros de darle el nombre y la extensi�n *.exe al guardarlo.

Ahora aprovechando que estamos parados en el OEP buscaremos el principio y fin de la tabla de importaciones igual que lo hicimos en el capitulo pasado:����������������������������� desde el OEP poco a poco con F7 hasta llegar a la primera instrucci�n tipo FF25 XXXXXXXX JMP DWORD PTR DS:[XXXXXX]

Esta vez la encontramos en la direcci�n40121C justo encima del OEP

Y hacemos el seguimiento en el dump: Follow in dump - Memory address.

En esa direcci�n hacemos control + Rsobre sus 4 bytes y nos aseguramos (somos novatos y no conviene darlo todo por hecho) que estamos dentro de la tabla de importaci�n pues vemos una instrucci�n tipo JMP DWORD PTR DS: [xxxxxx]

Busco el final de la tabla examinado las direcciones partiendo desde 40109C hacia abajo con control + R para ir buscando las referencias y creo encontrar el final en la direcci�n 4010C8

Para asegurarme sombreo de un golpe un pu�ado de direcciones a partir de la que yo pienso que es el final hacia abajo y pulso control + Ry compruebo que acert�, no se ve ninguna referencia a ning�n salto tipoJMP DWORD PTR DS: [xxxxxx] a partir de esta direcci�n

 

Ahora buscare el principio partiendo desde la direcci�n 40109C hacia arriba y llego hasta 401000, el �tope� del dump, pulso control + R y como pod�is ver en la imagen encuentrouna referencia tipo JMP DWORD PTR DS: [xxxxxx]

En este caso JMP DWORD PTR DS: [ModuleEntryPoint] que es la direcci�n 401000 pues lo vemos claramente en el dump, no podemos �subir� mas de esa direcci�n as� que ese ser� el principio de la import table

Por tanto ya tenemos el principio y fin de la tabla localizado: principio = 401000 final 4010C8

 

Realmente buscar el principio y final de la tabla es sencillo, solo hay que tener un poco de paciencia para buscarlo y hacerlo con cuidado y fij�ndonos bien, cuando tengamos practica nos iremos orientando al ver bloques en el que un cierto numero se repite constantemente o alguna otra pista,pero eso son cosas que iremos cogiendo con la practica, de momento es mejor buscar tranquilamentemirando bien lo que hacemos.

 

Calculamos la longitud de la tabla:

Final de tabla menos principio de tabla mas 4 = 4010C8401000 + 4 = CCesta es la Size de la tabla.

 

Antes de pasar a reconstruir la IAT debemos fijar el exe que volcamos.

Abrimos PE_editor y cargamos nuestro crackme volcado (lo llam� 00dumpy.exe) y pulsamos sections y sobre una de las l�neas click derecho dumpfixer (RS=VS & RO=VO)

Bien ya tenemos el �00dumpy� preparado as� que vamos a empezar a reconstruir la IAT,recordemos: este capitulo hasta aqu� ha sido pr�cticamente igual a los pasos que dimos en el cap anterior salvo el modo de encontrar el OEP:

lo hemos hecho por el m�todo de las excepciones el cual creo que es bastante sencillo: solo hace falta saber contar hasta llegar a la pen�ltima excepci�n (pues la ultima ser� la que da paso al programa) e ir pas�ndolas con shift + F9 (en este caso hasta llegar a la que hace el numero 15), pasarla con shift + F7, poner el BP Memory on access en la secci�n code del crackme pulsar F9 y ya estamos sobre el OEP, no es muy dif�cil, la �nica pega que nos puede surgir es el cartel de versi�n trial mientras pasamos las excepciones, pero reiniciamos el an�lisis y resuelto.

Ejecutamos el crackme protegido (dobleceroasprotect.exe), como lo empaquete con un ASProtect trial os aparece otra vez el cartelito que lo indica, lo acept�is y ya esta el crackme ejecut�ndose a su bola, luego abrimos Import Rec.y atacamos el exe que se esta ejecutando.

Introducimos los datos que nos pide

OEP = 401224 � 400000 (Image base) = 1224 o si prefer�s elimin�is el primer numero: 401224 o lo que es lo mismo escribir los 5 �ltimos 01224

RVA = 401000 � 400000 (Image base) = 1000 o si prefer�s elimin�is el primer numero: 401000 o lo que es lo mismo escribir los 5 �ltimos 01000

Size = 4010C8 (fin de IAT) � 401000 (principio de IAT) + 4 = CC

Pulsamos get imports y aqu� empiezan nuestros problemas: valid NO

Esto quiere decir que la tabla de importaci�n esta j#did@ esto es por que ASProtect trastoca la tabla y hace variaciones para poner el crackeo/desempacado mas dif�cil.

Miro por si acaso estuviera mal el principio y fin de la IAT, por si fuera error m�o pues soy muy novato en esto pero veo que esta todo bien

Principio -> ��fin ->��

 

Si miramos el log de Import vemos que nos dice que hay 45 unresolved, con esto nos dice que hay 45 direcciones de la tabla que tendremos que buscarnos la vida para arreglarlas

 

Pulso y me aparecen las 45 direcciones �noresueltas� sombreadas.

Para arreglar este tema deber�amos ir mirando una a una todas las direcciones mala fij�ndonos en su RVA y arregl�ndolas pero esto es un c#�@z#, pensad que este es un crackme/programa peque�o, en un exe mayor habr�incluso mas de cien direcciones por arreglar y ser� odioso arreglarlas una a una.

Intentobuscarme la vida de la manera mas f�cil posible: pulso a ver que pasa y �

... parece que me lo arregl� autom�ticamente: valid YES.

Pruebo a fijar el exe volcado con�� y despu�s lo pruebo y veo que funciona.

Ya tenemos el crackme desempaquetado y listo para analizar, si lo cargamos en Olly veremos las APIs y las (pocas) strings del crackme claramente.

Este crackme dio bastante trabajo a los chicos del foro de HxC a la hora de hallar el serial.

El tema este de AutoTrace a veces no funciona y abr que emplear otro m�todo manual que veremos mas adelante en otro capitulo.

 

M�todo autom�tico o del monje durmiente:

Pillamos Stripper 2.07 y cargamos el crackme empaquetado con ASProtect

Pulsamos unpacking y � � otra vez el put# cartelito trial versi�n, lo aceptamos y vemos el log de Stripper que nos cuenta como en 3 segundos volc� el crackme fijo la tabla y guardo el crackme desempacado con �xito.

 

Existe otro programa para la reconstrucci�n de la IAT que se llama Revirgin, yo no lo trato aqu� pues este programa me da problemas en XP pero pod�is ver su funcionamiento en los tutoriales de Ricardo Narvaja.

Tambi�n existe un plugin para Olly llamado ASProtect 1.2x que debe facilitar bastante el trabajo, no puedo usarlo -y por tanto tampoco explicarlo-pues tambi�n me produce error y me cierra Olly en cuanto intento hacer algo con el.

Aprovecho esta ocasi�n para agradecer a los creadores de este tipo de programas (ya sean desempacadores, debuggers, editores de recursos, editores PE�) su trabajo para facilitarnos este tema del crackeo, os imagin�is hacer esto sin contar con alguna de estas herramientas �? Buff!!!

 

Si teneis alguna duda buscadme por la red.

Nos vemos.

 

Capitulo siguiente

                                                                                                 


Abril 2004

Pagina oficial del curso

 

Gracias a ...