Está en la página 1de 5

Karpoff Spanish Tutor 1999-2002

TUTORIAL 01: COMO CRACKEAR EL ARCHIVO CRACKME2


DE CRUEHEAD

Programa:

MAKKAKKO LECCIONES DE CRACKING

By Makkakko

TUTORIAL 01: COMO CRACKEAR EL ARCHIVO CRACKME2 DE


CRUEHEAD
Este tutorial est dirigido a quienes, como yo, se inician en el
mundo del cracking o de la ingeniera inversa. Hemos escogido para ello
uno
de
los
programas
especficamente
dedicados
a
los
newbies
(principiantes), que, en este caso, consiste en crackear un programa
protegido con un nmero de serie.
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:

Buscar con el W32Dasm las STRING REFERENCES sobre el mensaje de error


que aparece al ejecutar el programa.

Buscar con GOTO CODE LOCATION el lugar en el que se encuentra la zona de


CHICO MALO, porque muy cerca debe encontrarse la zona de CICHO
BUENO.

Localizar las comparaciones y los saltos a las zonas CHICO MALO y


CHICO BUENO. Descubrir cual es cual.

Verificar el salto a la zona CHICO BUENO.

Anotar los nmeros hexadecimales que nos llevan a las dos zonas.

Modificar con el ULTRAEDIT los nmeros hexadecimales que nos lleven a


registrar el programa (sirve cualquier otro editor hexadecimal).

3.- HERRAMIENTAS
W32Dasm 8.93
UltraEdit 32 v9.00c
Un poco de vista

(Editor Hexadecimal, aunque vale cualquiera)

4.- APRENDIENDO A SER UN MANITAS COMO MacGYVER


Una vez tengamos en nuestras manos el archivo Crackme2 de Cruehead
hemos de hacer una copia del mismo. De este modo podremos tener abiertos al
mismo tiempo el W32Dasm y el UltraEdit. Tambin puede hacerse sin hacer una
copia del archivo en cuestin, pero al abrir el ULTRAEDIT deberemos cerrar
el W32Dasm. Siempre es mejor tener todos nuestros recursos a mano, para
poderlos utilizar en cualquier momento y no tener que estar abriendo y
cerrando programas.
Bueno, empecemos. El programa Crackme2 est protegido mediante un
nmero de serie. Si introducimos el nmero correcto nos registraremos,
sino, nos dir que no hemos tenido suerte. Salvo que seamos adivinos, lo
ms normal es que nos salga el segundo mensaje. Este mensaje nos ayudar a
crackearlo ...
Ejecutamos el programa. Vamos a HELP y luego a ENTER PASSWORD.
Metemos un nmero cualquiera, el que os apetezca, y luego pulsamos OK. Como
ltimamente no utilizo mi bola de cristal, el programa nos muestra una
ventanita en la que dice: NO LUCK THERE, MATE!. Este mensaje nos da una
pista de por donde podemos atacar. Conseguiremos que se vuelva contra
l ... VENGANZA!!.
Abrimos el programa Crackme2 con el W32Dasm (DISASSEMBLER OPEN FILE
TO DISASSEMBLER). Una vez abierto podemos verle las tripas al programa.
Seleccionamos el botn STRING REFERENCES (el segundo botn por la derecha)
y clickeamos dos veces sobre el mensaje NO LUCK THERE, MATE!. El W32Dasm
nos mostrar una lnea en azul:
* Possible StringData Ref from Data Obj -> No luck there, mate!
:00401357
:0040135C

6869214000
FF7508

push 00402169
push [ebp+08]

Un poquito ms arriba encontraremos la referencia que nos interesa:


(una llamada a la direccin 00401243)
* Reference by a CALL at Address:
|: 00401243
Esta orden nos est diciendo que el mensaje de NO LUCK THERE, MATE!
tiene una llamada en 00401243. Si est el salto que nos lleva a la zona de
CHICO MALO no debe de estar muy lejos el que nos lleva a la zona de
CHICO BUENO. As que vamos a por ella. Vamos a GOTO y despus a GOTO CODE

LOCATION. Tipeamos la instruccin que nos interesa, en este caso 00401243.


