Está en la página 1de 5

Karpoff Spanish Tutor 1999-2002

Programa: TUTORIAL 01: COMO CRACKEAR EL ARCHIVO “CRACKME2”


DE CRUEHEAD

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 “ingeniería inversa”. Hemos escogido para ello
uno de los programas específicamente dedicados a los newbies
(principiantes), que, en este caso, consiste en crackear un programa
protegido con un número de serie.

1.- OBJETIVO

Programa: Crackme2 (v2.0)


Compañía/Autor: Cruehead
Protección: Serial
Nivel de Dificultad: Nivel 1 (para newbies que comienzan)
URL descarga: http://karpoff.welcome.to/
(Lo podéis descargar en la Lección 0 a 20 de
Ricardo Narvaja)

2.- NUESTRA TÁCTICA

Intentaremos buscar como alterar el salto condicional que nos lleva


de la zona “CHICO MALO” a la de “CHICO BUENO”. Los pasos que seguiremos
serán 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 números hexadecimales que nos llevan a las dos zonas.

 Modificar con el ULTRAEDIT los números hexadecimales que nos lleven a


registrar el programa (sirve cualquier otro editor hexadecimal).

3.- HERRAMIENTAS

W32Dasm 8.93
UltraEdit 32 v9.00c (Editor Hexadecimal, aunque vale cualquiera)
Un poco de vista

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. También puede hacerse sin hacer una
copia del archivo en cuestión, 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


número de serie. Si introducimos el número correcto nos registraremos,
sino, nos dirá que no hemos tenido suerte. Salvo que seamos adivinos, lo
más 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 número 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 botón STRING REFERENCES (el segundo botón por la derecha)
y clickeamos dos veces sobre el mensaje “NO LUCK THERE, MATE!”. El W32Dasm
nos mostrará una línea en azul:

* Possible StringData Ref from Data Obj -> ”No luck there, mate!”

:00401357 6869214000 push 00402169


:0040135C FF7508 push [ebp+08]

Un poquito más arriba encontraremos la referencia que nos interesa:


(una llamada a la dirección 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 después a GOTO CODE
LOCATION. Tipeamos la instrucción 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 número 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 número,


vayamos siempre a la zona de “CHICO BUENO”. ¿Cómo 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 7407 je 0040124AA


:00401243 E801010000 call 00401349
:00401248 EB9C jmp 004011E6

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


cualquier número de serie que introduzcamos. Para ello necesitamos utilizar
el ULTRAEDIT.

Abrimos el ULTRAEDIT y después FILE y OPEN. Abrimos el archivo


CRACKME2. 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 00401241 (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 07 E8 01 01.
Con estos serán suficientes. ULTREDIT nos muestra en azul la cadena que
hemos buscado. Nos situamos en el 74 y lo cambiamos por EB. Después 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 ejecución.
Cerradlo y guardará los cambios que hemos hecho. Por eso os decía 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 número cualquiera
y ... GREAT WORK, MATE!. NOW TRY THE NEXT CRACKME!. ¡¡FUNCIONA!!.

Ahora que sabemos como crackear los saltos condicionales hemos de


seguir intentándolo con otros programas. ¡¡A por ellos, que son pocos y
cobardes ...!!.
5.- AGRADECIMIENTOS

Como dice el refrán: “Es de bien nacidos el ser agradecidos”. Por eso
quiero dar las gracias a quienes con sus enseñanzas han conseguido que haya
podido crackear mi primer programa:

 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/). Gracias
por tu ayuda.

 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.

6.- DESPEDIDA

Podéis seguir intentando crackear programas en la siguiente


dirección: http://www.elitecoding.net/~lucifer48/tut-crkme.html. Intentadlo con los programas
de nivel 1.

Bueno, para ser mi primer tutorial no ha salido mal del todo,


¿verdad?.

Hasta el próximo 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. Después de descubrir cuales son los bytes que hemos de modificar
hemos utilizado ULTRAEDIT. Sin embargo, también es posible crackear el
programa sin utilizar un editor hexadecimal. Utilizaremos el programa RISC
PROCESS PATCHER para crear nuestro propio crack distribuible.

Si no sabéis utilizar este programa os recomiendo que os leáis


previamente la Lección 4 del “Curso de crackeo para newbies” de Ricardo
Narvaja (lo encontrareis en la web de Karpoff cuya dirección esta al inicio
de este tutorial). No puedo ni mejorar ni añadir nada de lo que allí se
explica, así que únicamente os doy la solución 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
haríamos con cualquier editor hexadecimal. La princiapl ventaja que tiene
su utilización es que carga el ejecutable y espera a la descompresión 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: ; LOADER TO CREATE
P=401241/74/EB: ;
$ ;end of script

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