ESTUDIO COLECTIVO DE DESPROTECCIONES
Última Actualizacion: 25/10/2001

Programa DRAKAN: ORDER OF THE FLAME W95 / W98 / NT 
Descripción Juego. Tipo Tomb Raider
Tipo CD-Check
Tipo de Tutorial [X]Original, []Adaptación, []Aplicación, []Traducción
Url http://www.drakan-game.com/
Protección Cd-Check. Obliga a poner el CD para jugar.
Dificultad 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista 
Herramientas W32dasm v8.9, Hiew 6.0
Objetivo Jugar sin CD.
Cracker Gádix 
Fecha 17 de Octubre de 1999
 


INTRODUCCION
El juego nos obliga a tener el CD para jugar. Y como nosotros los crackers no tenemos tiempo pa buscar un CD determinado entre una multitud de ellos.......
AL ATAQUE
Instalamos el juego al completo. Ahora lo que tenemos es que ver como reacciona el programa cuando los ejecutamos sin el CD. Lo ejecutamos y llegamos al menú principal. Ummm! Esto me huele mal. Bueno, seguramente nos lo pedirá al empezar una partida. Le damos a New Game y efectivamente nos sale:

"Inserta el CD de Drakan."

Lo desemsamblamos con Wdasm32 8.9 y le damos al botón de "String References". Pero nada, no encontramos nada interesante.

Bueno no os asustéis. Atacaremos por otro lado. Posiblemente utilizará la función usada por el 99% de los juegos, GetDriveTypeA

Pues la buscamos en "Imported Functions". Bingo!!! Ahí la tenemos. Hacemos doble click y aparecemos en:

* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h

:0040961A FF157C504700 Call dword ptr [0047507C]

:00409620 83F805 cmp eax, 00000005

:00409623 0F8577010000 jne 004097A0

:00409629 8D54241C lea edx, dword ptr [esp+1C]

:0040962D 8D442410 lea eax, dword ptr [esp+10]

:00409631 52 push edx

:00409632 8D4C2410 lea ecx, dword ptr [esp+10]

:00409636 50 push eax

:00409637 8D54241C lea edx, dword ptr [esp+1C]

:0040963B 51 push ecx

:0040963C 8D442434 lea eax, dword ptr [esp+34]

:00409640 52 push edx :00409641 50 push eax

* Reference To: KERNEL32.GetDiskFreeSpaceA, Ord:0100h

:00409642 FF1578504700 Call dword ptr [00475078]

:00409648 85C0 test eax, eax

:0040964A 0F8450010000 je 004097ª0

:00409650 837C241410 cmp dword ptr [esp+14], 00000010

:00409655 0F8545010000 jne 004097A0

:0040965B 817C240C00080000 cmp dword ptr [esp+0C], 00000800

:00409663 0F8537010000 jne 004097A0

:00409669 8B442410 mov eax, dword ptr [esp+10]

:0040966D 85C0 test eax, eax

:0040966F 0F852B010000 jne 004097A0

..... (El esquema de protección sigue con funciones como GetVolumeInformationA, entre otras, pero no es cuestión de aburrir a la gente)

Bueno, sin fijarnos mucho en el código de arriba vemos un salto que se repite hasta la saciedad: jne 004097A0. Me suena a que en caso de error salta a esa dirección. Vamos a ver que hay en 0040970:

:0040978F 5E pop esi

:00409790 5D pop ebp

* Possible Reference to String Resource ID=00001: "MainWindow"

:00409791 B801000000 mov eax, 00000001 <= eax = 1

:00409796 5B pop ebx

:00409797 81C49C000000 add esp, 0000009C

:0040979D C20C00 ret 000C

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

:004097A0 5E pop esi <= Nos manda aquí

:004097A1 5D pop ebp

:004097A2 33C0 xor eax, eax <= eax = 0

:004097A4 5B pop ebx

:004097A5 81C49C000000 add esp, 0000009C

:004097AB C20C00 ret 000C

Pero bueno, como uno no es todavía un experto en esto del cracking, forzamos el salto. Sin complicarnos la vida nos vamos a Hiew. Pulsamos F4 (Mode) y le damos a decode. F5 y escribimos: .00409623. F3 para editar y le damos al tabulador y cambiamos JNE por JMP. Ejecutamos el juego y nada, nos pide el CD. Pero si nos fijamos un par de líneas más abajo en 004097A0, vemos un "xor eax, eax" que nos pone eax a 0. A ver, vamos a buscar alguna instrucción que nos ponga EAX=1. Cuatro líneas más arriba vemos:

:00409791 B801000000 mov eax, 00000001

Esta vez en 00409623 ponemos JMP 0040978F. Ejecutamos el juego y para nuestro asombro el juego nos pide el CD. De nuevo analizamos el código:

:004097AE 90 nop

:004097AF 90 nop

:004097B0 8B442404 mov eax, dword ptr [esp+04]

:004097B4 56 push esi

:004097B5 50 push eax

:004097B6 E8C5790500 call 00461180

:004097BB 8BF0 mov esi, eax

:004097BD 85F6 test esi, esi

:004097BF 7504 jne 004097C5

:004097C1 5E pop esi

:004097C2 C20400 ret 0004

:004097C5 57 push edi

:004097C6 56 push esi

:004097C7 E864770500 call 00460F30

:004097CC 56 push esi

:004097CD 8BF8 mov edi, eax

:004097CF E89C790500 call 00461170

:004097D4 8BC7 mov eax, edi

:004097D6 5F pop edi

:004097D7 5E pop esi

:004097D8 C20400 ret 0004

En "Call 00461180" entre otras cosas, diría que comprueba las pistas de audio del CD. Y en 4097BF salta si hay error. Sin persarlo demasiado NOPeamos el salto en cuestión. Vamos a Hiew y en 4097BF cambiamos 7504 por 9090. Ejecutamos el juego y ENTRA!!!

Hay más formas de cracker el juego, pero bueno he intentado no complicar demasiado el tema. Este es el primer tutorial que escribo y seguramente no será el último. Por lo general, intentaré evitar protecciones que puedan eliminarse cambiando un simple saltito. Por cierto, a ver si alguién se atreve con Safedisk o Securom y nos manda un tutorial. Un saludo a todos los crackers hispanos.

 

[ Entrada | Documentos Genéricos | WkT! Web Site ]
[ Todo el ECD | x Tipo de Protección | x Fecha de Publicación | x Orden Alfabético ]
(c) Whiskey Kon Tekila [WkT!] - The Original Spanish Reversers. 
Si necesitas contactar con nosotros , lee esto antes e infórmate de cómo puedes ayudarnos