Anda di halaman 1dari 4

MAKKAKKO LECCIONES DE CRACKING

By Makkakko

TUTORIAL 02: COMO CRACKEAR EL ARCHIVO CRACKME2 DE CRUEHEAD CON OLLYDBG


Superados los miedos iniciales al arte de crackear, en esta segunda leccin nos adentraremos en el uso del programa OllyDbg. Como su propio nombre indica es un debbuger, y lo utilizaremos de un modo similar al famoso SoftIce. Este tutorial toma como base el redactado por Ricardo Narvaja TEORA DEL CONCURSO 10: CRACKEANDO CON OLLYDBG, aunque, en este caso, utilizaremos el programa CRACKME2 de Cruehead. 1.- OBJETIVO Programa: Compaa/Autor: Proteccin: Nivel de Dificultad: URL descarga: Crackme2 (v2.0) Cruehead Serial Nivel 1 (para newbies que comienzan) http://karpoff.welcome.to/ (Lo podis descargar en la Leccin Ricardo Narvaja)

20

de

2.- NUESTRA TCTICA Intentaremos buscar como alterar el salto condicional que nos lleva de la zona CHICO MALO a la de CHICO BUENO. Los pasos que seguiremos sern los siguientes: Examinaremos las STRING REFERENCES con el OllyDBG. Encontrado el mensaje No luck there, mate!, que aparece al introducir un nmero de serie, buscaremos su origen. Iremos al lugar de origen de la zona CHICO MALO para encontrar el origen de CHICO BUENO. Examinaremos la cadena que nos muestra ambas instrucciones. Modificaremos el salto condicional. Verificaremos que introduciendo cualquier nmero, el programa funciona.

3.- HERRAMIENTAS OllyDbg v1.06 o 1.07 UltraEdit 32 v9.00c Un poco de vista http://home.t-online.de/home/Ollydbg/odbg107a.zip (Editor Hexadecimal, aunque vale cualquiera)

4.- APRENDIENDO A SER UN MANITAS COMO MacGYVER Antes de comenzar, quiero deciros que las Makkakko lecciones de cracking solo pretenden ser un complemento de los cursillos que sobre cracking existen en Internet. No puedo dar lecciones de ingeniera inversa, solo pretendo explicar del modo ms claro posible, los escasos conocimientos que tengo sobre este tema y de como los aplico a los programas. Estas Makkakko lecciones ... son eminentemente prcticas. La teora que he utilizado la encontrareis en los Tutoriales de Ricardo Narvaja y de Mr. Nobody (ver la seccin de agradecimientos). Bueno, vamos a lo que nos interesa. Abrimos el programa OllyDBG, vamos a FILE OPEN y seleccionamos el programa CRACKME2. En la pantalla empezaran a aparecer nmeros similares a los que en su momento vimos con el W32Dasm. La pantalla aparece dividida en cuatro secciones. Nosotros nos centraremos sobre todo en la primera de ellas. El modo de crackear el programa es muy similar al W32Dasm. La diferencia es que si en este veamos el listado muerto del programa, con el OllyDBG vemos el listado, pero en tiempo real. Pulsando el botn derecho del ratn aparecern varias opciones. Elegimos SEARCH FOR y despus ALL REFERENCED TEXT SRTING. Aparecer un cuadro en cuya parte superior podremos leer TEXT STRINGS REFERENCED IN CRACKME2:CODE. All encontramos el texto utilizado en las STRING REFERENCES del W32Dasm. Ejecutamos el CRACKME2 y al introducir un nmero de serie cualquiera aparece el famoso mensaje NO LUCK THERE, MATE! (os resulta familiar?). Volvemos al cuadro de las STRING REFERENCED y clickeamos dos veces sobre el famoso mensaje. El OllyDBG nos lleva a la instruccin 00401357. 00401349 /$ 6A 00 PUSH 0 ; /BeepType = MB_OK 0040134B |. E8 96000000 CALL <JMP.&USER32.MessageBeep> ; \MessageBeep 00401350 |. 6A 30 PUSH 30 ; /Style = MB_OK| MB_ICONEXCLAMATION|MB_APPLMODAL 00401352 |. 68 60214000 PUSH CRACKME2.00402160 ; |Title = "No luck!" 00401357 |. 68 69214000 PUSH CRACKME2.00402169 ; |Text = "No luck there, mate!" 0040135C |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hOwner 0040135F |. E8 A6000000 CALL <JMP.&USER32.MessageBoxA> ; \MessageBoxA 00401364 \. C3 RETN

Esta instruccin est dentro de un corchete. Vamos a ir a la primera lnea del corchete, la instruccin 00401349. Clickeamos sobre ella, hasta que quede resaltada. Volvemos a pulsar el botn derecho del ratn y seleccionamos FIND REFERENCES TO SELECTED COMMAND. Aparecer otro cuadro con el ttulo REFERENCES IN CRACKME2:CODE TO 00401349. All encontramos: Address 00401243 00401349 Disassembly CALL CRACKME2.00401349 PUSH 0 Comment (Initial CPU selection)

