En 1993 sacaron diferentes versiones del Mortal Kombat para MSDOS. Una de ellas «sin protección».
La que nos interesa es la que he marcado en el listado en negrita.
- 1993-11-25 – beta – no copy protection – setup.bat (kombat.exe -s) – no sound at all – ESC para salir
- 1993-12-13 – Virgin – Copy protection – setup.exe – ESC game overs – ALT-Q para salir
- 1993-12-17 – UltraTech/Hi Tech Expressions – Copy protection – no setup.exe (F10) -ESC game overs – ALT-Q para salir
- 1993-12-31 – UltraTech/Hi Tech Expressions – Copy protection – no setup.exe (F10) – ESC game overs – ALT-Q para salir
Vamos a trastear con este juego un poco. Para ello vamos a utilizar dosbox-x. Si no dispones de dosbox-x puedes compilarlo con modo debug tal y como se indica en este post.
Descargar material
Descargar el manual: 56k.es/downloads/mortal_kombat_manual.pdf
Descargar el juego: fanta.56k.es/00-Games/00-pc/08-Peleas/MortalKombat1.tar.gz
Disfrutar simplemente del juego
Puede hacerse así:
$ wget "http://fanta.56k.es/00-Games/00-pc/08-Peleas/MortalKombat1.tar.gz"
$ tar xfvz MortalKombat1.tar.gz
$ cd MORTAL/
$ dosbox -x MK.EXE
Es necesario disponer de dosbox-x o dosbox para jugarlo. No obstante la versión que he subido tiene protección y para jugarlo hemos de jugar un poquito antes con el modo debug.
Ejecutar el juego ralentizado
Esto es un truco bueno. Se trata de ejecutar el juego pero con los requisitos mínimos y con una velocidad de ciclos de CPU baja.
Este juego nada más ejecutarlo nos pedirá que escribamos una una palabra que se encuentra en alguna página del manual. El tema es que ejecutado de forma normal llegaremos demasiado rapido al input de los datos.
Ejemplo para lanzarlo ralentizado y que tarde:
$ dosbox-x -fastlaunch -set "cputype = 386" -set "cycles = fixed 1000" -set "machine = vga" -set "memsize = 4" MK.EXE
Aquí un vídeo en el que se ve como va mucho más lento accediendo a la zona que nos interesa, la zona en la que hemos de meter la palabra para desproteger el juego:
Entrar en modo Debugger
Desde Dosbox-x se puede acceder al modo Debug pinchando el en menú superior sobre «Help», luego en «Debuging options» y finalmente en «show debugger».
Otra opción es presionando «Alt+Pause». Con esto lo que hacemos es congelar la ejecución del juego o programa.
En la consola en la que hemos lanzado dosbox-x veremos algo como lo que se muestra en la siguiente captura:
Allí vamos a poder escribir comandos (abajo está el PROMPT parpadeando esperando que le metas algo como HELP).
Podemos ir moviéndonos por «Register Overview», «Data view», «Code Overview» con el tabulador.
Posición en una zona determinada
Con C y D vamos a poder posicionarnos en una zona determinada en «Data view», «Code Overview» .
Con C lo veremos en Code Overview y con D lo veremos en Data view. C y D :).
Un ejemplo que podemos copiar y pegar allí es el siguiente:
C 0170:001D5451
D 0170:001D5451
Eso nos llevará a lo que se ve en la captura:
Lo interesante es ese 75 05 en hexadecimal. Ese lo vamos a cambiar por un 90 90 (el 90 es un NOP) para que en vez de hacer un JNE (salta si no es igual) no lo haga y siga.
«Seteando» que es gerundio
Con SM vamos a poder cambiar justo esos valores indicando la posición:
SM 0170:001D5451 90
SM 0170:001D5452 90
Y con F5 o escribiendo INT 3 vamos a continuar con la ejecución normal del juego.
Si todo va bien dará igual que metamos como palabra porque vamos a entrar si o si .
Crackeando el juego para que siempre se salte la protección
Esto se puede hacer así:
$ wget "http://fanta.56k.es/00-Games/00-pc/08-Peleas/MortalKombat1.tar.gz"
$ tar xfvz MortalKombat1.tar.gz
$ cd MORTAL/
$ printf "0005f465: 90" | xxd -r4 - MK.EXE
$ printf "0005f466: 90" | xxd -r4 - MK.EXE
$ dosbox -x MK.EXE
Vamos a explicarlo un poquito. Primero buscamos «75 05 41 42» dentro del ejecutable MK.EXE. Así por ejemplo:
$ xxd -g 1 MK.EXE | grep -i "75 05 41 42"
Una vez localizada la posición vamos a poder ir a ver su contenido mejor así por si cambiamos los valores:
$ xxd -g 1 MK.EXE | grep -i "0005f460:"
Finalmente alteramos los valores de esos bytes así:
$ printf "0005f465: 90" | xxd -r4 - MK.EXE
$ printf "0005f466: 90" | xxd -r4 - MK.EXE
Y ya tenemos nuestro primer juego crackeado.
En futuros posts veremos más cositas interesantes e intentaré poner ejemplos que se entiendan algo mejor. De este lo importante es quedarse con que podemos ralentizar los juegos con dosbox y dosbox-x y que eso nos ayudará a poder trabajar con ellos de forma más cómoda a la hora del trasteo.
Disfruta del juego amigo/a/e :).
Saludos cordiales.