“El paciente” a descompilar es un exe de msdos en formato MZ

Posts in this series
  1. Compilar C en m$dos en nuestros tiempos
  2. "El paciente" a descompilar es un exe de msdos en formato MZ

Aunque voy despacio, voy a ir poniendo mis avances, que supongo que es poquito, pero bueno por seguir la Método de depuración del patito de goma o el refrán oriental que dice “El que enseña aprende dos veces.” .

La verdad es que en los primeros palos de ciego y análisis creí que “el paciente” era un ejecutable de tipo COM o algo así, pero ahora volviendo a analizarlo he encontrado el famoso:

MZ

0x4D 0x5A

Eso ayuda un montón porque si queridos mios, los ejecutables también tienen formato y no es estándar, hay muchos muchos estándares (en m$-dos hablamos…en otros sistemas operativos…pues habrá los suyos).

Como dice en el foro de ubuntu: Learning how to disassemble dos binaries

If actual DOS executables disassembly is the thing you are searching for, then search for disassemblers, that can handle the MZ magic [$4D 5A] (the default DOS 16bit header) or elf, coff, xcoff, ecoff, mach and such …

Bueno pues ahora entender la estructura de fichero de el formato DOS MZ .

Si alguno tiene alguna pista, estaré agradecido.

Videojuegos libres que se han ido de github después de ser fagocitada por Microsoft

Después de la mala noticia (gracias capitalismo) de el canibalismo salvaje de Micro$oft comiendose a github. Ya hablamos por los tomates de eso en Github ha muerto…bueno lo han asesinado.

Muchos proyectos de software libre han migrado a otras forjas/repositorios de software, y de entre estos tenemos los videojuegos libres…junto con respirar, una de las cosas que mas me ocupa la cabeza…me gustaría algún día intentar conseguir vivir de hacer videojuegos libres…pero bueno…

Bueno pues conocidos por mi, he encontrado los siguientes videojuego libres que se han ido de github:

Solarus, un clon libre del Zelda de SNES/GBA/GB con editor de mapas y todo en plan RPGmaker. Solarus has moved to Gitlab

Y OpenMW que es un clon libre del videojuego de rol en 3D Morrowin. OpenMW code, bug tracker, and wiki are now on GitLab!

Y seguro que hay mas. Amable lector…¿Conoces algún otro videojuego libre que se haya pirado de github?

Compilar C en m$dos en nuestros tiempos

Posts in this series
  1. Compilar C en m$dos en nuestros tiempos
  2. "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).

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.

Como tenía que haber hecho Microsoft con Github para demostrar su “amor al open source”

Valga por delante que es una opinión subjetiva en plan cuñado…pero tengo ganas de compartirla.

Micro$oft después de comprar Github tenía que haber hecho lo siguiente, separar en dos la compañía:

  • Por un lado la compañía github tal como está para repositorios privados y empresa, ofreciendo el mismo servicio que ahora.
  • Por el otro crear una fundación.

Vamos con la parte de fundación que es lo importante.

La fundación tenía que haber sido como la fundación Mozilla o la fundación Apache, un organismo libre y autónomo.

En la formación de la fundación tendría que:

  • Haber estado más actores en la fundación como la FSF, otras empresas competidoras como Redhat u otras por ejemplo Fundación Mozilla, para recalcar la independencia por reparto de poderes.
  • Haber liberado el código fuente github, estilo como gitlab
  • y en la fundación se quedará con los proyectos libres ya de antes como Atom, Electron y otros
  • Haber movido ahí todos los repositorios públicos.
  • Para rematar el pulpogato y la marca github (dominio y toda la pesca) se hubiera quedado en la fundación.

Así si podríamos decir que si que Microsoft está caminando fuera del lado oscuro.

Github ha muerto…bueno lo han asesinado

Github era un repositorio para proyectos usando git, comenzó antes del 15M, en el 2011. Antes de el había otros pesos pesados en terreno como viejo amado/odiado Sourceforge y otros mas o menos bizarros como Launchpad.

