El objetivo de la ingeniería inversa es obtener información o un diseño a partir de un producto con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado. Esta labor en muchas ocasiones es bloqueada o, al menos, se intenta bloquear por el fabricante para mantener sus secretos industriales a salvo. Sin embargo, aún con las trampas y dificultades que ponen algunos fabricantes, hay quien tiene la habilidad necesaria para hurgar en los mecanismos internos y a la postre encontrar la información que se desea.
El personaje, cuyo apodo es Nitro2k01, decidió meterse con Game Fighter, un clon del Game Boy original. Y aunque hay un sinfín de documentos e información sobre el ROM que arranca (el boot ROM), así como la operación del Game Boy original, pero no sobre los clones, Nitro2k01 decidió que quería aprender más, por lo que usó una técnica muy específica para descargar el ROM del dispositivo y entonces hacer una serie de descubrimientos interesantes sobre la protección de los derechos de autor, así como el proceso de arranque.
Leer el contenido de un ROM de un Game Boy es en realidad un reto. El ROM se puede leer mientras está arrancando, pero poco después el espacio de memoria del arranque del ROM se remapea para los vectores de interrupción y otros usos. Hay algunos métodos para lidiar con esto. De hecho, para atacar el problema hace falta entender algo de hardware, pues se necesita de pronto manipularlo para impedir que se remapeé la memoria del arranque y así poder ver qué está haciendo hasta que ocurre ya el remapeo.
Y aunque el clone de Nitro2k01 puede correr los mismos juegos del Game Boy, tiene un ROM de arranque diferente y una serie de diferencias significativas de hardware. Nuestro héroe logró usar la versión modificada de su técnica para analizar el ROM del arranque. Halló que el clon usa una variante inusual de las técnicas de derechos de autor del Game Boy original. Nitro2k01 puso el código desensamblado del boot explicando los detalles para quien le interese.
Referencias: