Hoy es un día de esos en los que quieres probar como desproteger un juego de MSDOS desde GNU+Linux. Un día en el que quieres dejarlo documentado pero al final solo dejas notas en un archivo de texto plano.
Y de esas notas estos posts.
Lo importante no es si al final se alteran 2 bytes o 1 byte. Lo importante es saber cual cambiar y disfrutar del proceso.
Paso 0: Disponer de Dosbox-x
Esto se puede hacer como se indica en el siquiente post: trasteando-con-juegos-viejos-0001-compilar-dosbox-x-con-modo-debug-activo
Paso 1: Obtener los disquetes originales del juego
Puedes obtenerlos desde aquí en ENGLISH y en SPANISH así:
$ wget -q "http://fanta.56k.es/208-GM-Monkey_island_2-en_and_es-disks/monkey2.tar.gz" -O - | tar xvz
Paso 2: Montar los disquetes con dosbox-x e instalar Monkey Island 2
En un anterior post relaté la forma en la que se pueden montar disquetes desde dosbox-x (en realidad imágenes de disquetes). Pero básicamente podemos hacerlo así:
$ mkdir c$ dosbox-x -c "keyb sp" -c "mount c c" -c "c:" -c "cls" -c "imgmount a monkey2/monkey2-floppy-disks-es/Monkey2_1.img monkey2/monkey2-floppy-disks-es/Monkey2_2.img monkey2/monkey2-floppy-disks-es/Monkey2_3.img monkey2/monkey2-floppy-disks-es/Monkey2_4.img monkey2/monkey2-floppy-disks-es/Monkey2_5.img -t floppy" -no-console
Abrirá una ventana de dosbox-x en la que por defecto apareceremos en C: pero con el disco 1 en la unidad A:
Vamos a movernos por MSDOS para empezar con la instalación así:
A:
DIR
INSTALL.EXE
Comenzará la instalación y en algún momento nos solicitará el disquete 2, el 3, etc … hasta el 5.
Es entonces cuando en el menú de dosbox-x vamos a cambiar el disquete actual por el siguiente.
Eso se hace pinchando en Drive — A — Swap disk una vez. Al darle cambia el disquete por el siguiente.
Seguiremos presionando cualquier tecla y tendría que seguir copiando archivos. Hacemos lo mismo con todos los disquetes hasta terminar la instalación.
Ya podemos salir de dosbox-x si queremos o podemos probar a ejecutar el juego escribiendo lo siguiente:
CLS
CD C:/MONKEY2
MONKEY2.EXE
Veremos que el juego tiene protección. De modo que cerramos dosbox-x y ya tenemos que tener en el directorio «c» el juego instalado.
Paso 3: Desproteger Monkey Island 2
Buscamos la siguiente cadena «6F 6B 83 68 4B
» dentro del archivo más gordo «MONKEY2.001»
$ cat c/MONKEY2/MONKEY2.001 | xxd -u -c 16 -g 1 | grep -i "6F 6B 83 68 4B"
Vamos a cambiar «83 68» de lo buscado por «6F 6B» de modo que quedaría así: «6F 6B 6F 6B 4B
»
$ printf "0087589D: 6F" | xxd -r4 - c/MONKEY2/MONKEY2.001
$ cat c/MONKEY2/MONKEY2.001 | xxd -u -c 16 -g 1 | grep -i "6F 6B 6F 68 4B"
$ printf "0087589E: 6B" | xxd -r4 - c/MONKEY2/MONKEY2.001
$ cat c/MONKEY2/MONKEY2.001 | xxd -u -c 16 -g 1 | grep -i "6F 6B 6F 6B 4B"
Ya hemos desprotegido el juego. Así de simple 😛
Puedes probarlo así:
$ dosbox-x -c "keyb sp" -c "MOUNT C c" -c "C:" -c "CLS" -c "C:" -c "CD MONKEY2" -c "MONKEY2.EXE"
Escribes cualquier número y será valido.
Disfruta amigo/a/e.
Saludos cordiales.