
Инструмент для реверс-инжиниринга мобильных приложений Flutter
Инструмент для реверс-инжиниринга мобильных приложений Flutter путём компиляции Dart AOT Runtime
В настоящее время приложение поддерживает только Android libapp.so (только arm64). Также приложение в настоящее время работает только с последними версиями Dart.
По поводу наиболее приоритетных недостающих функций см. TODO
Это приложение использует библиотеку форматирования C++20. Требуется очень свежий компилятор C++, такой как g++>=13, Clang>=16.
Я рекомендую использовать ОС Linux (тестировалось только на Debian sid/trixie), так как её легко настроить.
ПРИМЕЧАНИЕ: Используйте ТОЛЬКО версию Debian/Ubuntu, которая предоставляет gcc>=13 из своего основного репозитория. Использование портированного gcc на старой версии Debian/Ubuntu не работает.
apt install python3-pyelftools python3-requests git cmake ninja-build \
build-essential pkg-config libicu-dev libcapstone-dev
python scripts\init_env_win.py
brew install cmake ninja pkg-config icu4c capstone
pip3 install pyelftools requests
brew install llvm@16 cmake ninja pkg-config icu4c capstone
pip3 install pyelftools requests
Извлеките каталог "lib" из файла apk
python3 blutter.py path/to/app/lib/arm64-v8a out_dir
Скрипт blutter.py автоматически определит версию Dart из движка Flutter и вызовет исполняемый файл blutter для получения информации из libapp.so.
Если исполняемый файл blutter для требуемой версии Dart не существует, скрипт автоматически загрузит исходный код Dart и скомпилирует его.
Вы можете использовать git pull для обновления и запустить blutter.py с опцией --rebuild для принудительной пересборки исполняемого файла
python3 blutter.py path/to/app/lib/arm64-v8a out_dir --rebuild
Я использую Visual Studio для разработки Blutter на Windows. Опция --vs-sln может быть использована для генерации решения Visual Studio.
python blutter.py path\to\lib\arm64-v8a build\vs --vs-sln