📖 概述

Flutter逆向分析是移动安全研究的重要组成部分

  • 本文将详细介绍使用blutter工具对Flutter应用进行逆向分析的完整流程
  • 包含环境配置、工具使用和常见问题解决方案

🛠️ 工具介绍

推荐工具:blutter

  • 项目地址:blutter - GitHub
  • 专门用于Flutter应用的逆向分析工具
  • 支持将Flutter so文件反编译为Dart源码

🚀 完整流程

📋 系统要求

重要提示:

  • blutter工具对GCC版本有严格要求,需要GCC 13版本以上
  • 推荐使用WSL Ubuntu-24.04环境进行操作

🔧 WSL环境配置

第一步:安装WSL Ubuntu-24.04

1
2
3
4
5
6
7
8
# 查看可用的Linux发行版
wsl -list -online

# 安装Ubuntu-24.04
wsl --install Ubuntu-24.04

# 启动指定发行版
wsl --distribution Ubuntu-24.04

第二步:配置用户权限

1
2
3
4
5
# 设置root密码
sudo passwd root

# 切换到root用户
su

📦 安装编译工具链

更新系统包管理器

1
2
# 更新包列表
apt-get update

安装GCC 13工具链

1
2
# 安装GCC 13和G++ 13
sudo apt install gcc-13 g++-13

可选:设置GCC默认版本

1
2
3
# 配置GCC默认版本
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

🔗 安装项目依赖

安装所有必需的依赖包

1
2
3
# 安装blutter所需的全部依赖
apt install python3-pyelftools python3-requests git cmake ninja-build \
build-essential pkg-config libicu-dev libcapstone-dev

🎯 运行blutter工具

执行反编译命令

1
2
# 使用blutter对arm64-v8a so文件进行反编译
python3 blutter.py arm64-v8a/ out_dir

参数说明:

  • arm64-v8a/ - 输入目录,包含Flutter的so文件
  • out_dir - 输出目录,将生成反编译后的Dart文件

📁 输出结果

成功标志:
如果配置正确,将会在out_dir目录中生成反编译出来的Dart源码文件

⚠️ 常见问题与解决方案

已知问题:blutter在某些环境下存在兼容性问题

🔴 问题1:Debian环境编译错误

问题描述:
在WSL Debian环境下,安装了GCC 13,使用blutter对arm64-v8a so进行反编译时仍然产生大量错误

解决方案:
建议使用WSL Ubuntu-24.04替代Debian,Ubuntu-24.04对blutter的兼容性更好

🟡 问题2:GCC版本不兼容

问题描述:
系统默认GCC版本低于13,导致编译失败

解决方案:
按照上述流程安装GCC 13,并配置为默认版本

🔗 相关资源