Poco a poco fue comiendole el terreno a Sourceforge, hasta que al final le arrebató la posición de Forja de proyecto….open source puto open source (ese es uno de los problemas que arrastraba Github antes de su asesinato).

Esta victoria sobre Sourceforge, imitó en mucho a la lucha entra Google y Yahoo, en sentido que Yahoo un viejo pesado de los buscadores de internet (bueno quien no recuerda Altavista) que la página principal era puro barroco, sobrecargada como una choni va sobrecargada de alajas, pulseras y maquillaje al botellón del parking del centro comercial, y Google que venía limpio sin ser un portal recargado, era casi una página en blanco…recuerdo una conferencia de hace años pero no recuerdo el titulo que contaba que “cuando comenzó Google recibía un misterioso email cada semana con un número que iba creciendo, hasta que supieron que era el número de enlaces en la portada”. Pues la misma lucha, el viejo Sourceforge cargado de mierdas y joyas como una vieja ppera saliendo de misa un domingo y Github limpio como un joven albino sin espinillas.

También Github marco una diferencia clave frente a SourceForge, es que cambio el concepto de forja, antes las forjas eran orientadas a Proyecto, todo se articulaba entorno al Proyecto, para empezar en Sourceforge tenias que o hacer un Proyecto nuevo o unirte a uno, donde ya aunque no se quisiera había unas dinámicas. Y Github cambio eso, ahora todo se articulaba entorno a los Repositorios y era todo mas rollo orgía y caos (amable lector recuerda caos != anarkia ) de uy yo te forkeo tu Repositorio a ti, uy yo te lo forkeo a ti este otro. Lo que daba una libertada muy interesante, sobre todo con egocentricos desarrolladores, en plan “no aceptas mi parche…pues me forkeo tu proyecto con casinos y furcias” y entonces empezaba la carrera (veías en árbol de forks) que algunas ganaba el de los casinos y furcias y el egocentrico o desaparecía o tenia que aceptar el parche.

Pero Github siempre a cojeado, primero porque nunca a liberado nada de código (importante o interesante), vamos que no ha hecho como WordPress o Gitlab en plan mira nos basamos en este proyecto libre pero te ofrecemos una solución en plan SAS en nuestros servidores para que no te compliques.

Y en otra cosa que ha cojeado es en el tipo de gente que iba a su discoteca, como iban del rollito open source en vez de software libre, mucho de los niñatos con portátil blanco de la manzanita que decían. “Oye que MacOs es Unix y tengo terminal y entonces es mejor que GNU/Linux” y que no programaban en lenguajes de verdad, les encanto la discoteca Github, ahí los veías en starbucks, bibliotecas con sus portatiles blancos con pegatinas de Facebook y el pulpogato de Github. Los hipster de la informática (e incluso hipster de verdad), gente carente de profundidad para analizar el porque del movimiento y que colaboraban con el capitalismo con la tontería del open source.

Entonces Github, se convirtió en el basurero:

  • de millones de holas mundos
  • de millones de practicas de informática
  • de millones de proyectos a medias en nodejs
  • de millones de proyectos open source de videojuegos hechos en Unity3D…tus cojones 23 eso es como hacer un software libre en Flash.
  • de millones de proyectos a medias hechos en micro$oft .Net

Tengo que decir que hace unos meses, github mejoro mucho cuando metieron “etiquetas” a los repos, por lo menos no necesitabas AwesomeLists para filtrar entre tanta mierda, y forzaba a los usuarios a que si querían aparecer en algún lado tenían que etiquetar sus repositorios.

Del interfaz de Github no tengo ninguna queja, es simple y limpio, me recuerda la vieja y cerrada forja de Google Code. Quizá el rollo la sección en los Repositorios de Projects me parece un poco forzar a usar la metodología Kanban frente a otras ni mejores ni peores, distintas.

