[Tiptoi] binaries im Weltatlas

Joachim Breitner mail at joachim-breitner.de
Mo Jan 11 10:40:09 CET 2021


Hallo Ramin,

Am Montag, den 11.01.2021, 00:34 +0100 schrieb Ramin Sadre via tiptoi:
> > Oder mal unter allen GMEs das mit dem kürzeseten Main-Binary suchen,
> > das ist vielleicht am einfachsten zu verstehen.
> 
> Ich bin ehrlich gesagt nicht so sehr an der praktischen Anwendung interessiert. Ich hab das nur als kleine sportliche Herausforderung gesehen, um das Grundprinzip zu verstehen und die ARM-ISA kennenzulernen. Wer sich gut (ich nicht) mit dem gme-Format auskennt, sollte sich wahrscheinlich schnell zurechtfinden im eigentlichen Code. Das Grundprinzip ist, dass die Binaries in r0 einen Zeiger auf ein grosses Datenobjekt bekommen, das unter anderem Zeiger auf einige Funktionen enthält, z.B.:
>         0x0c: alloc?
>         0x14: debugprintf
>         0x2c: read
>         0x38: seek
>         0x1ac: random?
> Im 1_Game1-Binary gibt es zum Beispiel eine Funktion an Position 0x920, die die grundlegenden Game-Daten aus der gme-Datei liest. Am Ende einer Binary-Datei befindet sich meist Code, der wahrscheinlich aus einer ARM-Library stammt (z.B. eine Divisionsfunktion).
> 
> Damit ist meine Neugier erstmal gestillt :)

und meine geweckt!

Dass in r0 ein großes Datenobjekt mit Funktionszeiger steckt habe ich
auch vermutet (siehe 
https://github.com/nomeata/tiptoi-arm-investigation/blob/main/notes.md)
.

Aber wie kamst du jetzt darauf dass z.B. der Zeiger an 0x0c wohl
alloc() sein müsste?

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







Mehr Informationen über die Mailingliste tiptoi