Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: .:UND3R:. en 1 Septiembre 2011, 09:54 am



Título: [Tutorial]Crack Me 0.2 by Red Mx-Simple packer MEW 1.2
Publicado por: .:UND3R:. en 1 Septiembre 2011, 09:54 am
Crack Me 0.2 by Red Mx
Autor: Red Mx
Nombre: Crack Me 0.2
Fecha: 26 de mayo de 2009
Tamaño: 8,44 KB
Compilador y/o Packer: MEW 1.2 / Visual Basic (código nativo)
Objetivos: Conseguir la clave correcta.
Dificultad: 1-2 (1-10).

Realizamos un análisis con RDG Packer Detector:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/1.jpg)

Notamos que está comprimido con MEW 1.2 intentemos descomprimirlo abramos el crackme con OllyDBG, Nos avisa que está comprimido:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/2.jpg)

Intentemos buscar el OEP con el método de memory breakpoint on execution, esto se puede hacer a través de de un pluguin o ollydbg parcheado 5:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/3.jpg)

Presionamos M y colocamos un Memory breakpoint on access en la sección CODE
*En realidad es un MBPX por el pluguin:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/4.jpg)

Le damos RUN, esperamos un poco y se detiene en 00401210:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/5.jpg)

removamos el análisis del código y nos quedará:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/6.jpg)

Dumpeamos con ollydump:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/7.jpg)

Vamos a reparar la IAT, Nos vamos search->all intermodular call's y buscamos una que apunte a la IAT, en este caso rtcMsgBox:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/8.jpg)

Le damos doble click y nos aparecerá lo siguiente:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/9.jpg)

ahora Follow in dump->Memory Address y buscamos el Inicio y el final en la IAT en este caso:
Inicio:00401000
Final:004010C0
Largo:C0

colocamos los datos en ImportREC:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/10.jpg)

No hay ninguna IAT redireccionada :
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/11.jpg)

presionamos fix dump, seleccionamos el archivo dumpeado previamente por Ollydump, intentemos ver si se ha desempaquetado correctamente:

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/12.jpg)

Funciona de maravilla, ahora intentemos colocar un serial:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/13.jpg)

Antes de presionar OK nos dirigimos a la sección code y colocamos un Memory Break point on execution (Con el pluguins), ahora le damos OK y se detendrá a continuación:

004025C0   .  816C24 04 3B0>SUB DWORD PTR SS:[ESP+4],3B
004025C8   .  E9 A3050000   JMP dmp_.00402B70

Si seguimos traceando llegaremos hasta el siguiente OP code:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/14.jpg)

en el cual deberemos cambiar el FLAG S para que salte, debido a que notoriamente se puede visualizar una string que no es conveniente pushear

Si seguimos traceando una vez modificado el flag s llegaremos a un call encargado de devolver la fecha:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/15.jpg)
en mi caso 01/09/2011, luego de esto elimina los /:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/16.jpg)

si seguimos traceando pasando por la concatenación de dos series de string muy llamativas y un conjunto de otras operaciones llegaremos a la siguiente call:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/17.jpg)

si entramos con F7 a la call llegaremos a la siguiente call encargado de revertir la string:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/18.jpg)

Luego de seguir traceando llegaremos a una comparación a través de __vbaVarTstEq:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/19.jpg)

Entremos a la call con F7 llegando hasta el push 0, una vez detenidos ahí hacemos click derecho en EAX y presionamos follow in stack y veremos lo siguiente:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/20.jpg)

esto es comparado con edx (follow in stack) en mi caso UND3R es decir compara:
5642345645648784564156116456456110290104164214614321777407216721791241671010

con

UND3R

__vbaVarTstEq devuelve en EAX un número distinto de 0 si las dos string comparadas son iguales, notaremos que el resultado se dirige a ESI y luego se realiza un TEST SI,SI luego la comparación final JE SHORT en la cual si __vbaVarTstEq devuelve 0 en EAX JE saltará
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/21.jpg)

Probemos con la string comparada:

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe%20by%20Red%20Mx/22.jpg)

pero, ¿para qué el crackme obtuvo la fecha?

Recordamos que la fecha en mi caso era: 01/09/2011, luego se eliminaron los /
01092011 luego se concatenó con las string llamativas y luego se revirtió la string:
 
5642345645648784564156116456456110290104164214614321777407216721791241671010

por lo cual lo que está con rojo debería ser la variable del serial del crackme


Título: Re: [Tutorial]Crack Me 0.2 by Red Mx-Simple packer MEW 1.2
Publicado por: Tinkipinki en 1 Septiembre 2011, 11:19 am
Hola .:UND3R:.

Comentarte que he visto el post y juro que no he mirado nada para asi poder probar el crackme y6 cuando me vaya quedando atascado irlo leyendo poco a poco para intentar comprender todo lo que explicas.

Felicitaciones por el tutorial.. ;-)

Saludos

Psdta:
Para a quien le interese, al no tener el crackme lo he buscado y lo he encontrado aqui:
http://foro.elhacker.net/ingenieria_inversa/crack_me_02_by_red_mx-t256104.0.html (http://foro.elhacker.net/ingenieria_inversa/crack_me_02_by_red_mx-t256104.0.html)


Título: Re: [Tutorial]Crack Me 0.2 by Red Mx-Simple packer MEW 1.2
Publicado por: .:UND3R:. en 1 Septiembre 2011, 11:47 am
Hola .:UND3R:.

Comentarte que he visto el post y juro que no he mirado nada para asi poder probar el crackme y6 cuando me vaya quedando atascado irlo leyendo poco a poco para intentar comprender todo lo que explicas.

Felicitaciones por el tutorial.. ;-)

Saludos

Psdta:
Para a quien le interese, al no tener el crackme lo he buscado y lo he encontrado aqui:
http://foro.elhacker.net/ingenieria_inversa/crack_me_02_by_red_mx-t256104.0.html (http://foro.elhacker.net/ingenieria_inversa/crack_me_02_by_red_mx-t256104.0.html)

Muchas gracias, que bueno que te haya gustado

Los crackmes están todos disponibles para descargar desde la web de karmany:

Citar
Si el enlace a cualquier crackme falla, pueden utilizar la siguiente página para descargarlos:
http://karmany.fortunecity.com/ (http://karmany.fortunecity.com/)

Saludos y suerte con el crackme