
Una herramienta de ingeniería inversa para Flutter/Dart
Agitarse: moverse en movimientos rápidos e irregulares, latir rápidamente, estar agitado.
Doldrums: un período de estancamiento.
Doldrums es una herramienta de ingeniería inversa para aplicaciones Flutter orientadas a Android. Concretamente, es un analizador y extractor de información para el binario Flutter/Dart de Android, denominado convencionalmente libapp.so, para todas las versiones de Dart 2.10. Al ejecutarse, genera un volcado completo de todas las clases presentes en la instantánea del isolate.
La herramienta se encuentra actualmente en beta y carece de algunas rutinas de deserialización e información de clases. Si no funciona de inmediato, por favor hágamelo saber.
Doldrums requiere pyelftools para analizar el formato ELF. Puede instalarlo con
pip3 install pyelftools
Para usarlo, simplemente ejecute el siguiente comando, sustituyendo libapp.so por el binario correspondiente y output por el archivo de salida deseado. Tenga en cuenta que la opción verbose solo funciona para Dart snapshot v2.12.
python3 src/main.py [-v] libapp.so output
El resultado esperado es un volcado de todas las clases, con el siguiente formato:
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
El desplazamiento absoluto del código indica el desplazamiento dentro del archivo libapp.so donde se puede encontrar la función nativa.
Para obtener un análisis detallado del formato, consulte mi publicación en el blog.
darter es un analizador completamente implementado y probado para las versiones de Dart 2.5.
Si desea ayudar al proyecto, considere hacer un pull request o donar a
Logotipo de Luis Fonseca.