Flutter移动应用通过编译Dart AOT Runtime进行逆向工程工具
目前该应用程序仅支持 Android libapp.so。此外,该应用程序目前仅适用于最新的 Dart 版本。
环境设置
该应用程序使用 C++20 格式化库。它需要最新的 C++ 编译器,例如 g++>=13、Clang>=15。
我建议使用 Linux 操作系统(仅在 Deiban sid 上测试),因为它很容易设置。
Debian 不稳定 (gcc 13)
- 安装构建工具和依赖项
apt install python3-pyelftools python3-requests git cmake ninja-build \
build-essential pkg-config libicu-dev libcapstone-dev
Windows
- 使用 CMake 工具安装最新的 Microsoft C/C++ 编译器
- 安装所需的库(libcapstone 和 libicu4c)
python scripts\init_env_win.py
- 启动 x64 开发人员命令提示符
macOS Ventura (clang 15)
- 安装XCode
- 安装 clang 15 和所需的工具
brew install llvm@15 cmake ninja pkg-config icu4c capstone
pip3 install pyelftools requests
用法
从 apk 文件中提取“lib”目录
python3 blutter.py path/to/app/lib/arm64-v8a out_dir
blutter.py 会自动从 flutter 引擎检测 Dart 版本,并调用 blutter 的可执行文件从 libapp.so 获取信息。
如果所需 Dart 版本的 blutter 可执行文件不存在,脚本将自动检出 Dart 源代码并编译它。
输出文件
- asm/*带符号的 libapp 程序集
- blutter_frida.js目标应用程序的 frida 脚本模板
- objs.txt对象池中对象的完整(嵌套)转储
- pp.txt对象池中的所有 Dart 对象
目录
- bin包含每个 Dart 版本的 blutter 可执行文件,格式为“blutter_dartvm<ver> <os> <arch>”
- blutter包含源代码。需要针对 Dart VM 库进行构建
- build包含构建项目,可以在完成构建过程后将其删除
- dartsdk包含 Dart Runtime 的签出,可以在完成构建过程后删除
- external包含仅适用于 Windows 的第三方库
- packages包含 Dart Runtime 的静态库
- 脚本包含用于获取/构建 Dart 的 python 脚本
生成用于开发的 Visual Studio 解决方案
我使用 Visual Studio 在 Windows 上开发 Blutter。--vs-sln
选项可用于生成 Visual Studio 解决方案。
python blutter.py path\to\lib\arm64-v8a build\vs --vs-sln
项目地址
B(l)utter:【GitHub】
暂无评论内容