B(l)utter:Flutter 移动应用逆向工程工具

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

© 版权声明
THE END
喜欢就支持一下吧
点赞306赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容