分析与反编译

交互式反编译器

分屏视图与控制流图

Grapefruit 内置完全基于浏览器的反编译器,通过 WebAssembly 运行:radare2 提供反汇编,Kuna 反编译原生代码,DDC 生成 Java,r2hermes 处理 Hermes 字节码。拖入任意二进制文件——ELF、Mach-O、DEX 或 Hermes 字节码——即刻开始逆向。无需连接设备、无需服务端处理、无需配置。

分屏视图同时展示反汇编和控制流图。可在线性、图形和离线反编译模式之间切换。在集成工作区中浏览函数、类、字符串和交叉引用。

实时反汇编

原生反汇编

对于实时进程,内存从目标设备按需读取。点击模块或类浏览器中的函数地址,打开反汇编标签页,提供三种视图:

  • 线性视图 — 完整函数反汇编,带语法高亮
  • 图形视图 — 控制流图,显示基本块及分支走向(绿色为 true,红色为 false,灰色为无条件跳转)
  • 反编译器 — Kuna 对实时函数内存快照进行反编译

DEX 分析

DEX 分析

从 APK 浏览器或文件系统打开任意 .dex 文件:

  • 类浏览器 — 列出所有类,展开查看方法和字段,支持搜索
  • 方法反汇编 — 点击方法查看 Dalvik 字节码
  • 字符串搜索 — 浏览所有字符串,点击查找交叉引用
  • 交叉引用 — 点击 xref 跳转到引用方法的反汇编
  • 反编译 — DDC 在浏览器中生成所选方法所属类的 Java 源码

Hermes 字节码分析

Hermes 字节码

使用 Hermes 引擎的 React Native 应用将 JavaScript 编译为私有字节码。Grapefruit 可拦截并分析这些字节码:

  • 反汇编 — Hermes 字节码列表,含函数名、参数和大小
  • 伪代码 — 基于规则的反编译,重构类似 JavaScript 的语法

离线引擎

Kuna 支持 x86、x64、ARM、Thumb、ARM64 和 ARM64e;其他架构保留 radare2 反汇编和控制流图。DEX 使用 DDC,Hermes 使用 r2hermes。反编译不需要 LLM 或 API Key。

实时反编译使用函数内存快照(最大 1 MiB),快照外的数据、常量池及调用目标类型可能不可用。文件反编译可读取完整二进制文件。切换函数或离开视图会取消当前任务,每次请求限时 60 秒。