前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >B(l)utter:一款针对Flutter移动端应用程序的逆向工程分析工具

B(l)utter:一款针对Flutter移动端应用程序的逆向工程分析工具

作者头像
FB客服
发布2024-01-21 14:23:48
4070
发布2024-01-21 14:23:48
举报
文章被收录于专栏:FreeBufFreeBuf
关于B(l)utter

B(l)utter是一款针对Flutter移动端应用程序的逆向工程分析工具,当前版本的B(l)utter仅支持Android libapp.so(ARM64),可以帮助广大研究人员对基于Flutter开发的移动端应用程序进行逆向工程分析。

环境搭建

该应用程序使用了C++20的Formatting代码库。并且需要较新版本的C++编译器,例如g++>=13或Clang>=15环境。

我们建议广大研究人员在Linux操作系统上使用B(l)utter。除此之外,我们还需要安装并配置好Python 3.x环境。

工具安装

广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/worawit/blutter.git

Debian安装(gcc 13)

安装项目所需的构建工具依赖组件:

代码语言:javascript
复制
apt install python3-pyelftools python3-requests git cmake ninja-build \ build-essential pkg-config libicu-dev libcapstone-dev

Windows安装

首先,我们需要安装最新版本的Visual Studio,并安装"Desktop development with C++"和"C++ CMake tools"插件。然后安装该工具所需的libcapstone和libicu4c库:

代码语言:javascript
复制
python scripts\init_env_win.py

然后执行"x64 Native Tools Command Prompt"

macOS Ventura安装(clang 15)

安装xCode、clang 15以及其他需要的工具:

代码语言:javascript
复制
brew install llvm@15 cmake ninja pkg-config icu4c capstone

pip3 install pyelftools requests

工具使用

首先,我们需要从目标APK文件中提取出“lib”目录:

代码语言:javascript
复制
python3 blutter.py path/to/app/lib/arm64-v8a out_dir

blutter.py脚本将会自动根据Flutter引擎检测Dart版本,并调用blutter可执行程序从libapp.so中读取目标APK的相关信息。

如果blutter可执行程序搜索的Dart版本数据不存在,脚本将会自动检测Dart源代码并进行代码编译。

工具更新

我们可以使用git pull来更新工具,并使用--rebuild选项运行blutter.py脚本来强制重新构建该工具的可执行程序:

代码语言:javascript
复制
python3 blutter.py path/to/app/lib/arm64-v8a out_dir --rebuild

输出文件

asm/*:包含符号的libapp程序集; blutter_frida.js:针对目标应用程序的frida脚本模板; objs.txt:从Object Pool转储的对象; pp.txt:Object Pool中的全部Dart对象;

目录结构

bin:包含针对每个Dart版本的blutter可执行程序,格式为"blutter_dartvm<ver>_<os>_<arch>" ; blutter:包含源代码,需要构建Dart VM库; build:可以在项目构建完成后删除; dartsdk:包含Dart运行时的输出,可以在项目构建完成后删除; external:包含仅适用于Windows的第三方库; packages:包含Dart运行时的静态库; scripts:包含用于获取/构建Dart的python脚本;

工具开发-生成Visual Studion解决方案

我们建议广大研究人员在Windows上使用Visual Studio来对B(l)utter进行自定义开发,这里可以使用--vs-sln选项来生成一个Visual Studio解决方案:

代码语言:javascript
复制
python blutter.py path\to\lib\arm64-v8a build\vs --vs-sln

许可证协议

本项目的开发与发布遵循MIT开源许可证协议

项目地址

B(l)utter:https://github.com/worawit/blutter

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具安装
    • Debian安装(gcc 13)
      • Windows安装
      • 工具使用
      • 工具更新
        • 输出文件
          • 目录结构
          • 工具开发-生成Visual Studion解决方案
          • 许可证协议
          • 项目地址
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档