Frage objc_msgsend in iPhone Disassembly


Ich versuche herauszufinden, welche Methode im folgenden Abschnitt der Demontage genannt wird, aber ich habe keine Ahnung, was passiert. Ich verstehe, dass mit objc_msgsend das erste Argument der Objektzeiger und das zweite der Selektor ist (also r0 und r1). Aber ich habe Probleme, das herauszufinden. Hier ist nur der Abschnitt vor dem Anruf, in dem r1 konfiguriert wird:
00042e48 f64731bc movw r1, 0x7bbc
00042e4c f2c0011f movt r1, 0x1f
00042e50 4479 add r1, pc
00042e52 6809 ldr r1, [r1, #0]
00042e54 f1c2e84a blx 0x204eec @ symbol stub for: _objc_msgSend
Nach meinem Verständnis würden die ersten beiden Zeilen r1 gleich 1f007bbc ergeben, aber was kann ich von dort aus machen? Edit: Was macht das Hinzufügen von r1 und dem PC? Und was macht die Linie danach? Und ich habe "otool -o SpringBoard" ausprobiert, aber das gibt mir nicht die Selektoren (weiß nicht, was es ist, aber es ist nicht das, wonach ich suche)
Edit 2: Actaully, -o gibt mir alle Methoden (ich habe viele zufällige Methoden aus den Headern und durchsucht sie im Terminal-Fenster und sie waren dort). Eine Suche nach "1f007bbc" ergab jedoch nichts. Habe ich die Nummer richtig verstanden?


5
2017-09-18 11:00


Ursprung


Antworten:


Wenn Sie Zugriff auf den Debugger haben, sollten Sie in der Lage sein p (char*) 1f007bbc und es wird der Selektorname gedruckt.

Die Selektoren sind im Allgemeinen konstant und daher sollten Sie in der Lage sein, dies auch aus der Binärdatei zu extrahieren, indem Sie die Mach-o auseinander nehmen.


3
2017-09-18 22:36