ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

一条命令拆解 Flutter 应用:用 B(l)utter 解析 libapp.so

一条命令拆解 Flutter 应用:用 B(l)utter 解析 libapp.so 一条命令拆解 Flutter 应用用 B(l)utter 解析 libapp.so【免费下载链接】blutterFlutter Mobile Application Reverse Engineering Tool项目地址: https://gitcode.com/gh_mirrors/bl/blutterB(l)utter 是一款 Flutter 逆向工具它从 Android APK 的 libapp.so 中解析 AOT 编译后的 Dart 字节码产出带符号的汇编、对象池完整转储和 Frida 挂接脚本适合需要深挖 Flutter 应用的安全研究人员和开发者。直面 libapp.so 无符号的困境Flutter 应用的 Dart 代码被 AOT 编译进 libapp.so没有源码、没有函数符号、没有类信息静态工具打开后满眼机器码。你逆向时通常想要三样东西——应用有哪些类和函数、硬编码了哪些字符串和对象、运行时从哪里切入。手工还原 Dart VM 内部结构又是个苦差事对象池布局随 Dart 版本变化stub 和类型表示这些年改了好几轮。B(l)utter 把整条链路自动化你只需指向 APK 的 lib 目录它会自己判断应用用的哪个 Dart 版本、自动构建匹配版本的分析可执行文件然后吐出结果。跑通 Flutter 逆向环境三步装依赖 → 执行一条命令 → 拿到结果。第一步装依赖。项目用到 C20 格式化库编译器要求 g≥13 或 Clang≥16建议直接用较新的发行版。Debian Unstable 下一条命令装齐apt install python3-pyelftools python3-requests git cmake ninja-build \ build-essential pkg-config libicu-dev libcapstone-devWindows 先装 Visual Studio勾选 Desktop development with C 和 C CMake tools 组件再执行python scripts\init_env_win.py拉取 libcapstone 与 libicu4cmacOS 用brew install cmake ninja pkg-config icu4c capstone加pip3 install pyelftools requests即可。第二步执行命令。先解包 APK 取出 lib/arm64-v8a 目录然后python3 blutter.py path/to/app/lib/arm64-v8a out_dir首次运行时脚本会自动检测 Dart 版本若缺少对应的 blutter 可执行文件它会自动检出 Dart 源码并编译全程无需干预等它跑完即可。第三步拿到结果。编译与分析结束后out_dir 下会生成四份产出。读懂输出文件asm/带符号的 libapp 反汇编。打开后可以直接按函数名跳转想定位某段逻辑时按名字 grep 即可不用再对着无符号机器码硬猜。objs.txt对象池中对象的完整嵌套转储。字符串常量、类名、硬编码的网络地址都集中在这里是排查敏感信息的第一落点。pp.txt对象池中全部 Dart 对象的清单。拿它和 Frida 运行时数据对照能快速确认某个函数实际引用了哪些对象。blutter_frida.js针对目标应用预生成的 Frida 脚本模板补上挂接点就能注入目标进程做动态分析。搞懂它替你做了什么机制层面有三点值得了解。Dart 版本自动检测。extract_dart_info.py 从 libflutter.so 中解析快照哈希与编译标志确定精确的 Dart 版本及 compressed-pointers 等特性省去人工比对引擎版本的麻烦。缺库自动编译。bin/ 目录按blutter_dartvmver_os_arch命名存放各版本的分析可执行文件缺哪个版本脚本就检出对应 Dart 源码并完整编译同时检查 Dart VM 头文件class_id.h、object.h 等注入版本兼容宏一次构建即得到与该应用完全匹配的分析工具。对象池与代码解析。blutter 的 C 程序针对 Dart VM 静态库构建因此能用 VM 自身的结构定义直接遍历对象池、重建 Dart 对象代码分析逻辑在 CodeAnalyzer.cppFrida 模板由 FridaWriter.cpp 生成。用进阶选项动手改源码python3 blutter.py path/to/app/lib/arm64-v8a out_dir --rebuild强制重新编译对应版本的可执行文件升级工具或构建损坏时用。Windows 下生成 Visual Studio 工程便于调试python blutter.py path\to\lib\arm64-v8a build\vs --vs-sln。--no-analysis关闭代码分析模块的构建Dart 低于 2.15 时脚本会自动强制此项。想改代码看 blutter/src/ 目录即可DartDumper.cpp 负责对象池转储Disassembler_arm64.cpp 处理 ARM64 反汇编入口是 main.cpp。构建脚本在根目录的 blutter.py 和 dartvm_fetch_build.pybuild/ 与 dartsdk/ 是中间产物构建完成后可直接删掉。你可能会遇到的问题你可能会遇到编译器过旧。低于 g 13 的环境会在模板代码上报一片错优先换用新发行版或 clang-16老系统上移植新版 gcc 通常行不通。你可能会遇到首次运行特别慢。它需要下载 Dart 源码并完整编译 VM预留充足的磁盘与稳定的网络同版本目标再次运行时则秒出结果。你可能会遇到目标不适用。目前只支持 Android 的 arm64 libapp.soiOS 二进制或 armeabi-v7a 目录无法处理。你可能会遇到老 Dart 版本构建失败。若应用 Dart 版本低于 2.15显式加--no-analysis跳过代码分析模块。先拿手上任意一个 APK 把整条流程走完再去 objs.txt 里 grep 应用硬编码的字符串熟悉产出物之后就可以进 blutter/src/ 加自己需要的解析逻辑了。【免费下载链接】blutterFlutter Mobile Application Reverse Engineering Tool项目地址: https://gitcode.com/gh_mirrors/bl/blutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表