[Tiptoi-hw] Halb-automatisiert Spiele-Binaries ersetzen

Joachim Breitner mail at joachim-breitner.de
Mi Jan 13 23:20:16 CET 2021


Hi,

Am Mittwoch, den 13.01.2021, 21:53 +0100 schrieb Matthias Weber via
tiptoi-hw:
> Für Europa.gme hab ich das von Hand korrigiert, und sowas hier
> > geschrieben:
> > https://github.com/nomeata/tiptoi-arm-investigation/blob/main/Europa/OidMain.txt
> > Das kann man jetzt wieder assemblieren und bekommt eine identische
> > Datei, und kann man jetzt ändern.
> 
> Das ist natürlich nochmal eine ganze Spur besser - binäridentisch ist
> ein schönes Ziel. Hätte nicht gedacht, dass das erreichbar ist.

das ist eigentlich gar nicht schwer – jeder Befehl im Assembler kodiert
ein Wort im Binary.

> > Ich wollte das jetzt automatisieren, und hab
> > https://github.com/nomeata/tiptoi-arm-investigation/blob/main/Weltatlas/disassemble.pl
> > geschrieben, was die Ausgabe von arm-linux-gnueabi-objdump “aufräumt”.
> > Ist aber noch nicht fertig, und manuell Nacharbeitn wird nötig sein.
> 
> Hui, Perl ist für mich #Neuland. Textuelle ersetzungen über Regex?
> Wenn noch der ein oder andere Kommentar im Code wäre, könnten wir das
> gemeinsam weiter spinnen, wobei ich Bash, Python oder C vorziehen würde.
> Aber machbar ist es natürlich in allen Sprachen.
> 
> An welche manuelle Nacharbeiten denkst du? Bzw. welche sind dir beim
> Weltatlas begegnet?

Das Hauptproblem ist zu wissen welche Code-Teile wirklich Code sind
(und sinnvolle Assembler-Befehle ergeben), und welche Daten sind (und
man besser per .ascii oder .word darstellt). Sowas geht von Hand
vermutlich schneller. Natürlich könnte man jetzt auch ein Programm
schreiben, dass alle Code-Pfade (also alle Sprünge) verfolgt und so
(vielleicht) erkennt, was erreichbar ist… wäre aber nicht ganz einfach,
und vielleicht nicht zuverlässig.

Ist aber alles halb so wild, macht ja erstmal nichts wenn auch Daten
über ihre scheinbare Assembler-Bedeutung kodiert werden.

Der Thumbs-Teil ist schwieriger…

> > Interessant ist dass die Weltatlas-GMEs allerlei Strings enthalten.
> > Viele davon, wenn man danach Googelt, kommen auch in ganz anderen
> > Kontexten vor (Gameboy-Advance-Spiele), aber alles ARM. Sagt vermutlich
> > was über den verwendeten Compiler oder C-Library aus.
> > 
> > Auch interessant (und nervig beim dekompilieren) ist dass das
> > Weltatlas-Binary mal vom ARM-Modus in den Thumb-Modus (anderer
> > Instruction-Set) wechselt.
> 
> Wenn wir Ghidra da auch noch vernünftig in die Toolchain mit rein
> bekommen, gerne auch das. Ich hatte mir das vor laaaanger Zeit mal
> angesehen, aber es schon länger nicht mehr versucht. Für den seltenen
> Hobby-Gebrauch war es nicht so einstiegsfreundlich. Aber da können Sven,
> Björn und Uli vielleicht noch was dazu sagen.

Ja, das wäre vermutlich sinnvoller. Ramin Sadre ist noch nicht hier?
Dann frag ich mal auf der anderen Mailingliste ob er Lust hätte ein
kurzen Screencast zu machen wo er zeigt was er da bisher gemacht hat.


Cheers,
Joachim

-- 
Joachim Breitner
  mail at joachim-breitner.de
  http://www.joachim-breitner.de/







Mehr Informationen über die Mailingliste tiptoi-hw