
Uno strumento di reverse engineering per Flutter/Dart
Svolazzare: muoversi con movimenti rapidi e irregolari, battere velocemente, essere agitato.
Doldrums: un periodo di stagnazione.
Doldrums è uno strumento di reverse engineering per applicazioni Flutter destinate ad Android. Concretamente, è un parser ed estrattore di informazioni per il binario Flutter/Dart Android, convenzionalmente chiamato libapp.so, per tutte le versioni di Dart 2.10. Quando eseguito, produce un dump completo di tutte le classi presenti nello snapshot dell'isolato.
Lo strumento è attualmente in beta e manca di alcune routine di deserializzazione e informazioni sulle classi. Se non funziona subito, per favore fatemelo sapere.
Doldrums richiede pyelftools per analizzare il formato ELF. Puoi installarlo con
pip3 install pyelftools
Per usarlo, esegui semplicemente il seguente comando, sostituendo libapp.so con il binario appropriato e output con il file di output desiderato. Nota che l'opzione verbose funziona solo per Dart snapshot v2.12.
python3 src/main.py [-v] libapp.so output
L'output previsto è un dump di tutte le classi, nel seguente formato:
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
L'offset assoluto del codice indica l'offset nel file libapp.so dove si può trovare la funzione nativa.
Per un articolo dettagliato sul formato, consulta il mio post sul blog.
darter è un parser completamente implementato e testato per le versioni di Dart 2.5.
Se vuoi aiutare il progetto, considera di fare una pull request o donare a
Logo di Luis Fonseca.