
Artículo · Ingeniería Inversa
Introducción a la Ingeniería Inversa Capitulo III
Introducción
En este punto veremos este método de protección llamado CD-CHECK, aunque pocas veces se vè en la actualidad, ahora esta de moda las famosas llaves que tiene USB, esta técnica de validaciòn es similar a lo que explicare para que puedan tener conocimiento.
Primero usaremos RDG Packer Detector v0.7.6, para ver en que lenguaje se desarrolló y así tener idea a lo que nos estamos enfrentando, como vemos el crackmes, se llama Crackme1.exe (Es redundante, lo sé), además vemos que el crackme fue desarrollado por Microsoft Visual C++ v6.0 y no presenta seguridad.
Vamos a ejecutar el crackmes y ver que nos solicita para poder vencer este nuevo reto, asi que manos a la obra y a obtener informaciòn, al hacer clic en el boton Check for CD nos lanza la ventana You lost (Estas perdidos), no se sientan triste lo vamos a derrotar, ya obtenido los datos vayamos a Ollydbg y lo depuramos.
Lo primero que realizara como todo curioso es buscar el string YOU LOST en la tabla de referenced y si lo vemos y luego realizara doble clic en el string, para aparecer en el desensamblador.
Con la experiencia que tienes, podrian deducir que eso dos saltos, determina si nos aparecera el “BAD BOY” o “GOOD BOY”, para eso agregamos dos breakpoint en la dirección 0040138C y 0040139C.
Vayamos a ver donde nos lleva cada salto, primero de la dirección 0040138C, selecionamos dicha dirección y luego presionamos Enter, nos muestra je crackme1.00401485, si nos percatamos en la direccion 00401485 vemos que inicia el “GOOD BOY”, asi que este puede ser una mejor opción para agregar nuestro BreakPoint, si nos vamos al segundo salto, no veremos ninguna pista de nuestro “GOOD BOY”.
Asi que agregamos un BreakPoint en la dirección 0040138C, luego presionar “F9”, y clic en Check CD, de lo cual se detendra y vemos que no saltara, lo que debemos hacer es activar el flag Z=1, para poder saltar y asi aparezca el “GOOD BOY”.
Recuerda realizando doble clic en el flag Z, se activara y el salto se realizara, finalmente presionamos “F9”, y veremos si miento o no?
Nos aparece el “GOOD BOY”, a buena hora, si desea parchamos el salto y lo guardamos
0040138C – JE crackme1.00401485 cambiar a -> JNE crackme1.00401485.
Este mètodo es muy conocido, supongamos que no encontramos el string, para ellos se realizar otro mètodo de busqueda, asi que atento.
Busquemos las APIS para ellos vamos hacer clic derecho en el area desensamblador -> Search For -> Name (label) in current module (Ctrl + N), en esta lista veremos las APIS del crackme que utiliza, como el del sistema, en este caso buscaremos el API llamado GetDriveTypeA.
Al encontrar el API lo seleccionamos y clic derecho -> Set breakpoint on every reference, luego vamos a ejecutar, presionar “F9” y clic en Check CD.
Se detuvo en la dirección 00401349, si nos ponemos analizar todo lo que esta en el cuadro amarillo, es la busqueda de la unidad de lectora de tu equipo, busca la unidad D,E,F,G,H,I, e intenta buscar el archivo CD_CHECK.DAT, despues del cuadro amarillo vemos nuestro salto en la dirección 0040138C, donde decide si vamos a la zona BAD BOY o GOOD BOY, vamos analizar de abajo hacia arriba.
Como veremos en la dirección 00401384 se encuentra un CALL, de lo cual vemos un método diferente, para poder llegar al GOOD BOY, como se analizo anteriormente el salto JE debe activarse, para ello depende de la comparación CMP BYTE PTR SS:[EBP-0XD], BL, finalmente ya saben que se debe realizar cambiar el salto JE por JNE.
Guardamos los cambios generados y lo ejecutamos.
¿Quieres aprender estas técnicas en profundidad?
Continúa tu ruta con Pentesting .

Escrito por
Rafael PeruCrackersEstudiante de la ingenieria Inversa usando las herramientas de Ollydbg y el actual IDA PRO, actualmente me encuentro investigando sobre Creacion de Exploit, con animo de ayudar a las personas que les interesa el mundo del reversing, :)


