Está en la página 1de 4

MAKKAKKO LECCIONES DE CRACKING

By Makkakko

TUTORIAL 05: COMO CRACKEAR EL ARCHIVO “ZEBRONE” v1.1


Poco a poco vamos aprendiendo a crackear programas. Suiguiendo
nuestro camino, nos centraremos hoy en el análisis del archivo “Zebrone
v1.1”. Este archivo ha sido creado para que los newbies podamos prácticar y
avanzar en nuestro conocimiento de la “ingeniería inversa”. Así que sin más
preambulos, pongamonos a trabajar.

1.- OBJETIVO

Programa: Zebrone v1.1


Compañía/Autor: aLoNg3x
Protección: Serial
Nivel de Dificultad: Nivel 1
URL descarga: http://www.nnsoluciones.com

2.- NUESTRA TÁCTICA

Seguiremos las pautas que hemos utilizado en las lecciones


anteriores:

 Examinaremos las STRING REFERENCES con el W32Dasm y con el OllyDBG.

 Encontrado el mensaje “Sorry...The Serial isn´t correct”, que aparece al


introducir un número 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 número, el programa funciona.

3.- HERRAMIENTAS

W32Dasm v8.93
OllyDbg 1.07 http://home.t-online.de/home/Ollydbg/odbg107a.zip
UltraEdit 32 v9.00c (Editor Hexadecimal, aunque vale cualquiera)
Un poquito de vista

4.- APRENDIENDO A SER UN MANITAS COMO MacGYVER

Empezaremos abriendo el programa ZEBRONE.EXE. Nos pide que


introduzcamos un nombre y un número de serie, así que ponemos lo primero
que se nos ocurra. Pulsamos REGISTER y aparece el mensaje “Sorry...The
Serial isn´t correct”. El mensaje nos da una pista para poder crackear el
programa.

Abrimos el programa OllyDBG, vamos a FILE – OPEN y seleccionamos el


programa “ZEBRONE”. Pulsamos el BOTÓN DERECHO DEL RATÓN. Elegimos SEARCH
FOR y después ALL REFERENCED TEXT STRING. Aparecerá un cuadro en cuya parte
superior podremos leer TEXT STRINGS REFERENCED IN ZEBRONE:.TEXT. El
problema es que no aparece ningún mensaje similar al que nos aparecía en el
cuadro de dialogo.

Bueno, no pasa nada, buscaremos con el W32Dasm. Abrimos el programa


con DISSAMBLER y OPEN FILE TO DISSAMBLER. Clickeamos sobre el archivo
ejecutable ZEBRONE. Vamos al botón STRING REFERENCES (el segundo por la
derecha), y aquí sí aparece el mensaje. Pulsamos dos veces sobre él, y
subimos un poquito al origen de la orden.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:


|:004012DC (C)

Volvemos al OllyDBG. Buscaremos esta orden (004012DC) y veremos a


donde nos lleva. Pulsamos el BOTÓN DERECHO DEL RATÓN y elegimos GO TO -
EXPRESSION. Introducimos la dirección de destino: 004012DC. El OllyDBG nos
lleva a ella:

004012DC |. 74 16 JE SHORT ZEBRONE.004012F4


004012DE |. 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
004012E0 |. 68 26324000 PUSH ZEBRONE.00403226 ; |Title = "Great !!!"
004012E5 |. 68 30324000 PUSH ZEBRONE.00403230 ; |Text =
"Congratulations, you have cracked the Zebra Crackme ver 1.1"
004012EA |. FF75 08 PUSH [ARG.1] ; |hOwner
004012ED |. E8 C6010000 CALL <JMP.&USER32.MessageBoxA> ; \MessageBoxA
004012F2 |. EB 14 JMP SHORT ZEBRONE.00401308
004012F4 |> 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
004012F6 |. 68 F8314000 PUSH ZEBRONE.004031F8 ; |Title = "Hmmmm :P"
004012FB |. 68 01324000 PUSH ZEBRONE.00403201 ; |Text = "Sorry...
The Serial isn't correct :Þ"
00401300 |. FF75 08 PUSH [ARG.1] ; |hOwner
00401303 |. E8 B0010000 CALL <JMP.&USER32.MessageBoxA> ; \MessageBoxA

Una vez encontrado nuestro mensaje, nos dirigimos al inicio de la


orden, que aparece marcado con el signo “>”. Nos situamos encima de ella y
pulsamos el BOTÓN DERECHO DEL RATÓN - FIND REFERENCES TO - SELECT COMMAND.
OllyDBG nos mostrará el salto con el que está relacionado:

