Vous êtes sur la page 1sur 7

MAKKAKKO LECCIONES DE CRACKING

By Makkakko

TUTORIAL 03: COMO CRACKEAR EL ARCHIVO VCCRACKME v1.0 CODED DE ETERNAL BLISS
En la Makkakko Leccin de hoy utilizaremos una herramienta que no habamos utilizado antes: nuestra intuicin. Aunque parezca algo poco relevante, puede ayudarnos mucho a crackear determinados programas, sobre todo cuando nos encontramos con algunas instrucciones y no sabemos exactamente que tenemos que hacer. 1.- OBJETIVO Programa: Compaa/Autor: Proteccin: Nivel de Dificultad: URL descarga: VCCrackme (v1.0) Eternal Bliss Serial Nivel 1 (para newbies que comienzan) http://www.elitecoding.net/~lucifer48/tutcrkme.html

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 Wrong!. Try Again, 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 Intuicin http://home.t-online.de/home/Ollydbg/odbg107a.zip (Editor Hexadecimal, aunque vale cualquiera)

4.- APRENDIENDO A SER UN MANITAS COMO MacGYVER Al igual que hicimos en la leccin anterior, nos serviremos de OllyDBG para crackear el programa propuesto. Abrimos el programa OllyDBG, vamos a FILE OPEN y seleccionamos el programa VCCRACKME. Pulsamos el botn derecho del ratn. Elegimos SEARCH FOR y despus ALL REFERENCED TEXT STRING. Aparecer un cuadro en cuya parte superior podremos leer TEXT STRINGS REFERENCED IN VCCRACKM:.TEXT. Ejecutamos el VCCRACKME y al introducir un nmero de serie cualquiera aparece el famoso mensaje WRONG!. TRY AGAIN. Volvemos al cuadro de las STRING REFERENCED y clickeamos dos veces sobre el mensaje que nos ha aparecido al ejecutar el programa. El OllyDBG nos lleva a la instruccin 00401543. 0040153B 0040153E 0040153F 00401540 00401543 00401548 0040154D 00401552 00401555 0040155C 00401561 |. |. |. |. |. |. |. |. |. |. |. 894D F0 53 56 8D4D E0 68 58304000 MOV DWORD PTR SS:[EBP-10],ECX PUSH EBX PUSH ESI LEA ECX,DWORD PTR SS:[EBP-20] PUSH VCCRACKM.00403058 ; ASCII "Wrong! Try Again" E8 79030000 CALL <JMP.&MFC40.#483> 68 50304000 PUSH VCCRACKM.00403050 ; ASCII "Error" 8D4D EC LEA ECX,DWORD PTR SS:[EBP-14] C745 FC 000000> MOV DWORD PTR SS:[EBP-4],0 E8 65030000 CALL <JMP.&MFC40.#483> 68 44304000 PUSH VCCRACKM.00403044 ; ASCII "Correct..."

Esta instruccin est dentro de un gran corchete. Vamos a ir a la primera lnea del corchete, la instruccin 00401526. 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 VCCRACKM:TEXT TO 00401526. All encontramos: Address 00401526 Disassembly PUSH EBP Comment (Initial CPU selection)

Si volvemos a clickear sobre la misma instruccin, volvemos al lugar de origen: 00401526. Qu podemos hacer ahora?. La zona de CHICO MALO se encuentra dentro del corchete que estamos examinando, as que la zona de CHICO BUENO no puede estar muy lejos. Echamos un vistazo a todo el corchete ... Creo que he visto unas ordenes que me suenan!!. 00401526 00401527 00401529 0040152B 00401530 00401531 00401538 0040153B 0040153E 0040153F 00401540 00401543 /. |. |. |. |. |. |. |. |. |. |. |. 55 PUSH EBP 8BEC MOV EBP,ESP 6A FF PUSH -1 68 9A164000 PUSH VCCRACKM.0040169A 50 PUSH EAX 64:8925 000000>MOV DWORD PTR FS:[0],ESP 83EC 20 SUB ESP,20 894D F0 MOV DWORD PTR SS:[EBP-10],ECX 53 PUSH EBX 56 PUSH ESI 8D4D E0 LEA ECX,DWORD PTR SS:[EBP-20] 68 58304000 PUSH VCCRACKM.00403058 ; ASCII "Wrong! Try

00401548 0040154D 00401552 00401555 0040155C 00401561 00401566 00401569 0040156D 00401572 00401577 0040157A 0040157E 00401583 00401588 0040158B 0040158F 00401594 00401597 0040159A 0040159E 004015A1 004015A2 004015A7 004015AC 004015AF 004015B2 004015B3 004015B6 004015B7 004015B8 004015BD 004015C1 004015C3 004015C5 004015C6 004015C7 004015CD 004015D1 004015D4 004015D7 004015D9 004015DA 004015DD 004015E2 004015E6 004015E8 004015EA 004015ED 004015EE 004015F1 004015F2 004015F5 004015FA 004015FC 004015FF 00401602 00401603

