[Tiptoi] Mehr zu OidMain

Matthias Weber matthiaz.weber at gmx.de
Do Nov 26 23:51:59 CET 2020


Hallo zusammen!

Meine ersten Gedanken zu
https://github.com/nomeata/tiptoi-arm-investigation/blob/main/OidMain.txt:

x0048 ist ein Funktions-Prolog.
x0234 ist ein Funktions-Epilog.
Dazwischen liegt der Code dieser Funktion, ich nenne sie mal foo().

Ist vor x0048 wirklich auch schon Code? Und danach sicherlich auch? Oder
könnten das Binärdaten sein?

Kann man davon ausgehen, dass foo() 2 Übergabe-Parameter hat, die in r0
und r1 liegen?
r2 wird auf den Stack gesichert - gäbe ja keinen Grund einen
Übergabe-Parameter später wiederherzustellen, oder?

Theorie: foo(arg0, arg1)
Ich glaube auch, dass an arg1 auf eine Struktur zeigt.
Darin sind arg1+0x18, arg1+0x24, arg1+0x44 Funktions-Pointer (auf
bar1(), bar2() und bar3()).
Kann sein, dass arg0 auch wohin zeigt.

Aufrufe:
bar1(arg0, 113, 0)  @ x0068
bar2(arg0, SP, 2)   @ x007c
bar1(arg0, [SP], 0) @ x0090
bar1(arg0, SP+4, 2) @ x00a4
...

Es wäre interessant
- wo hin arg0 und arg1 (die Struktur) zeigen,
- wo die Funktion tatsächlich im Speicher liegt,
- wo die aufgerufenen Funktionen liegen (Inhalt der Struktur).

Könnten vielleicht wieder den snowbirdopter
("https://github.com/maehw/snowbirdopter") ausgraben und Dinge per
Boot-ROM UART + ein wenig eigenen Code dumpen. Danach wäre allerdings
der Neustart des Stiftes nötig.

Gedanken dazu?

Viele Grüße
Matthias




Mehr Informationen über die Mailingliste tiptoi