QUAKE3 ARENA v1.11						Crack & Tutorial por MarioVega
==================

Requerimientos:
===============

- W32Dasm 8.93 (u otro depurador/desensamblador)
- Hex WorkShop 2.20 (u otro editor hexadecimal)
- Estar en un buen clan como el [666]
- Un cerebro :))


Hola gente!!, que peazo de juego, os lo recomiendo si tenis un PIII 600, con 256MB SDRAM 100Mhz. 
con la Riva TNT2 Ultra y con un monitor LG Flatron 17" de pantalla plana, es el juego con mejores
grficos y con mejor jugabilidad que he visto en mi vida (de este tipo), es ideal para jugar
en red. El problema surge cuando ejecutamos el juego, al cargar cualquier mapa nos pide insertar
el CD :(((( y como no, es una mierda tener que estar cogiendo el CD de la estantera para echar
una partidilla de 10 mins. Es aqu cuando decid "arreglar" el juego corrigendo ese pequeo bug.
Manos a la obra. Ejecutamos el W32Dasm, para m uno de los depuradores ms sencillos y eficaces,
abrimos nuestra queridsimo EXE (quake3.exe), esperamos 15 seg., vamos a "String Data References"
del men "Refs" y buscamos algo que nos interese. De puta madre!!! se puede ver una frasecita que
es un tanto problemtica "Game CD not in drive", hazemos doble-click sobre ella y nos situamos
aqu:

* Possible StringData Ref from Data Obj ->"fs_restrict"
                                  |
:0042DFA3 6810634B00              push 004B6310
:0042DFA8 E893ECFEFF              call 0041CC40
:0042DFAD D81D58134B00            fcomp dword ptr [004B1358]
:0042DFB3 83C404                  add esp, 00000004
:0042DFB6 DFE0                    fstsw ax
:0042DFB8 F6C440                  test ah, 40
:0042DFBB 7418                    je 0042DFD5
:0042DFBD E8AE210100              call 00440170    <<< Llamada al CD-Check
:0042DFC2 85C0                    test eax, eax    <<< 0 = mierda!, no pasa. 1 = Chupi!!, pasa.
:0042DFC4 750F                    jne 0042DFD5    <<< Si realiza el salto, vamos bien.

* Possible StringData Ref from Data Obj ->"Game CD not in drive"    <<< Estamos aqu
                                  |
:0042DFC6 6880E34B00              push 004BE380
:0042DFCB 6A03                    push 00000003
:0042DFCD E8CEC0FEFF              call 0041A0A0    <<< Va a mostrar el mensaje (en su interface)
:0042DFD2 83C408                  add esp, 00000008


La llamada en :0042DFCD va a un trozo de cdigo en el que se comparan datos para ms tarde salir
del juego o volver hacer el CD-Check, seguro que es el mensajito que nos pregunta si queremos
insertar el CD, normalmente suele llamar a ventanas tipo MessageBox pero el quake utiliza su 
propia interface para introducir la frase. Vamos a ver que hay antes de esta llamada, bueno
como no, la tpica proteccin que lleban el 90% de los juegos, se puede observar un salto
condicional en :0042DFC4 que se salta el mensaje, se puede forzar a EB (EBh=JMP) y joder el
cd-check fcilmente, pero eso es demasiado guarro, ese salto (jne) quiere decir que va a
:0042DFD5 si los datos comparados anteriormente son desiguales (Jump if Not Equal), esos datos
comparados vienen de la anterior instruccin test eax,eax en la que se mira si el el registro
"E"AX tiene el valor de 0, si es igual a 0 el salto posterior jne 0042DFD5 no intervendr, si
el valor es de 1, el JNE intervendr y el juego funcionar correctamente. En este momento eax tiene
el valor de retorno de la llamada en :0042DFBD:

* Referenced by a CALL at Address:
|:0042DFBD    <<< cdigo llamado desde aqu
|
:00440170 81EC84000000            sub esp, 00000084
:00440176 56                      push esi

* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h    <<< Muy comn en los CD-Check
                                  |
:00440177 8B3590104B00            mov esi, dword ptr [004B1090]
:0044017D C64424053A              mov [esp+05], 3A
:00440182 C64424065C              mov [esp+06], 5C
:00440187 C644240700              mov [esp+07], 00
:0044018C C644240463              mov [esp+04], 63

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004401F1(C)
|
:00440191 8D442404                lea eax, dword ptr [esp+04]
:00440195 50                      push eax
:00440196 FFD6                    call esi
:00440198 83F805                  cmp eax, 00000005    <<< 05 es el valor para los CD-ROMS
:0044019B 7548                    jne 004401E5    <<< Si no es igual va a mal sitio


..bla, bla, bla...


* Possible StringData Ref from Data Obj ->"quake3.exe"    <<< mira dnde se encuentra el archivo
                                  |
:004401B6 689C1A4C00              push 004C1A9C
:004401BB 68F0895C00              push 005C89F0
:004401C0 8D542420                lea edx, dword ptr [esp+20]

...bla, bla, bla...


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004401E3(C)    <<< Si se llega aqu la comprobacin del CD-Check ha salido bien
|
:004401FD 50                      push eax
:004401FE E8F4F70500              call 0049F9F7    <<< Llamada corta, aade valores a esi y edi.
:00440203 83C404                  add esp, 00000004

* Possible Reference to String Resource ID=00001: "Quake3"
                                  |
:00440206 B801000000              mov eax, 00000001   <<< Se establece si el CD-Check ha salido bien
:0044020B 5E                      pop esi
:0044020C 81C484000000            add esp, 00000084
:00440212 C3                      ret



Si nos fijamos, el juego utiliza las API de Windows para acceder al CD-ROM, esto significa "facilidad"
ya que siempre se sulen utilizar las mismas funciones y resultan tiles como puntos de ataque
cuando no se encuentra el tpico mensaje o cualquier cosa interesante en las S.D.R.. La llamada 
en :0042DFBD es clave, ya que es la que realiza el CD-Check enterito (verifica el CD correcto y 
dnde se encuentra el ejecutable principal "quake3.exe") Si el CD-Check ha salido bien, esta
llamada devuelve el valor de 1 en el registro eax, entonces lo nico que hay que hacer es modificar
los datos de la llamada (E8h AEh 21h 01h 00h) por (B8h 01h 00h 00h 00h) que establece directamente
el valor de 1 al registro eax.


Esto es todo. Edita el EXE, ejecutalo y a jugar sin CD!, hay que dar las gracias a Id Software 
por no poner proteccin al CD (como SafeDisc o SecuROM) que aunque da igual, es un detalle. 
Tampoco se ha esforzado en poner un buen CD-Check y para colmo el CD-Key se basa (segn me han 
dicho) en un algoritmo sencillo, Vaya vagos!!!.


Resumen:
========

1.- Haz una instalacin mxima del juego
2.- Abre el archivo quake3.exe con un Hex editor
3.- Haz el sigiente cambio:

Original    =>    Offset: 2DFBDh   E8 AE 21 01 00   call 00440170

Cambiar por =>    Offset: 2DFBDh   B8 01 00 00 00   mov eax, 00000001

4.- Guarda los cambios y disfruta el juego sin CD!!!




MarioVega							    e-mail: mariovega69@yahoo.es