La instruccin que nos interesa es la primera de ellas. Vemos que hay una llamada desde 00401243 a 00401349, que es la zona de CHICO MALO. Si

vamos a 00401243 encontraremos condicional que nos interesa.

la

zona

de

CHICO

BUENO

el

salto

Clickeamos dos veces sobre 00401243 y en el cuadro principal aparecer la orden que estamos buscando. Subiendo un poco la pestaa encontramos: 00401241 00401243 00401248 0040124A 0040124F . 74 . E8 .^EB > E8 .^EB 07 01010000 9C E5000000 95 JE SHORT CRACKME2.0040124A CALL CRACKME2.00401349 JMP SHORT CRACKME2.004011E6 CALL CRACKME2.00401334 JMP SHORT CRACKME2.004011E6

Ya estamos donde queramos. La orden 00401241 es la que compara el valor que hemos introducido al principio con el que el autor considera como nmero de serie valido para registrarnos. Si no coinciden pasa a la siguiente orden 00401243, y caemos en CHICO MALO. Por tanto, nos interesa que cuando el programa llegue a la instruccin 00401241 siempre salte, sea cual sea el nmero que pongamos. Cmo lo hacemos?. La solucin es la misma que vimos en el TUTORIAL 01 DE LAS MAKKAKKO LECCIONES DE CRACKING. Hemos de sustituir el salto condicional por un salto fijo. Para ello modificaremos la cadena de bytes. En este caso, cambiaremos el 74 por EB (74 corresponde con JE y EB con JMP).. Nos situamos sobre 00401241: 00401241 . 74 07 JE SHORT CRACKME2.0040124A

Pulsamos el botn derecho del ratn y escogemos la funcin ASSEMBLE. Aparecer un cuadro pequeo con le ttulo ASSEMBLE AT 00401241. Esta funcin nos servir para hacer los cambios en memoria y verificar si funciona. Escribimos en el cuadro lo siguiente: JMP 0040124AA Pulsamos el botn ASSEMBLE y ya tenemos hechos los cambios. Despus cancelamos. Vemos que ahora la orden queda as: 00401241 EB 07 JMP SHORT CRACKME2.0040124A

Los bytes que hemos cambiado aparecen ahora en rojo. No podemos olvidar que estos cambios solo estn en memoria, por lo que si no los cambiamos con el editor hexadecimal, solo funcionaran hasta que apaguemos el ordenador. Vamos a comprobar si hemos crackeado bien el programa. Pulsaremos DEBUG y despus RUN. Aparece la el programa CRACKME2. Vamos a HELP ENTER PASSWORD e introducimos el mismo nmero que antes y ... GREAT WORK, MATE!. NOW TRY THE NEXT CRACKME!. FUNCIONA!!. Una vez que hemos comprobado que funciona, haremos de modo definitivo los cambios con el editor hexadecimal. Abrimos el ULTRAEDIT y despus FILE y OPEN. Abrimos el archivo CRACKME2. El ULTRAEDIT nos muestra las ordenes en hexadecimal del programa. Ahora presionamos SEARCH y despus vamos a FIND. Vamos a buscar la cadena de nmeros hexadecimales que corresponden a 00401241 (zona de CHICO MALO) para convertirla en CHICO BUENO. Copiamos la cadena de esa sentencia y le agregamos algunos bytes ms de la

siguiente: 74 07 E8 01 01. Con estos sern suficientes. ULTREDIT nos muestra en azul la cadena que hemos buscado. Nos situamos en el 74 y lo cambiamos por EB. Despus FILE y SAVE. Si ULTRAEDIT no nos deja guardar los cambios es porque o tenemos abierto el programa CRACKME2. Cerrdlo y guardar los cambios que hemos hecho. Hechos los cambios vamos a comprobar de nuevo si funciona. Abrimos el programa CRACKME2 y vamos a HELP ENTER PASSWORD. Introducimos un nmero cualquiera y ... GREAT WORK, MATE!. NOW TRY THE NEXT CRACKME!. Como hemos visto, el proceso ha sido muy similar al que utilizamos con el W32Dasm. 5.- AGRADECIMIENTOS Ricardo Narvaja. No dejis de leer su Curso de Crackeo para newbies. Lo podis encontrar en la web de Karpoff (http://karpoff.welcome.to/). En este caso, Teora del Concurso 10: crackeando con OllyDbg. Mr. Nobody. Tampoco os podis perder su Curso otoal de crackeo. Lo podis encontrar en http://decada.hypermart.net/crack/files/coctodo.zip. Aqu encontrareis la teora que necesitis sobre los saltos condicionales.

6.- DESPEDIDA Podis seguir intentando crackear programas en la siguiente direccin: http://www.elitecoding.net/~lucifer48/tut-crkme.html. Aunque la cosa se ha complicado un poquito ms, no ha sido tan difcil, as que continuad crackeando y aprendiendo ... Hasta la prxima Makkakko Leccin.

Makkakko. Julio 2.002