Again" E8 79030000 CALL <JMP.&MFC40.#483> 68 50304000 PUSH VCCRACKM.00403050 ; ASCII "Error" 8D4D EC LEA ECX,DWORD PTR SS:[EBP-14] C745 FC 000000>MOV DWORD PTR SS:[EBP-4],0 E8 65030000 CALL <JMP.&MFC40.#483> 68 44304000 PUSH VCCRACKM.00403044 ; ASCII "Correct..." 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18] C645 FC 01 MOV BYTE PTR SS:[EBP-4],1 E8 54030000 CALL <JMP.&MFC40.#483> 68 38304000 PUSH VCCRACKM.00403038 ; ASCII "Good Work!!" 8D4D DC LEA ECX,DWORD PTR SS:[EBP-24] C645 FC 02 MOV BYTE PTR SS:[EBP-4],2 E8 43030000 CALL <JMP.&MFC40.#483> 68 24304000 PUSH VCCRACKM.00403024 ; ASCII "Inform me via Email" |. 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28] |. C645 FC 03 MOV BYTE PTR SS:[EBP-4],3 |. E8 32030000 CALL <JMP.&MFC40.#483> |. 8B75 F0 MOV ESI,DWORD PTR SS:[EBP-10] |. 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10] |. C645 FC 04 MOV BYTE PTR SS:[EBP-4],4 |. 83C6 60 ADD ESI,60 |. 56 PUSH ESI |. 68 E8030000 PUSH 3E8 |. E8 14030000 CALL <JMP.&MFC40.#2712> |. 8D4D EC LEA ECX,DWORD PTR SS:[EBP-14] |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] |. 51 PUSH ECX |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C] |. 50 PUSH EAX |. 52 PUSH EDX |. E8 FD020000 CALL <JMP.&MFC40.#817> |. C645 FC 05 MOV BYTE PTR SS:[EBP-4],5 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] |. 8B0E MOV ECX,DWORD PTR DS:[ESI] |. 50 PUSH EAX |. 51 PUSH ECX |. FF15 F8434000 CALL DWORD PTR DS:[<&MSVCRT40._mbscmp>] ; MSVCRT._mbscmp |. C645 FC 04 MOV BYTE PTR SS:[EBP-4],4 |. 83C4 08 ADD ESP,8 |. 83F8 01 CMP EAX,1 |. 1BC0 SBB EAX,EAX |. 40 INC EAX |. 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX |. E8 90000000 CALL VCCRACKM.00401672 |. 837D D4 00 CMP DWORD PTR SS:[EBP-2C],0 |. 74 14 JE SHORT VCCRACKM.004015FC |. 6A 00 PUSH 0 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] |. 50 PUSH EAX |. 8B4D E0 MOV ECX,DWORD PTR SS:[EBP-20] |. 51 PUSH ECX |. 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10] |. E8 BA020000 CALL <JMP.&MFC40.#3715> |. EB 2F JMP SHORT VCCRACKM.0040162B |> 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28] |. 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18] |. 50 PUSH EAX |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C] |. |. |. |. |. |. |. |. |. |. |. |. |. |.

00401606 00401607 00401608 0040160D 00401611 00401613 00401616 00401617 00401619 0040161A 0040161D 00401622 00401626 0040162B 0040162F 00401634 00401638 0040163D 00401641 00401646 0040164A 0040164F 00401656 0040165B 0040165E 0040165F 00401665 00401666 00401668 00401669

|. |. |. |. |. |. |. |. |. |. |. |. |. |> |. |. |. |. |. |. |. |. |. |. |. |. |. |. |. \.

51 PUSH ECX 52 PUSH EDX E8 AD020000 CALL <JMP.&MFC40.#817> C645 FC 06 MOV BYTE PTR SS:[EBP-4],6 6A 00 PUSH 0 8B4D DC MOV ECX,DWORD PTR SS:[EBP-24] 51 PUSH ECX 8B10 MOV EDX,DWORD PTR DS:[EAX] 52 PUSH EDX 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10] E8 92020000 CALL <JMP.&MFC40.#3715> C645 FC 04 MOV BYTE PTR SS:[EBP-4],4 E8 3F000000 CALL VCCRACKM.0040166A C645 FC 03 MOV BYTE PTR SS:[EBP-4],3 E8 46000000 CALL VCCRACKM.0040167A C645 FC 02 MOV BYTE PTR SS:[EBP-4],2 E8 45000000 CALL VCCRACKM.00401682 C645 FC 01 MOV BYTE PTR SS:[EBP-4],1 E8 44000000 CALL VCCRACKM.0040168A C645 FC 00 MOV BYTE PTR SS:[EBP-4],0 E8 43000000 CALL VCCRACKM.00401692 C745 FC FFFFFF>MOV DWORD PTR SS:[EBP-4],-1 E8 49000000 CALL VCCRACKM.004016A4 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] 5E POP ESI 64:A3 00000000 MOV DWORD PTR FS:[0],EAX 5B POP EBX 8BE5 MOV ESP,EBP 5D POP EBP C3 RETN

