夜雨聆风学习资料网

ARTICLE · 1185636

REA:给 AI 装上逆向工具,追到软件功能的底层

REA:给 AI 装上逆向工具,追到软件功能的底层

内容摘要

REA 把反编译、应用结构和运行行为分析接给 AI,让它带着证据解释一个功能如何实现。

你可能遇到过这样的时刻:某个软件的搜索很顺手,复制粘贴能保留复杂格式,老游戏里一个小效果又特别有意思。你想弄明白它怎么做,却拿不到源代码。

过去,这往往意味着自己找工具、翻反编译结果、追函数调用,再把线索一点点拼起来。

REA 想把这段调查过程交给 AI 协助完成。 你提出一个具体问题,它为 AI 提供分析入口,让 AI 查代码、追关系、看运行现象,再把结论和证据一起拿回来。

一、REA 到底是什么?

REA 的全称是 Reverse Engineer Anything,可以理解为“面向多种软件目标的逆向分析工具”。逆向分析,就是从已有软件的文件、结构和行为出发,推断它内部如何工作。

它通过 MCP 连接 AI 助手。MCP 是一种让 AI 调用外部工具的接口标准;在这里,作用就是让 Claude Code、Codex、Cursor 等助手能够调用 REA 的分析能力。

REA 在本地检查目标,返回伪代码、汇编、模块关系、引用位置等信息。伪代码是便于阅读的逻辑表达;汇编更接近机器实际执行的指令。AI 再根据这些结果继续追查,解释功能,或为你的项目编写和测试类似实现。

项目原始分析界面

这张项目截图展示了 REA 在 Hopper 中启动分析桥接、检查原生二进制的场景。Hopper、Ghidra 和 IDA 都是常见的逆向分析工具,REA 可以借助它们做更深入的分析。

它把“问 AI”变成了“让 AI 带着工具查”。 一个结论对应哪段代码、哪些引用、还有哪些未知,都是调查的一部分。

二、它能查哪些东西?

最容易理解的两类目标,是原生程序和 JavaScript/Electron 应用。

原生程序,就是已经编译成机器码的软件。REA 可以借助分析引擎查看函数、字符串、符号、调用关系,以及伪代码和汇编。即使没有源代码,也能从这些线索追踪某项功能。

Electron 是用网页技术构建桌面应用的框架。对这类应用,REA 可以分析模块、导入关系、源码映射、路由,以及不同进程之间如何通信。比如,“点击复制”之后,界面里的请求究竟怎样传到主进程。

项目还提供面向其他目标的分析入口:

  • 网站:观察页面结构、脚本、网络行为,并按需获取截图。
  • .NET 程序:检查程序集元数据、中间指令和声明的原生依赖。
  • Android APK:借助 JADX 查看清单、类、反编译方法和引用。
  • 软件包与资源:梳理文件清单、资源和应用包结构。
  • 运行过程:记录终端输出、交互、退出情况与文件系统变化。

这些能力有不同的前提。原生程序的深入分析通常需要 Hopper、Ghidra 或 IDA;APK 分析需要 JADX 和完整 JDK;网站观察需要 Chrome 系浏览器。静态 JavaScript 和 .NET 检查则不需要原生反编译引擎,也不会运行被检查的应用。

仓库主分支还可能包含尚未进入 npm 发行版的新功能,实际使用时要以安装版本提供的工具为准。

三、几个案例,比功能清单更直观

从左到右:DX-Ball、Notion、TH04

项目展示的案例很具体:一个游戏的声音左右偏移、一个桌面应用的剪贴板链路、一段老游戏的弹幕角度计算。

1. DX-Ball:从位置推导声音偏移

案例沿着声音调用追到“位置如何转换为声像偏移”的辅助函数,再检查指令,把不完整的伪代码重建成 C。项目案例报告,这个重建通过了 3,205 组原始 x86 测试,并复现了对应函数的全部 63 个编译字节。

价值就在于验证:找到计算逻辑之后,还能拿原程序的行为和编译结果来对照。

2. Notion:复制内容如何穿过多个进程

这个案例从界面进程的剪贴板接口开始,沿着预加载脚本和进程间通信,追到主进程,并检查富文本剪贴板格式。

对开发者来说,这样的路径比一句“用了剪贴板 API”更有帮助。它能解释请求经过哪里、格式在哪里处理、不同部分怎样协作。

3. TH04:追到老游戏的角度计算

这个案例检查 PC-98 游戏的 16 位指令,恢复固定角度和瞄准角度的计算,并把重建的 C++ 与历史编译器输出进行比较。

从桌面应用到老游戏,REA 展示的是同一种做法:提出具体问题,追到相关逻辑,再用证据验证理解。

四、怎么开始?

先准备 Node.js 和 npm。项目当前支持 Node.js 22.x(至少 22.19)、24.x(至少 24.11)或 26 及以上版本;23、25 和预发布版本不在支持范围内。

安装配置入口是:

BASH
npx rea-agents setup

选择你的 AI 助手,查看并批准配置变更,完成后重启助手。这个过程会注册 REA 的 MCP 服务,并安装配套的调查指引,还会备份已有配置。

随后,把目标和问题说清楚。比如分析自己的 Electron 应用时,可以这样提问:

请分析这个应用的搜索功能,从界面入口追到数据处理逻辑,给出关键文件和调用证据,并区分已确认的结论与仍需验证的推断。

任务越具体,结果越容易核验。先盯住一个功能,通常比一上来要求“还原整个软件”更有用。

五、值得关注的,是有证据的理解

REA 的吸引力在于,它让 AI 的解释有了可以继续追问、逐步核验的依据。读懂陌生软件、排查旧系统、研究互操作方式,或做软件保存时,这种能力都很实用。

也要分清两件事:反编译得到的伪代码不等于原始源码;REA 的本地分析结果会交给 AI 助手,后续数据处理仍取决于所用模型服务的数据政策。

REA 自身采用 MIT 许可证,外部分析工具仍遵循各自的许可证。它面向合法研究、教育、互操作和软件保存,分析对象应是你拥有或获准检查的软件。

如果你已经在用 AI 写代码,REA 值得关注的地方,是让这个助手还能帮你弄清楚:一个已经存在的功能,究竟是怎样运转的。

项目地址:https://github.com/morluto/rea

官网与案例:https://rea.tools/

相关学习资料