拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Flutter应用逆向实战:B(l)utter 带你打开 libapp.so 的黑盒

Flutter应用逆向实战B(l)utter 带你打开 libapp.so 的黑盒【免费下载链接】blutterFlutter Mobile Application Reverse Engineering Tool项目地址: https://gitcode.com/gh_mirrors/bl/blutterlibapp.so 对普通逆向人员来说是个黑盒——IDA 里看到的只是一堆 AOT 编译后的机器码看不到任何 Dart 层的函数名和类结构。B(l)utter 通过编译 Dart AOT 运行时来做 Flutter应用逆向把这份黑盒翻译成带符号的汇编、对象池转储和 Frida 脚本模板让你不写一行逆向代码也能摸清目标应用的内部实现。 它是如何工作的B(l)utter 的思路是拿运行时自己的说明书来解读二进制它编译对应版本的 Dart AOT 运行时让分析器直接理解 libapp.so 的内部布局对象池、函数表、快照结构而不是靠静态特征去猜。整个过程由blutter.py自动驱动——从 libflutter.so 检测 Dart 版本匹配或现编译对应版本的分析器最后解析 libapp.so。版本匹配是这套机制的关键不同 Dart 版本的 AOT 产物结构不同用错版本的分析器会解析失败。脚本会自动检测版本并处理缺失的可执行文件你不需要手动管这件事。 识别 libapp.so 前的环境准备三个系统都能跑但都要求较新的 C 编译器g ≥ 13 或 Clang ≥ 16建议选新版发行版省事。按你的系统对照下表准备即可系统最短命令链LinuxDebian Unstable 推荐apt install python3-pyelftools python3-requests git cmake ninja-build build-essential pkg-config libicu-dev libcapstone-devmacOSSequoiabrew install cmake ninja pkg-config icu4c capstonepip3 install pyelftools requestsWindows装 Visual Studio勾选 Desktop development with C 和 C CMake tools再跑python scripts\init_env_win.py 三步完成首次分析拿到 APK 后从 3 步开始一条命令跑完整个分析提取 lib 目录把 APK 解包APK 本质是 zip直接解压即可取出lib目录里面同时有 libapp.so 和 libflutter.so——后者是版本检测的依据。执行主命令指向 lib 目录arm64-v8a 子目录输出目录自选。python3 blutter.py path/to/app/lib/arm64-v8a out_dir首次运行对应 Dart 版本时脚本会自动检出 Dart 源码并编译分析器这一步较慢属于正常现象。查看产物打开out_dir四个输出文件/目录即为本次分析的全部成果下面详述。 结果里能回答什么问题四个产物对应四类问题按需取用asm/libapp 的反汇编结果但关键点是带符号——你能直接看到函数对应的 Dart 层名称定位一段逻辑属于哪个方法而不是盯着sub_1A2B3C发呆。blutter_frida.js为目标应用预生成好的 Frida 脚本模板。想动态验证某个函数是否被调用、传入什么参数时挂上就能跑省掉手写 hook 的开销。objs.txt对象池中对象的完整嵌套转储回答应用启动后内存里到底躺着哪些对象、它们怎么互相引用适合理清数据结构和初始化流程。pp.txt对象池中全部 Dart 对象的平铺列表适合快速搜索某个类、常量或字符串出现在哪是做全局索引的入口。️ 进阶技巧3 个选项各管一件事--rebuild升级了工具或 Dart 环境后要强制重编分析器时。python3 blutter.py path/to/lib/arm64-v8a out_dir --rebuild--vs-slnWindows 上想调试/修改工具本身时生成 Visual Studio 解决方案。python blutter.py path\to\lib\arm64-v8a build\vs --vs-sln--no-analysis目标 Dart 版本低于 2.15 时跳过代码分析脚本也会自动兜底。python3 blutter.py path/to/lib/arm64-v8a out_dir --no-analysis 它能帮谁安全审计先翻 objs.txt 找硬编码的密钥、URL 和配置对象再用 blutter_frida.js 在设备上动态确认这些值是否真的被读取、传给哪个网络调用——这是纯静态分析做不到的闭环。机制研究想搞懂 Flutter 的 AOT 产物结构对象池布局、函数表、入口点它给出的带符号汇编就是现成的教材比对着文档空想快得多。性能与结构分析通过对象转储看应用初始化时构造了哪些对象、引用链多深为启动慢、内存涨找到可量化的切入点。⚠️ 避坑指南编译器版本g 必须 ≥ 13 或 Clang ≥ 16老系统上移植过来的 gcc 不可用别在这上面耗时间直接升系统或用容器。磁盘空间自动编译流程会检出完整 Dart 源码预留十几 GB 比较稳构建完的临时目录可以删掉。首次联网下载首次分析会联网拉取 Dart 运行时源码弱网环境建议先手动跑一遍编译流程预热。架构限制目前只支持 Android arm64 的 libapp.sox86 模拟器包或 iOS 包不在支持范围内。 收尾与展望B(l)utter 把 Flutter应用逆向里最费时的环节——从机器码还原到 Dart 语义——压缩成了一次自动化流程对新手而言是低成本理解 Flutter 内部实现的入口对老手则是 Dart AOT 反汇编和 Flutter安全审计的加速器。项目仍在演进中函数参数与返回类型推断、更好的 Frida 脚本生成、iOS 二进制支持乃至直接丢一个 APK/IPA 进去就出结果都在待办列表上。如果你的下一个目标应用恰好是 Flutter 写的现在就可以解包它的 lib 目录跑一次python3 blutter.py看看结果。【免费下载链接】blutterFlutter Mobile Application Reverse Engineering Tool项目地址: https://gitcode.com/gh_mirrors/bl/blutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门