Address Disassembly Comment


004012DC JE SHORT ZEBRONE.004012F4
004012F4 PUSH 0 (Initial CPU selection)

Clickeamos dos veces sobre 004012DC. Vemos que hay una orden que nos
suena: 74 (salta si es equivalente). Si lo cambiamos por 75 (si no es
equivalente), cuando nuestro número no coincida con el que el programa
utiliza, nos llevará a la zona de “CHICO BUENO”. Así que bastará cambiar el
salto condicional: 74/75. Probamos en el Olly. Pulsamos el BOTÓN DERECHO
DEL RATÓN y elegimos ASSAMBLE (tenemos que estar situados encima de la
orden que vamos a cambiar, en este caso: 004012DC |. 74 16 JE SHORT
ZEBRONE.004012F4). Si recordais con el desamblador el 74 corresponde a JE y
el 75 a JNE. En el cuadro que aparecerá en el Olly sustituimos el JE por
JNE dejando el resto de la orden igual. Vamos a probarlo. Pulsamos DEBUG -
RUN. Introducimos un nombre y un número y ... Congratulations, you have
cracked the Zebra Crackme ver. 1.1.

Como ya sabemos que funciona, haremos los cambios de modo definitivo


con el editor hexadecimal. Abrimos el ULTRAEDIT y después FILE y OPEN.
Abrimos el archivo ZEBRONE. El ULTRAEDIT nos muestra las ordenes en
hexadecimal del programa. Ahora presionamos SEARCH y después vamos a FIND.
Vamos a buscar la cadena de números hexadecimales que corresponden a
004012DC (zona de “CHICO MALO”) para convertirla en “CHICO BUENO”. Copiamos
la cadena de esa sentencia y le agregamos algunos bytes más de la
siguiente: 74 16 6A 00. Con estos serán suficientes. ULTREDIT nos muestra
en azul la cadena que hemos buscado. Nos situamos en el 74 y lo cambiamos
por 75. Después FILE y SAVE. Si ULTRAEDIT no nos deja guardar los cambios
es porque tenemos abierto el W32Dasm, el OllyDBG o el programa ZEBRONE.
Cerrádlos y guardará los cambios que hemos hecho.

Este es el modo normal de hacer los cambios con el ULTRAEDIT, aunque


también hay otra posibilidad. Una vez que hemos abierto el programa
ZEBRONE, pulsamos CTRL + G. Aparece un cuadro de dialogo con el título HEX
GOTO. Volvemos al W32Dasm y nos situamos encima de la orden que vamos a
modificar: 004012DC. En la parte inferior del cuadro vemos:

Line:452 Pg 6 of 13 Code Data @:004012DC @Offset 00006DCh in


File:Zebrone.exe

Lo que a nosotros nos interesa es el @Offset 00006DCh. Copiamos en el


cuadro HEX GOTO del ULTRAEDIT solo 6DC (la “h” no la copiamos). Pero antes,
tal y como pone en el cuadro, debemos escribir “0x”. Por lo tanto, la orden
completa sería: 0x6DC. El cursor se situa sobre el 74. Lo cambiamos por el
75 y guardamos.

Hechos los cambios vamos a comprobar de nuevo si funciona. Abrimos el


programa ZEBRONE, metemos el nombre y el número ... ¡¡FUNCIONA!!.

Para crackear este sencillo programa nos hemos valido de las pistas
que el W32Dasm y el OllyDBG nos han suministrado. Con un poquito de vista y
sabiendo el significado de las ordenes 74/75, hemos podido dar con la
solución.

5.- AGRADECIMIENTOS

 Ricardo Narvaja. No dejéis de leer su “Curso de Crackeo para newbies”.


Lo podéis encontrar en la web de Karpoff (http://karpoff.welcome.to/).

 Mr. Nobody. Tampoco os podéis perder su “Curso otoñal de crackeo”. Lo


podéis encontrar en http://decada.hypermart.net/crack/files/coctodo.zip.
Aquí encontrareis la teoría que necesitáis sobre los saltos
condicionales. Os recomiendo la “Lección 2”.

6.- DESPEDIDA

Podéis seguir intentando crackear programas en la siguiente


dirección: http://www.elitecoding.net/~lucifer48/tut-crkme.html. También
podeis encontrar programas para crackear en:
http://www.karpoff.hpg.ig.com.br/CrackMEs.htm.

Continuad crackeando y aprendiendo ...


Hasta la próxima Makkakko Lección.

Makkakko. Agosto 2.002

También podría gustarte