
Ein Reverse-Engineering-Tool für Flutter/Dart
Flattern: sich schnell, unregelmäßig bewegen, schnell schlagen, aufgeregt sein.
Doldrums: eine Phase der Stagnation.
Doldrums ist ein Reverse-Engineering-Tool für Flutter-Apps, die auf Android abzielen. Konkret ist es ein Parser und Informationsextraktor für die Flutter/Dart-Android-Binärdatei, die üblicherweise libapp.so genannt wird, für alle Dart-Version-2.10-Veröffentlichungen. Bei der Ausführung gibt es einen vollständigen Dump aller im Isolate-Snapshot vorhandenen Klassen aus.
Das Tool befindet sich derzeit in der Beta-Phase und es fehlen einige Deserialisierungsroutinen und Klasseninformationen. Falls es nicht sofort funktioniert, lass es mich bitte wissen.
Doldrums benötigt pyelftools zum Parsen des ELF-Formats. Du kannst es installieren mit
pip3 install pyelftools
Zur Verwendung führe einfach den folgenden Befehl aus, ersetze libapp.so durch die entsprechende Binärdatei und output durch die gewünschte Ausgabedatei. Beachte, dass die ausführliche Option nur für Dart-Snapshot v2.12 funktioniert.
python3 src/main.py [-v] libapp.so output
Die erwartete Ausgabe ist ein Dump aller Klassen im folgenden Format:
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
Der absolute Code-Offset gibt den Offset in der libapp.so-Datei an, an dem die native Funktion gefunden werden kann.
Eine detaillierte Beschreibung des Formats findest du in meinem Blogbeitrag.
darter ist ein vollständig implementierter und getesteter Parser für Dart-Version-2.5-Veröffentlichungen.
Wenn du dem Projekt helfen möchtest, erwäge einen Pull-Request oder spende an
Logo von Luis Fonseca.