Posts in this series
- Compilar C en m$dos en nuestros tiempos
- "El paciente" a descompilar es un exe de msdos en formato MZ
La verdad es que para escalar una montaña, primero hay que tener la montaña.
Mi montaña es descompilar un videojuego (de momento uno) y liberarlo, pese a la polémica que hay con esta forma de liberar videojuegos como podéis leer en: Devilution – Decompiled Diablo 1 en el subreddit de videojuegos libres.
El juego en cuestión, ya os lo contare si lo consigo, pero como ya he empezado con los problemas, he querido ir paso a paso, y me he buscado un montecito, descompilar un C de un hola mundo.
Todo este gusanillo viene los articulos del Fanta: mierda.tv (cosas de dosbox que no tiene tags y hay que tirar de busqueda) (link actualizado en febrero 2020 ahora mierdatv esta bajo el otro proyecto de Fanta 56k) (actualización 2022: eliminado link…como Fanta es tan anti-diógenes, borra sus cosas…y desaparecen y archive no le dio tiempo a conservarlas).
A ver, quiero ser perro mordedor y poco ladrador, por eso no voy a ponerme grandes metas y voy a ver hasta donde llego.
Y lo primero que hay que hacer es tener un m$-dos entre manos, como no me apetece llamar al tito Gates y decirle que me venda unos disquetes de su apestoso sistema operativo, he encontrado el viejo y querido dosbox (no os asustéis con ese web de los dosmiles).
En casi todas las distribuciones de GNU/Linux viene en el repositorio de paquetes oficial por lo que no sera difícil instalarlo. Aunque cosa distinta es si queréis ver la matrix de m$-dos que hay que seguir el tutorial que hizo Fanta para poner el debug heavy.
Una vez instalado hay que descargar el djgpp, que es la versión del compilador libre por excelencia el Gcc para m$-dos, el proyecto tiene un formulario web para darte una lista de crípticos ficheros zip para tener el gcc funcionando según gustos personales, básicamente tienes que seleccionar:
- compilar y ejecutar programas
- C y ensamblador
- Por frikeo el Rhide
- Depurador gdb
Como podéis ver en la captura de pantalla:
Y tendrás de la descarga los siguientes ficheros zip con nombres bastante crípticos, pues tienes que descomprimirlos a una misma carpeta todos, en mi caso le puse el nombre tan original como djgpp y tendrás algo tal que así (donde todos las carpetas bin de cada zip estarán fusionadas y el resto de tipos de carpetas al igual con sus respectivos nombres):
Ahora como enganchamos el dosbox para que coja ese directorio en el path de ejecutables (si, por si no lo recordabais m$-dos tenia un invento parecido a los Unix), pues aunque se puede cambiar la configuración de dosbox para hacerlo, voy a enseñaros vía parámetros de la shell…porque así explico una parte el señor Fanta y seguir el hilo de su trabajo.
$ dosbox -c "keyb sp" -c "mount c: ." -c "C:" -c "set PATH=C:\DJGPP\BIN;%PATH%" -c "set DJGPP=c:/djgpp/djgpp.env"
Y después puedes probar cosas tan frikis como usar rhide para editar un fichero c con un hola mundo.
Recuerda, para sacar al ratón del dosbox es: ctrl + F10
Y aquí tenéis el holamundo en C para m$-dos:
En cuanto puedo os sigo mostrando los siguientes paso hasta escalar mi montaña personal.