夜雨聆风学习资料网

ARTICLE · 1178573

REA:让 AI 智能体逆向一切的软件工程实践

REA:让 AI 智能体逆向一切的软件工程实践

💡 引入:我们都有过这样的经历:特别欣赏某个库,想知道它是如何实现的;或者想在自己的项目里用上某个库,但它不开源,于是只能反编译。(其实,我一直认为:任何代码在内存里都是裸奔的)

📌 导语:REA(Reverse Engineer Anything,GitHub:morluto/rea)是一个开源的 MCP 服务器和 CLI 工具,目标是让 AI 编码智能体在没有源代码的情况下探索应用、解释功能、展示证据,并帮助你在自己的项目中实现类似能力。它支持分析原生二进制文件、JavaScript 和 Electron 应用、.NET 程序集、网站、Android APK、固件、网络嗅探、进程行为等。所有分析均在本机运行,结果附带证据和相关限制。REA 并没有创造新的东西,而是利用 AI 把之前的工作串联起来。 对研发团队来说,这意味着可以更快理解竞品功能、分析遗留系统、实现互操作性,甚至做安全研究(甚至是外挂)。

🧩 一、它解决什么问题

传统逆向工程有三个痛点:工具链分散(Hopper、Ghidra、IDA、JADX、tshark、adb 等各有用法);门槛高,依赖资深逆向工程师;现在,直接问大模型容易得到编造的答案。

REA 的思路是把智能体与工具结合:智能体负责推理、提问、写实现;REA 负责调用分析工具、返回发现和证据;智能体再根据证据继续追问、解释行为,甚至编写并测试代码。REA 不是让 AI 凭空猜测,而是让 AI 带着证据去逆向。

🔄 二、核心工作流

REA 通过 MCP 协议与智能体连接。智能体调用 REA,REA 检查目标并追踪相关代码,返回发现及对应证据。智能体据此提出后续问题、解释行为,或编写并测试实现。CLI 使用同样的工作流,既可让 Claude Code、Cursor 这类智能体自动操作,也可在终端手动执行分析。

架构上,REA 是一个 MCP 服务器,同时提供 CLI 接口,两者共享同一套分析引擎。智能体通过 MCP 调用 REA,REA 在本机调用分析工具,把结果整理成带证据的结构化数据返回;CLI 走同样的流程,只是调用方从智能体换成了人。

一个典型的调查循环是:

  1. 智能体提出一个具体问题(例如“这个函数在做什么”)

  2. REA 调用对应工具检查目标,返回发现和证据

  3. 智能体根据证据决定下一步:继续追问、扩大范围,或开始写实现

  4. 重复直到结论稳定

证据是关键。 REA 返回的不只是结论,还包括支撑结论的原始材料(伪代码、汇编片段、字符串、调用关系、常量值等)和已知限制。这让智能体可以判断结论是否可靠,也让人可以事后复核。

分析在本机运行,目标文件不会上传到 REA 的服务器;智能体收到的是工具结果。 模型提供商有自己的数据政策,但 REA 本身不引入额外的数据外传。

🔍 三、能分析什么

REA 需要 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+,以及 npm。额外工具和主机支持取决于分析目标。

目标
REA 返回的内容
要求
原生二进制
伪代码、汇编、字符串、符号、调用和引用
Hopper、Ghidra 或 IDA
JavaScript / Electron
模块、导入、source map、路由、IPC 和原生扩展关系
Node.js 和 npm
网站
页面结构、脚本、网络观察结果和截图
Chrome 系浏览器
.NET 程序集
元数据、CIL 指令、声明的原生依赖和构建对比
静态检查
Android APK
清单声明、类、反编译的方法和引用
无界面 JADX 和完整 JDK
Android 设备
设备、软件包、进程、日志、转储、截图、APK/文件传输
adb
固件
区域、提取结果和转交原生分析的内容
Linux 上的 Binwalk / Unblob
数据包捕获
端点、DNS、TLS SNI、协议分布和 HTTP 请求
tshark 和 capinfos
进程行为
终端输出、交互、退出和文件系统观察结果
Linux/macOS 原生 PTY

⚡ 四、快速开始

📦 1. 安装并注册

安装 Node.js 和 npm 后运行:

bash

npx rea-agents setup

选择智能体,检查并批准计划中的变更。设置流程会添加 REA 的 MCP 服务和匹配的工作流指引,并备份已有配置。完成后重启智能体。

设置流程支持 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 和其他智能体。

💬 2. 询问智能体

重启后,直接对智能体说:

text

弄清 Notes 应用的搜索功能如何工作,展示证据,并为我的项目实现类似功能。

把 Notes 替换成目标应用,并描述你想了解的功能。

💻 3. 使用终端

检查已解包的 JavaScript/Electron 应用目录或 ASAR 文件:

bash

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

如果需要经常使用,可以全局安装:

bash

npminstall--global rea-agentsrea --help

更新 REA:

bash

rea update

或通过 npx 更新智能体设置:

bash

npx rea-agents@latest setup

🧪 五、真实案例

  • DX-Ball:重建声像计算。 沿声音调用追踪到根据位置计算声像的辅助函数,检查指令,将不完整的伪代码转为 C。重建结果通过了 3,205 个原始 x86 测试用例,并复现了编译后函数的全部 63 个字节。

  • Notion:追踪 Electron 剪贴板桥。 找到渲染进程的剪贴板 API,沿 preload 和 IPC 追踪到主进程,并检查富格式剪贴板数据。

  • TH04:恢复 DOS 环形子弹的计算。 检查原始 PC-98 游戏的 16 位指令,恢复固定角度和瞄准角度的计算,并将重建的 C++ 与当年的编译器输出进行对比。

这些案例说明,REA 不是让 AI 猜代码,而是有验证闭环的逆向工程辅助工具。

🎮 六、Touhou Project 重建:REA 实战记录

REA 官方博客有一篇题为《逆向工程的工业革命》的长文,详细记录了作者使用 REA 和编程助手重建 Touhou Project 系列游戏的完整历程。选择 Touhou Project 作为试验场:这些游戏足够复杂,有明确的行为可以验证,而且已经有社区重建工作的基础。

  • TH08: 从 8 月 13 日启动到 8 月 24 日提交可玩的 Linux 重建移植版,约十一天完成 1,107 个游戏函数的源码还原。

  • TH095: 从 8 月 29 日建立空仓库到 9 月 10 日记录 Windows i386 重建版可玩,约十二天完成全部 697 个函数的源码还原与精确对比。

  • TH04: 在 PC-98 DOS 的 16 位环境下推进,DOS 重建版已可运行并手工通关 Normal 路线,目前正在做原生 64 位移植。

作者启发:

  • AI 辅助逆向的瓶颈不在代码生成,而在验证。

  • 工具需要被工程化:相同的比较用于数百个函数时,一个漏洞的影响可能远大于某个实现中的错误。

  • 工作记忆必须外化:代码仓库要让下一次会话能继续工作,而不丢失上一次决定背后的理由。

  • 速度的意义在于改变了是否开始一个项目的决定。

🏁 结语

REA 把逆向工程从纯手工、强依赖专家经验的工作,变成智能体可调用、可验证、可自动化的工程流程。它不承诺“一键破解”,也不鼓励非法使用;它的价值在于让 AI 在证据约束下理解复杂软件,并帮助研发人员复刻功能、解决问题。

#AI逆向 #REA #逆向工程 #开源项目 #MCP #AI智能体 #Touhou #东方Project #软件分析 #Claude #Cursor #二进制分析 #Electron #Android逆向 #研发效率

相关学习资料