Y bueno también hay que recordar a Atom el editor basado en Electron (un navegador con solo la página sin barras ni nada) ¿Quién recuerda de la Mozilla fundation el proyecto Prisma? Aunque no lo creáis le cogí cariño a este Editor este último año, porque estaba muy bien el rollo de los plugins que tiene (yo use mucho, uno de FTP) y el fuzzy finder para buscar y lo de que todos los atajos de teclado se podían llegar desde un menú que salía con ctrl+may+p. Aunque también hay que decir el mamoncete de Atom comía memoría y tenia lag como el solo (para mejor la velocidad lo primero que tenias que hacer era quitar su plugin estrella del mapa del fichero), me recordaba de lento al viejo y querido Eclipse. Pues la pregunta que sera de el ahora que Github esta en manos de Micro$oft.

Bueno volviendo al tema, ayer o así escribí en el twitter (a ver si me paso a las redes sociales libres):

El tema es Microsoft usa el software libre (ahora porque hace años nos acusaba de comer niños) para acercar a la gente a sus productos y estándares, ejemplo .net, su editor, su formato de office. En vez de al revés, el acercarse al software libre y a los estándares que ya existen

Este artículo en la wikipedia que explica bien la táctica de Microsoft. Adoptar, extender y extinguir.

Vamos la imagen de arriba que acompaña el articulo, porque como:

  • microsoft jodió Nokia eso fue un escandalo, encima cuando estaba apostando por el software libre con Maemo. Menos mal que se fue a la puta el puto windows phone.
  • microsoft jodió Minecraft, que originalmente el autor (el gordo friki de Notch) iba a liberar el juego cuando vendiera lo suficiente, no lo digo yo…menos mal que archive.org existe https://web.archive.org/web/20100301103851/http://www.minecraft.net:80/about.jsp y al final el gordo friki cogió la pasta y huyo. Menos mal que tenemos Minetest.
  • linkedin ya estaba jodido de antes…que vergüenza de página a nivel técnico…a otros niveles pues ya sabéis es el sitio donde la gente que ha estudiado ADE se siente importante y donde las estúpidas que han estudiado psicología y tienen la empatia de un psicópata están de recursos humanos ahí dorando la píldora y mintiendo mas que hablan para cazar a incautos ingenieros y esclavizarlos.
  • falta que dolió mucho, Sega con su última videoconsola Dreamcast, que llevaba de serie Windows CE, si bien ella se murió sola, rápido Microsoft no dejo enfriar el cadáver y cual carroñero saco lo que necesito para crear la primera Xbox….que que casualidad el sistema de ficheros de los juegos era casi igual al de la consola de Sega.

Bueno Miguel y ahora cual es la solución.

Pues no tengo respuestas en la mano, yo de momento he empezado la migración de mis proyectos a Gitlab

Como por ejemplo el solitario cutrecillo hecho en C y SDL que hice hace años.

El proceso que hago es migrar el proyecto Gitlab, y borrar todo el historial de commits (ojo que si no esta migrado pierdes todo…salvo que tengas copia) y después subir un articulo de la FSF de Upgrade from Windows.

No es la gran solución pero bueno es la que he encontrado, me gustaría ser valiente y pasarlos a Savannah.

O probar cosas tan exotéricas como Mango que es IPFS + Git, pero creo que lo importante es que sea fácil de usar para la gente y para los no iniciados. Pero mola ese rollo de un sistema de archivos distribuido en internet y sobre el Git, hay un articulo curioso sobre ello en Mango: Git completely decentralised .

Hay que seguir investigando y sacarle el dedo al puto microsoft como hizo Linus Torvals a Nvidia.

Y por cierto y como palabras finales, Microsoft si ya ha hecho daño al software libre. Porqué aunque malo era Github, mas o menos ya había crecido comunidades y proyectos entorno a el, y ahora después del bombardeo a Github con la compra, esta todo el mundo huyendo y no hay un referente claro…todavía no hay un bandle “Fork me XXX”.

Actualización: Se me olvido poner el link del análisis de la FSF del 2015 sobre Forjas de proyectos. GNU Ethical Repository Criteria Evaluations