    ______________________________________  
  <[   ___   ___    ___                   ]>
  <[  |     |   \  /   \  |     |  |\   | ]>
  <[  |___  |___|  |___|  |  |  |  | \  | ]>
  <[      | |      |   |  |  |  |  |  \ | ]>
  <[   ___| |      |   |  \__|__/  |   \| ]>
  <[______________________________________]>

 *** TUTORIAL RESIDENT EVIL 2 TUTORIAL ***

Hola a todos los que leais este tutorial y haceis ke esto siga creciendo, si quereis o teneis 
alguna duda enviadme un e-mail a Mt_spawn33@hotmail.com . Tambien podeis enviarlo pa dar las 
gracias o pa saluarme, cosa ke me hace saber ke esto lo lee alguien y ke por tanto vale la pena.
Este es el segundo tutorial ke hago, bueno la verdad es ke ha surgido de le peticion de un chaval
sobre el juego Resident Evil 2
En este tutorial usaremos Wdasm8.93 ( puedes conseguirlo en www.crackstore.com ) y un editor 
hexadecimal.
Empecemos, ejecuta el ejecutable LeonS.exe sin tener el cd puesto, y que pasa? aparece un 
"Messageboxa" que nos dice "Por favor introduce el CD de leon" vale de puta madre, los juegos 
mas faciles de crackear son estos por que te dan un mensaje. Desensambla el archivo y por donde
podemos empezar ?, pues por el "Messagebox" y Que deca? "Por favor introduce el CD de leon"  
pues busquemoslo.
En wdasm vete a String Data References en el men y busca la frase "Por favor introduce el CD de 
leon" , seguro que la en cuentras por el final y pulsandola 2 veces te situaras en:

:005103A4 6888925400              push 00549288

* Possible StringData Ref from Data Obj ->"Por favor, introduce el CD de "
                                        ->"Leon."
                                  |
:005103A9 6898955400              push 00549598
:005103AE E968FFFFFF              jmp 0051031B
:005103B3 90                      nop

bien ya estas aqui lo que hace push es meter la frase ->"Por favor, introduce el CD de... " en 
la memoria y mas tarde  el jump salta a un lado donde se llamar al messagebox (la pantallita 
que te sale ) el programa va de arriba a abajo por eso lo ke hace llegar hasta aqu est arriba.
Subimos para arriba hasta llegar a:


:00510376 EBA3                    jmp 0051031B

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00510301(C)
|
:00510378 83C0F3                  add eax, FFFFFFF3
:0051037B 3DF2000000              cmp eax, 000000F2

En algun sitio se ha saltado hasta aqui en un salto condicional (C), y a sido en la linea 
00510301 , pues subamos hasta situarnos en esta lnea, donde hay:

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0050F895(U), :0050F8D1(U)   <<< Han saltado aqui desde estas lineas
|
:005102F9 A10C306900              mov eax, dword ptr [0069300C]
:005102FE 83F80B                  cmp eax, 0000000B
:00510301 7F75                    jg 00510378   <<< Este es el ke salta a nuestro sitio
:00510303 744D                    je 00510352  <<< Este salta a otro tipo de error
:00510305 2BC5                    sub eax, ebp
:00510307 7419                    je 00510322   <<< Este salta a otro tipo de error

a qui ahi una serie de salto condicionales si los miramos cada uno lleva a un error por tanto 
tenemos ke ir mas para arriba a las lineas 0050F895 o 0050F8D1
en 0050F895 hay:

:0050F889 740F                    je 0050F89A  << Salta desde aqu
:0050F88B C7050C30690012000000    mov dword ptr [0069300C], 00000012
:0050F895 E95F0A0000              jmp 005102F9

aqui no es, ( no por ke no pueda ser pero yo lo he probado, y no salta desde ahi )
el otro sitio desde donde salta a 005102F9 ( El sistio que nos lleva al messagebox, es decir al 
error ) es 0050F8D1 donde dice:

:0050F8BE E82D140000              call 00510CF0
:0050F8C3 85C0                    test eax, eax
:0050F8C5 750F                    jne 0050F8D6  << si hay cdrom salta
:0050F8C7 C7050C30690010000000    mov dword ptr [0069300C], 00000010
:0050F8D1 E9230A0000              jmp 005102F9  << aqui salta al error

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050F8C5(C)
|
:0050F8D6 E8350FFDFF              call 004E0810

Arriba de donde salta al error hay una comprobacion , seguramente si hay un cdrom y si lo hay 
salta  :0050F8C5 750F   jne 0050F8D6  
Lo ke tenemos ke hacer es hacer ke ese salto no sea condicional, sino incondicional para eso 
tenemos que cambiar el "jne" por un "jmp".
Situate en la linea :0050F8C5 750F   jne 0050F8D6  y mira en la parte de abajo de wdasm donde pone :

@Offset 0010ECC5h in file:LeonS.exe

Aqui necesitaremos un editor de disco ( yo uso Ultra Eit 32 , o hex workshop ) , puedes encontrar 
uno en www.crackstore.com , edita el archivo LeonS.exe y ve al punto  ( offset ) 0010ECC5h y 
cambia el byte 75 por un EB.

75 en ensamblador es jne
EB en ensamblador es jmp

Haciendo esto el archivo ya ir correctamente pa nosotros.

Pillame en el numero de ICQ 39638886
Adios y sigue aprendiendo.

--== Spawn ==--