
Инструмент обратной разработки Flutter/Dart
Порхать: двигаться быстрыми, неравномерными движениями, биться учащенно, быть возбуждённым.
Штиль: период застоя.
Doldrums — это инструмент обратной разработки для Flutter-приложений, нацеленных на Android. Конкретно, это парсер и извлекатель информации для Flutter/Dart бинарного файла Android, традиционно называемого libapp.so, для всех выпусков Dart версии 2.10. При запуске он выводит полный дамп всех классов, присутствующих в изолированном снимке.
Инструмент в настоящее время находится в бета-версии и в нём отсутствуют некоторые процедуры десериализации и информация о классах. Если он не работает «из коробки», пожалуйста, сообщите мне.
Doldrums требует pyelftools для разбора формата ELF. Вы можете установить его с помощью
pip3 install pyelftools
Для использования просто выполните следующую команду, заменив libapp.so на соответствующий бинарный файл, а output на желаемый выходной файл. Обратите внимание, что подробный режим работает только для снимка Dart v2.12.
python3 src/main.py [-v] libapp.so output
Ожидаемый вывод — дамп всех классов в следующем формате:
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
Абсолютное смещение кода указывает смещение в файле libapp.so, где может быть найдена нативная функция.
За подробным описанием формата обращайтесь к моему блог-посту.
darter — это полностью реализованный и протестированный парсер для выпусков Dart версии 2.5.
Если вы хотите помочь проекту, рассмотрите возможность отправки pull request или пожертвования на
Логотип от Luis Fonseca.