El W32Dasm nos muestra lo siguiente:
* Reference To: USER32.DialogBoxParamA, Ord: 0000h
:0040121E
E84D020000
Call 00401470
:00401223
83F800
cmp eax, 00000000
:00401226
74BE
je 004011E6
:00401228
687E214000
push 0040217E
:0040122D
E833010000
call 00401365
:00401232
687E214000
push 0040217E
:00401237
E87C010000
call 004013B8
:0040123C
83C404
add esp, 00000004
:0040123F
84C9
test cl, c1
:00401241
7407
je 0040124AA
:00401243
E801010000
call 00401349
:00401248
EB9C
jmp 004011E6
Las sentencias resaltadas en amarillo son las que nos interesan. Si
nos fijamos bien, veremos que el programa comprueba el nmero que hemos
introducido; si coincide vamos a 00401248 y si no coincide nos lleva a
401241. Es decir, 401241 es la zona de CHICO MALO, mientras que 00401248
es la zona de CHICO BUENO.
La finalidad que perseguimos es que introduciendo cualquier nmero,
vayamos siempre a la zona de CHICO BUENO. Cmo se hace eso?. Alterando
algunos bytes para caer siempre en la zona de registro.
Si volvemos a echar un vistazo a estas instrucciones vemos:
:00401241
:00401243
:00401248

7407
E801010000
EB9C

je 0040124AA
call 00401349
jmp 004011E6

Bastar cambiar el 74 por EB para que el programa funcione con


cualquier nmero de serie que introduzcamos. Para ello necesitamos utilizar
el ULTRAEDIT.
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 con el W32Dasm o lo tenemos en ejecucin.
Cerradlo y guardar los cambios que hemos hecho. Por eso os deca que era
conveniente tener una copia del programa, para usarla con el W32Dasm y que
ahora no nos diese error.
Hechos los cambios vamos a comprobar 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!. FUNCIONA!!.
Ahora que sabemos como crackear los saltos condicionales hemos de
seguir intentndolo con otros programas. A por ellos, que son pocos y
cobardes ...!!.

5.- AGRADECIMIENTOS
Como dice el refrn: Es de bien nacidos el ser agradecidos. Por eso
quiero dar las gracias a quienes con sus enseanzas han conseguido que haya
podido crackear mi primer programa:

Ricardo Narvaja. No dejis de leer su Curso de Crackeo para newbies.


Lo podis encontrar en la web de Karpoff (http://karpoff.welcome.to/). Gracias
por tu ayuda.

Mr. Nobody. Tampoco os podis perder su Curso otoal de crackeo. Lo


podis encontrar en http://decada.hypermart.net/crack/files/coctodo.zip.

6.- DESPEDIDA
Podis
seguir
intentando
crackear
programas
en
la
siguiente
direccin: http://www.elitecoding.net/~lucifer48/tut-crkme.html. Intentadlo con los programas
de nivel 1.
Bueno,
verdad?.

para

ser

mi

primer

tutorial

no

ha

salido

mal

del

todo,

Hasta el prximo tutorial.


Makkakko. Julio 2.002

ADDENDA AL TUTORIAL 01: COMO HACER UN CRACK


DISTRIBUIBLE DE CRACKME2
En este tutorial hemos aprendido a crackear el programa Crackme2 de
Cruehead. Despus de descubrir cuales son los bytes que hemos de modificar
hemos utilizado ULTRAEDIT. Sin embargo, tambin es posible crackear el
programa sin utilizar un editor hexadecimal. Utilizaremos el programa RISC
PROCESS PATCHER para crear nuestro propio crack distribuible.
Si no sabis utilizar este programa os recomiendo que os leis
previamente la Leccin 4 del Curso de crackeo para newbies de Ricardo
Narvaja (lo encontrareis en la web de Karpoff cuya direccin esta al inicio
de este tutorial). No puedo ni mejorar ni aadir nada de lo que all se
explica, as que nicamente os doy la solucin para crear el crack.
Deciros finalmente, que el RPP solo hace los cambios en memoria, por
lo que es un cargador que no cambia bytes del programa original, tal y como
haramos con cualquier editor hexadecimal. La princiapl ventaja que tiene
su utilizacin es que carga el ejecutable y espera a la descompresin del
programa, cambiando, como ya hemos dicho, solo los valores en memoria. No
os olvideis que hay que copiarlo en la misma carpeta que el archivo
ejecutable.
Las ordenes que crean el crack son:
; Crackme 2 by Cruehead
F=crackme2.exe:

; PROCESS TO PATCH

O=crackmakkakko.exe:
P=401241/74/EB:
$ ;end of script

; LOADER TO CREATE
;

Ahora que hemos hecho el crack lo podemos distribuir.


Seguid aprendiendo ...
Makkakko. Julio 2.002.
Karpoff Spanish Tutor: Pagina dedicada a la divulgacion de informacion en
Castellano, sobre Ingenieria Inversa y Programacion. Email "Colabora con
tus Proyectos"

También podría gustarte