Blutter -Flutter移动应用程序逆向工程工具

taibeihacker

Moderator
通过编译DART AOT运行时,Flutter移动应用程序逆向工程工具
目前,该应用程序仅支持Android libapp.so(仅ARM64)。此外,该应用程序目前仅针对最近的DART版本。
对于高优先级缺少功能,请参阅todo

Environment Setup​

此应用程序使用C ++ 20格式库。它需要最近的C ++编译器,例如G ++=13,Clang=15。
我建议使用Linux OS(仅在Deiban SID/Trixie上测试),因为它易于设置。

Debian Unstable (gcc 13)​

安装构建工具和依赖项APT安装Python3-Pyelftools Python3-重新questers git cmake cmake ninja-build \
build-essential pkg-config libicu-dev libcapstone-dev

Windows​

Install git and python 3 Install latest Visual Studio with 'Desktop development with C++' and 'C++ CMake tools' Install required libraries (libcapstone and libicu4c) python scripts\init_env_win.py Start 'x64 Native Tools Command Prompt'

macOS Ventura (clang 15)​

安装Xcode安装clang 15和必需的工具brew brew llvm@15 cmake ninja pkg-config icu4c capstone
PIP3安装Pyelftools请求

Usage​

提取'lib'目录从APK文件
python3 blutter.py路径/to/app/lib/am64-v8a out_dir the blutter.py将自动检测到颤音引擎的飞镖版本,并调用blutter的执行,以从libapp.so中获取信息。
如果不存在所需的DART版本的Blutter执行,则脚本将自动查看DART源代码并对其进行编译。

Update​

您可以使用git rupt更新和运行blutter.py。
python3 blutter.py path/to/app/lib/arm64-v8a out_dir --rebuild

Output files​

asm/*libapp assemblies with symbolsblutter_frida.jsthe frida script template for the target applicationobjs.txtcomplete (nested) dump of Object from Object Poolpp.txtall Dart objects in Object Pool

Directories​

bin包含“ blutter_dartvmver_os_arch”格式中每个DART版本的Blutter可执行文件blutter包含源代码。需要在DART VM库中建造build包含建筑项目,可以在完成构建过程后可以删除该项目dartsdk包含DART Runtime的结帐,可以在完成构建过程的构建过程external包含Windows的3rd Party库后可以删除,Windows仅适用于Windowspackages,仅包含DART RUNTIMEscriptsCORNON for DART TIMET TIMER CORTINE CORTITION DART TIMET TIMER CONNON,

Generating Visual Studio Solution for Development​

我使用Visual Studio在Windows上使用Visual Studio进行Delevlop Blutter。 -VS-SLN选项可用于生成Visual Studio解决方案。
python blutter.py path\to\lib\arm64-v8a build\vs --vs-sln

TODO​

More code analysis Function arguments and return type Some psuedo code for code pattern Generate better Frida script More internal classes Object modification Obfuscated app (still missing many functions) Reading iOS binary Input as apk or ipa
 
返回
上方