
Uma ferramenta de engenharia reversa para Flutter/Dart
Flutter: mover-se em movimentos rápidos e irregulares, bater rapidamente, agitar-se.
Doldrums: um período de estagnação.
Doldrums é uma ferramenta de engenharia reversa para aplicativos Flutter direcionados ao Android. Concretamente, é um analisador e extrator de informações para o binário Android Flutter/Dart, convencionalmente chamado de libapp.so, para todas as versões do Dart 2.10. Quando executado, ele gera um dump completo de todas as classes presentes no snapshot do isolate.
A ferramenta está atualmente em beta, e faltam algumas rotinas de desserialização e informações de classe. Se não funcionar imediatamente, por favor me avise.
Doldrums requer pyelftools para analisar o formato ELF. Você pode instalá-lo com
pip3 install pyelftools
Para usar, basta executar o seguinte comando, substituindo libapp.so pelo binário apropriado e output pelo arquivo de saída desejado. Observe que a opção verbose só funciona para o snapshot Dart v2.12.
python3 src/main.py [-v] libapp.so output
A saída esperada é um dump de todas as classes, no seguinte formato:
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
O offset de código absoluto indica o deslocamento dentro do arquivo libapp.so onde a função nativa pode ser encontrada.
Para um artigo detalhado sobre o formato, consulte meu post no blog.
darter é um analisador totalmente implementado e testado para versões do Dart 2.5.
Se você quiser ajudar o projeto, considere fazer um pull request ou doar para
Logotipo por Luis Fonseca.