|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
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.
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 Primero lo haremos contando las
veces que tenemos que pulsar shift + F9 en este caso son 16,
cuando pulso shift + F9� 16 veces el
cartelito� 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�: Pulsamos� View�
� 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
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�n� 40121C justo
encima del OEP Y hacemos el seguimiento en el
dump: Follow in dump - Memory address.
En esa direcci�n hacemos control
+ R� sobre 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 + R� y
compruebo que acert�, no se ve ninguna referencia a ning�n salto tipo� JMP 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
encuentro� una 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 tranquilamente� mirando
bien lo que hacemos. Calculamos la longitud de la
tabla: Final de tabla menos principio de
tabla mas 4 = 4010C8 � 401000 + 4 = CC� esta 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 -> 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 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. Intento� buscarme la vida de la manera mas f�cil
posible: pulso
Pruebo a fijar el exe volcado con�� 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. |
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
|