Estas son las sentencias a las que me refera: 004015E6 004015E8 004015EA 004015ED 004015EE 004015F1 004015F2 004015F5 004015FA |. 74 14 |. 6A 00 |. 8B45 EC |. 50 |. 8B4D E0 |. 51 |. 8B4D F0 |. E8 BA020000 |. EB 2F JE SHORT VCCRACKM.004015FC PUSH 0 MOV EAX,DWORD PTR SS:[EBP-14] PUSH EAX MOV ECX,DWORD PTR SS:[EBP-20] PUSH ECX MOV ECX,DWORD PTR SS:[EBP-10] CALL <JMP.&MFC40.#3715> JMP SHORT VCCRACKM.0040162B

Tanto el 74 como EB tienen un signo distintivo . Nuestra intuicin nos dice que la solucin est muy cerca de nosotros. Si habis ledo las lecciones de cracking de Ricardo Narvaja, seguro que recordis un cuadro de los distintos tipos de saltos condicionales que podemos encontrarnos: Hexadecimal 75 o 0F85 74 o 0F84 EB 90 77 o 0F87 OF86 0F83 0F82 0F82 0F83 Assembler jne je jmp nop ja jna jae jnae jb jnb Significa Salta si no es equivalente Salta si es equivalente Salta directamente a . . . (No OPeration) Sin operacin Salta si esta sobre Salta si no esta sobre Salta si esta sobre o igual Salta si no esta sobre o igual Salta si es inferior Salta si no es inferior

0F86 0F87 0F8F 0F8E 0F8D 0F8C 0F8C 0F8D 0F8E 0F8F

jbe jnbe jg jng jge jnge jl jnl jle jnle

Salta Salta Salta Salta Salta Salta Salta Salta Salta Salta

si si si si si si si si si si

esta debajo o igual no esta debajo o igual es mayor no es mayor es mayor o igual no es mayor o igual es menor no es menor es menor o igual no es menor o igual

Aqu encontramos dos de estos saltos: 74 y EB. Quizs, si alteramos uno de los dos podamos conseguir registranos. Analicemos las dos instrucciones: 74 o 0F84 EB je jmp Salta si es equivalente Salta directamente a . . .

La primera realizar un salto a 004015FC en el caso de que los nmeros coincidan. La segunda saltar siempre a 0040162B coincida o no coincida. Nuestra intuicin nos dice que probemos con la primera de ellas. Si 74 significa que salta si es equivalente, la instruccin opuesta es 75 salta si no es equivalente (lo podis ver en el cuadro de arriba). Si cambiamos 74 por 75 (es decir, JE por JNE), saltar a la zona de CHICO BUENO cuando el serial y el nmero que nosotros no hemos introducido no coincidan. Probemos nuestra intuicin con el OllyDBG. Nos situamos sobre 004015E6. Pulsamos el botn derecho del ratn y escogemos la funcin ASSEMBLE. Aparecer un cuadro pequeo con le ttulo ASSEMBLE AT 004015E6. Esta funcin nos servir para hacer los cambios en memoria y verificar si funciona. Escribimos en el cuadro lo siguiente: JNE 004015FC (sustituir JE por JNE)

Pulsamos el botn ASSEMBLE y ya tenemos hechos los cambios. Despus cancelamos. Vemos que ahora la orden queda as: 004015E6 75 14 JNZ SHORT VCCRACKM.004015FC

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 VCCRACKME. Introducimos el mismo nmero que antes y ... CORRECT ... INFORM ME VIA EMAIL. 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 VCCRACKME. 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 004015E6 (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 14 6A 00. Con estos sern suficientes. ULTREDIT nos muestra en azul la cadena que hemos buscado. Nos situamos en el 74 y lo cambiamos por 75. Despus FILE y SAVE. Si ULTRAEDIT no nos deja guardar los cambios es porque tenemos abierto el programa VCCRACKME. Cerrdlo y guardar los cambios que hemos hecho. Hechos los cambios vamos a comprobar de nuevo si funciona. Abrimos el programa VCCRACKME e introducimos un nmero cualquiera y ... CORRECT ... INFORM ME VIA EMAIL. Como buenos crackers, debemos utilizar todos los instrumentos que estn a nuestra disposicin y uno de los ms importantes es la intuicin. Seguramente hay mtodos ms tcnicos y exactos que nos hubiesen llevado a la instruccin correcta, pero en este caso, nuestra intuicin nos ha evitado mucho trabajo. 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/). 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. Os recomiendo la Leccin 2.

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

ADDENDA AL TUTORIAL 03: COMO HACER UN CRACK DISTRIBUIBLE DE VCCRACKME


En este tutorial hemos aprendido a crackear el programa VCCrackme 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.

Las ordenes que crean el crack son: ; VCCrackMe10.exe F=VCCrackMe10.exe: O=crackmakkakko3.exe: P=4015E6/74/75: $ ;end of script ; PROCESS TO PATCH ; LOADER TO CREATE ;

Ahora que hemos hecho el crack lo podemos distribuir. Seguid aprendiendo ... Makkakko. Julio 2.002.

Vous aimerez peut-être aussi