Cracking Con Ollydbg 1

April 20, 2017 | Author: Leonardo Muga Lopez | Category: N/A
Share Embed Donate


Short Description

Download Cracking Con Ollydbg 1...

Description

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 “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: Compañía/Autor: Protección: Nivel de Dificultad: URL descarga:

Crackme2 (v2.0) Cruehead Serial Nivel 1 (para newbies que comienzan) http://karpoff.welcome.to/ (Lo podéis descargar en la Lección Ricardo Narvaja)

0

a

20

de

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 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. 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 :0040135C

6869214000 FF7508

push 00402169 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 :00401243 :00401248

7407 E801010000 EB9C

je 0040124AA call 00401349 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, ¿verdad?.

para

ser

mi

primer

tutorial

no

ha

salido

mal

del

todo,

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: 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"

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF