
Un outil de rétro-ingénierie Flutter/Dart
Flutter : se déplacer par mouvements rapides et irréguliers, battre rapidement, être agité.
Doldrums : une période de stagnation.
Doldrums est un outil de rétro-ingénierie pour les applications Flutter ciblant Android. Concrètement, c'est un analyseur et extracteur d'informations pour le binaire Android Flutter/Dart, conventionnellement nommé libapp.so, pour toutes les versions Dart 2.10. Lorsqu'il est exécuté, il produit un dump complet de toutes les classes présentes dans le snapshot de l'isolat.
L'outil est actuellement en beta et il manque certaines routines de désérialisation et informations sur les classes. S'il ne fonctionne pas directement, n'hésitez pas à me le faire savoir.
Doldrums nécessite pyelftools pour analyser le format ELF. Vous pouvez l'installer avec
pip3 install pyelftools
Pour utiliser, exécutez simplement la commande suivante, en remplaçant libapp.so par le binaire approprié, et output par le fichier de sortie souhaité. Notez que l'option verbose ne fonctionne que pour le snapshot Dart v2.12.
python3 src/main.py [-v] libapp.so output
Le résultat attendu est un dump de toutes les classes, au format suivant :
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
Le décalage absolu du code (absolute code offset) indique le décalage dans le fichier libapp.so où la fonction native peut être trouvée.
Pour un article détaillé sur le format, veuillez consulter mon article de blog.
darter est un analyseur entièrement implémenté et testé pour les versions Dart 2.5.
Si vous souhaitez aider le projet, envisagez de faire une pull request ou de faire un don à
Logo par Luis Fonseca.