CRaCKeaR CD-CHeCKS
Un CD-Check sule ser usado por
los juegos para obligar al jugador a tener el juego original (o pirateado xDD)
en funconamiento mientras se juega, lo cual es un coñazo porque yo no
estoy para gastarme 300 pelas en un cd-rom para copiar un juego cuando puedo
meterlo en el HD directamente hasta que me canse. Por ello lo que vamos a hacer
es aprender a petar esos CD-Checks tan molestos.
NOTA: Siempre me voy a referir a juegos porque no he visto un solo programa que tenga este tipo de "proteccion"
- Para empezar
instalamos el juego. Le corremos con el CD y jugamos un ratito xDDDD
- Despues decides
eliminar el CD-Check.
- Corres el juego
sin el CD para ver lo que pasa:
- Puede que te aparezca una ventana, tipo win, pidiendo el CD
- Puede que en el juego aparezca un texto que pida el CD
- En el primer caso podemos desensamblar el juego con Win32Dasm y buscar la cadena que nos pida el CD. Ir a esa parte del codigo y petar el CD-Check. Esto no se hace de ninguna manera en especial, es igual que petar cualquier otro programa, es decir, cambiar un JE por un JNE, etc. Mas adelante vereis algo sobre el tema.
- En el segundo caso pordemos hacer dos cosas: 1º Meternos en el SICE porner
un BPX GetDriveTypeA, correr el juego (sin el CD!!)
y esperar a que salte al SICE para despues estudiar el codigo; 2º Entrar
en el Win32Dasm, desensamblar el juego y en Imported Functions
buscar GetDriveTypeA, hacer dobleclic para ir al
codigo pertinente y estudiar el codigo.
- Estos metodos
son solo para detectar la parte de codigo que nos interesa del juego.
Ahora lo que debemos hacer el eliminar ese dichoso CD-Check. existen
muchos metodos de comprobacion, es decir, buscar la unidad de lectura
(el Cd-Rom) y comprobar que sea el del juego. Los mas normal, aunque
no siempre es asi, es que en la rutina de comprobacion devuelva en
EAX=1 si la verificacion esta bien ó EAX=0 si la verificacion
es erronea:
call Comprobacion <-- Comprueba las unidades. EAX=1 si Ok, sino EAX=0 si Error
test EAX,EAX <-- Testea EAX
jz CD-Error <-- Si EAX=0 No esta el CD
... <-- Sino todo esta bien
- Para crackear algo como esto podemos cambiar ese JZ por un JNZ pero esto es un cambio bastante "cutre", ya que si introducimos el CD-Rom del juego nos dara error; asi que para hacer algo mas eficaz podemos hacer:
xor EAX,EAX <-- Pone a EAX=0 (esta parte del codigo estaria en la rutina de comprobacion)
inc EAX <-- EAX=1
ret <-- Sale de la CALL
- Este es un metodo habitual pero no siempre es asi, por ello eres TU el que debe tener un poco de "coco" para hallar otras maneras de crackeo eficaces al 100%, en eso consiste ser un buen cracker ;-)