Gameboy Advance: Spielmodule lassen sich über Audioausgabe auslesen
Abstürze provozieren beim Gameboy Advance seltsames Verhalten. Darüber lassen sich Module auslesen, was interessante Einblicke ermöglicht.
Stürzt ein Spiel auf dem Gameboy Advance ab, gibt das Gerät weiter Töne von sich. Sie klingen stark, als würden Binärdaten wiedergegeben. Das brachte den Bastler TheZZAZZGlitch auf die Idee, dass hier der Inhalt des ROMs (Read Only Memory) des Spielemoduls wiedergegeben wird (via Ars Technica). Also nahm er, wie er in einem Video bei Youtube beschreibt, die Ausgabe auf und untersuchte sie.
Tatsächlich werden nach etwa einer Stunde und 50 Minuten die auf dem Spielmodul gespeicherten Audio-Samples wiedergegeben. Also versuchte der Bastler, aus den aufgenommenen Daten den Inhalt des Moduls wiederherzustellen. Dafür entwickelte er ein Python-Script. Bereits im ersten Anlauf stimmten die wiederhergestellten Daten zu 99,76 Prozent mit dem Original überein – der Bastler verglich mit dem ROM, das er für den Test in einem Emulator gestartet hatte.
Als problematisch erwiesen sich allerdings lange Folgen von Null-Bytes, die zu Fehlzuordnungen führten. Hier trickste der Bastler dann etwas, indem er mit dem Original-ROM verglich, die Adressen der entsprechenden Blöcke bestimmte und sie in seiner Ausgabe entsprechend anpasste. Für eine exakte Rekonstruktion wertete er zudem sieben einzelne Aufnahmen aus, für jedes Byte wählt sein Script den am häufigsten vorkommenden Wert (Majority Vote).
Gefälschtes Modul mit überraschendem Aufbau
Der Ansatz funktioniert aber nicht nur mit einem Emulator. Für einen praktischen Test mit realer Hardware nutzte TheZZAZZGlitch ein gefälschtes Spielemodul. Dabei stellte er fest, dass selbst mit einer Reihe von Optimierungen und 45 ausgewerteten Aufnahmen der Code des Moduls nicht dem eines Originalmoduls entsprach.
Also sah er sich die Unterschiede an und stellte fest, dass der Code des Spiels modifiziert wurde. Denn bei der Hardware des Moduls wurde gespart: Während das Original neben einem ROM- auch einen Flash-Chip zum Ablegen von Speicherständen enthält, liegt beim Klon beides zusammen in einem Flash-Speicher. Damit das funktioniert, wurde der Originalcode so modifiziert, dass er eine Routine zum Schreiben des Spielstands in den RAM des Gameboys kopiert und von dort startet. Das vermeidet Zugriffskonflikte, zu denen es unweigerlich käme, wenn der Prozessor während des Schreibprozesses versucht, Befehle vom Modul zu lesen.
Auch eine Nachricht, die auf eine leere Backup-Batterie für die Echtzeituhr hinweist, wurde modifiziert. Denn die Batterie wurde beim gefälschten Modul ebenfalls eingespart.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed










Mein Prof. an der Uni behauptete, er könne bei einer Datasette für Z80 das setzen des...
Kommentieren