夜雨聆风学习资料网

ARTICLE · 1178572

REA 完整入门:让 AI 读懂软件,逆向工程

REA 完整入门:让 AI 读懂软件,逆向工程

编者说明:本文根据 codila(@0xCodila)的长文,结合 REA 官方仓库、安装文档、安全策略与官方案例重新核验和编写。原文标题使用了“免费获得任何东西”“最危险仓库”等传播性表述,并出现“免费使用付费指标”“复制网站”等不当示例。本文保留合法研究、互操作、安全审计、软件保存与 clean-room 独立实现方法,删除绕过付费、复制专有代码或攻击未授权目标的操作性内容。具体项目仍应遵守所在地法律、许可证、合同与服务条款。

过去,逆向一款应用通常意味着:先识别文件格式,再找字符串、符号和入口函数,在反编译器里不断交叉引用,最后写脚本验证猜测。门槛不只来自汇编语言,更来自大量工具切换和证据整理。

REA(Reverse Engineer Anything)把这套工作流接入了 AI Agent。你可以用自然语言提出一个具体问题,Agent 通过 REA 调用本地分析器,沿函数、IPC、网络、资源与运行时行为收集证据,再给出“已确认、推断、未知”的结论,必要时继续构建和测试一个独立实现。

这确实改变了软件研究的效率。但它没有让版权、访问控制、商业秘密和许可证失效,也不会把服务器端逻辑凭空下载到你的电脑。AI 降低的是分析成本,不是法律和工程约束。

一、REA 到底是什么

REA 是一个开源 MCP Server + CLI,把 Claude Code、Codex、Cursor、Gemini CLI 等 Agent 与多种逆向分析工具连接起来。

官方定位可以概括为三步:

你提出关于本地目标的问题        ↓REA 调用适合的分析器,追踪代码和行为        ↓Agent 用证据解释、独立实现并验证

它不是一个“万能反编译器”。不同目标仍依赖不同 provider:

  • • JavaScript / Electron:可分析模块、导入、source map、路由、IPC 与原生扩展;
  • • 原生二进制:借助 Hopper、Ghidra 或 IDA 查看伪代码、汇编、符号、字符串与调用关系;
  • • .NET:读取元数据、CIL 指令和原生依赖;
  • • Android APK:借助完整 JDK 与 JADX 分析 Manifest、类、方法与引用;
  • • 网站与 HAR:观察页面结构、脚本和保存的网络请求/响应;
  • • EVM bytecode、固件、WASM、崩溃记录和进程行为:使用对应的受支持工作流。

截至本文核验时,官方 npm 包版本为 6.4.0,使用 MIT 许可证;仓库活跃度很高,但 Star 数不是安全性、准确性或法律许可的证明。

二、它真正带来的变化:从“读代码”变成“追问题”

传统逆向常从文件和函数开始;REA 更适合从一个边界清楚的问题开始:

  • • 点击“导出”后,文件最终写到哪里?
  • • 一个 Electron 应用如何从 renderer 通过 preload/IPC 调用系统剪贴板?
  • • 两个版本之间,某项公开功能的实现路径发生了什么变化?
  • • 一个本地程序崩溃前经过了哪些调用路径?
  • • 自己的旧程序丢失源代码后,某个数据格式如何解析?

问题越具体,证据链越可靠。反过来,“重建整个应用”“找出所有漏洞”“复制所有高级功能”通常范围过大,容易造成幻觉、误归因和法律风险。

官方案例体现的也是“小问题、强证据、可验证”:

  • • DX-Ball:追踪位置到声像的计算,重建函数并用原始 x86 样本验证;
  • • Notion:沿 Electron renderer、preload、IPC 到 main process 追踪剪贴板桥;
  • • TH04:分析 PC-98 的 16 位指令,恢复弹幕角度计算并与历史编译结果比较;
  • • Aegis:分析 TOTP 行为并用测试向量验证独立实现。

三、最重要的分界:理解行为,不等于拥有代码

“我能看到程序行为”与“我可以复制和发布它”是两回事。

可以作为合理起点的场景

  • • 你拥有源程序、二进制或明确书面授权;
  • • 为互操作性研究文件格式或协议;
  • • 对自己的应用做安全审计、恶意行为排查和版本比较;
  • • 保存和迁移已停止维护、且你有权处理的软件;
  • • 根据公开行为写出新的、独立代码,并遵守相关许可证和商标要求;
  • • 在授权范围内开展漏洞研究和负责任披露。

高风险或明显不应做的场景

  • • 绕过订阅、许可证检查、DRM 或付费功能;
  • • 发布反编译得到的专有源代码、模型权重、密钥或私有资源;
  • • 对不属于你的系统绕过访问控制或主动攻击;
  • • 把第三方角色、美术、关卡、数据或商标一起打包发布;
  • • 根据内部实现逐行改写,声称是“自主开发”;
  • • 未经允许把私有二进制和分析结果发送给云端模型。

不同司法辖区对互操作、fair use、技术保护措施和商业秘密的规则不同。Sega v. Accolade、Sony v. Connectix 等历史案例说明,某些为互操作而进行的中间复制可能受到保护;它们绝不是“任何逆向都合法”的通行证。

四、clean-room 不是一句免责声明,而是一套隔离流程

如果目标是实现兼容功能,最稳妥的工程模式是 clean-room:

  1. 1. 研究组只记录外部行为、输入输出、错误条件和测试用例;
  2. 2. 产出不含原始代码的 SPEC.md 与证据目录;
  3. 3. 实现组不接触原二进制的伪代码和反编译文本,只读行为规格;
  4. 4. 使用自己的架构、命名和代码实现;
  5. 5. 用黑盒测试验证兼容性;
  6. 6. 保留人员、文件访问与提交历史,证明隔离过程。

一个 Agent 自己“先看反编译结果,再照着重写”通常不符合严格 clean-room。模型上下文会把研究和实现混在一起。若项目具有商业或法律风险,应使用不同会话、不同仓库、不同权限,必要时由不同人员完成。

所谓“Adobe/Office 的免费替代品”也不能只凭社交媒体推文认定为反编译成果。独立开发者可以做相似类别的软件,但是否真正 clean-room,要看证据隔离、依赖、素材、测试来源与许可证,而不是看界面是否相似。

五、安装前先做三项准备

1. 确认运行时

官方当前支持:

Node.js 22.x(≥22.19)Node.js 24.x(≥24.11)Node.js 26+

Node 23、25 和预发布版本不在支持范围内。安装前先检查:

node -vnpm -v

2. 为研究目标建立隔离环境

分析未知二进制时,不要在装有生产凭据和个人资料的主系统直接运行。优先使用:

  • • 独立虚拟机或一次性分析主机;
  • • 非管理员、低权限账户;
  • • 无生产密钥、钱包和浏览器会话;
  • • 限制网络与共享目录;
  • • 对输入文件记录 hash,输出证据单独保存。

REA 的 provider bridge 使用 capability token 和当前用户 socket,但官方明确说明:这不是沙箱。恶意进程若已在同一 OS 用户下运行,或底层分析器解析恶意文件时出现漏洞,REA 无法替你隔离风险。

3. 明确允许研究的范围

先写一个 SCOPE.md:目标文件、授权来源、允许的分析方式、禁止提取的数据、输出用途和删除期限。没有清楚 scope,就不要开始。

六、安装与验证:先看计划,再批准写入

官方最简安装命令是:

npx rea-agents@latest setup

setup 会检测支持的 Agent,展示拟议修改,并等待批准;它会注册 MCP Server 和匹配的工作流指令,也会为已有配置创建备份。Hopper 是独立的可选项,不应在不理解许可证和安装来源时自动同意。

安装后完全重启 Agent,再运行只读诊断:

npx -y rea-agents@latest doctor --client claude_code --json

doctor 只检查配置与依赖,不会修复或更改系统。若需要永久 CLI:

npm install --global rea-agentsrea --help

升级时不要只更新 npm 包;还要重新运行 setup,审查并刷新 Agent 注册和 Skill。卸载默认只移除 REA 自有注册与指令,不会删除 Hopper、Node.js 和无关文件;--purge-data 才会额外清理 REA 缓存与状态。

七、第一项练习:官方 Notes 示例

不要拿商业软件开局。REA 官方提供了一个小型 Notes 示例,用来学习证据追踪。

目标问题可以是:

点击“Export notes”后,文件写到哪里,包含哪些字段?请给出相关文件、函数和行号;把确认事实、推断与未知项分开。

合理的调查路径是:

renderer.js 处理按钮       ↓preload.js 暴露受控桥接       ↓IPC 发送 notes:export       ↓main.js 处理并写出 notes.csv

这项练习的重点不是结论,而是学习怎样要求证据:文件路径、函数名、调用关系、原始字符串、工具输出与尚未证实的部分。

八、不同目标需要不同 provider

JavaScript / Electron

通常只需 Node.js/npm。可对解压目录或 ASAR 运行静态分析:

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

静态分析不会自动运行应用,但仍要确认文件来源与许可证。

原生程序

需要 Hopper、Ghidra 或 IDA。Ghidra 的版本、JDK 与平台支持以官方安装文档为准,不应照搬过期推文中的固定版本。设置 provider 后先运行:

rea doctor --provider ghidra --json

Android

需要完整 JDK 与受支持的 headless JADX。先检查 Manifest、权限、导出组件、SDK 和网络域名,再决定是否深入方法与调用关系。

网站与网络记录

网站分析使用 Chrome 系浏览器;保存的 HAR 可能包含 cookie、Authorization header、请求正文和个人数据,分享前必须脱敏。

九、可靠的主流程:Investigate → Spec → Build → Verify

原文最有价值的部分,是把逆向结果变成一个可验证的独立实现。建议拆为四个阶段。

1. Investigate:调查

提出一个具体问题,收集证据。每条结论标注:

claim: 导出文件包含 id 与 titleevidence:  - path: main.js  - function: exportNotes  - lines: "..."confidence: highunknowns:  - 不同平台的默认下载目录是否一致

2. Spec:写行为规格

SPEC.md 只描述:输入、输出、状态转换、错误条件、边界用例和可观察行为。不复制专有代码、内部命名或非必要资源。

3. Build:独立实现

在新目录或新仓库实现,选择自己的架构与依赖。高风险项目使用隔离实现组或独立 Agent 会话。

4. Verify:验证

用原先未参与实现的测试样本比较行为;记录不一致,而不是让模型悄悄修改规格来迎合结果。

官方 MCP 还提供多个指导工作流,例如功能调查、版本比较、重建验证、崩溃追踪、剩余未知项审计和受限运行捕获。名称和可用参数应以你安装版本返回的 tool catalog 为准。

十、四个合规且实用的日常场景

场景 1:审计自己拥有的 APK

检查权限、导出组件、第三方 SDK、网络域名与明文配置。报告必须给出 Manifest、类、方法或字符串证据。发现可疑点后进行人工验证,不要直接把推断称为恶意行为。

场景 2:排查可疑文件

静态检查字符串、导入、持久化位置、网络指示器和解包行为。未知样本始终放入隔离环境;不要为了“看它做什么”直接双击运行。

场景 3:审计自己部署的 EVM 合约

从 runtime bytecode 恢复 selector、可变状态方法和权限线索,关注 mint、pause、blacklist、fee 与 owner-only 操作。反编译名称往往只是猜测,最终要结合交易记录、storage 和源码验证。

场景 4:恢复遗留软件或实现互操作

企业失去源代码、旧文件格式无人维护、两个系统需要数据互通,这些是 REA 很现实的价值场景。目标应是最小兼容层,而不是复制整套产品。

十一、专业工作流必须补上的工程纪律

证据文件进入 Git

保存目标 hash、REA 版本、provider 版本、调查问题、证据导出、SPEC.md、测试结果与未知项。长任务可跨会话恢复,也能解释结论如何产生。

验证者与研究者分离

研究 Agent 容易相信自己的解释。另开一个 fresh-context verifier,只读规格、证据与测试,主动寻找反例。

测试测试本身

错误的比较脚本可能让错误实现全部通过。使用已知正例、已知反例、边界输入和差分测试,确认验证器能抓住故意植入的错误。

保留未知项

逆向不是把所有问号变成肯定句。UNKNOWN.md 应记录无法定位的服务器逻辑、动态下载代码、混淆影响、缺失符号和未覆盖路径。

十二、REA 明确做不到什么

1. 读不到没有交付到本地的服务器代码

客户端最多暴露 API、协议和部分业务规则。银行、交易所或 SaaS 的服务端实现不会因为安装 REA 就出现。

2. 反编译结果不是原始源码

优化、内联、符号剥离、混淆和编译器转换会丢失大量结构。伪代码是重建结果,必须结合汇编、运行行为和测试验证。

3. 难目标依然困难

大型 stripped C++、自修改代码、内核组件、定制虚拟机和强混淆仍需专业知识与大量人工判断。

4. REA 不附送商业工具许可证

IDA、Hopper、JEB 等仍受各自许可证约束。使用盗版分析器会把研究项目直接置于风险中。

5. 本地分析不等于完全私密

REA provider 在本机运行,但 Agent 接收的工具结果可能发送给模型提供商。敏感二进制、函数内容和日志进入提示前,要检查企业数据政策与脱敏要求。

十三、可直接使用的安全 Prompt

安装与诊断

使用官方 rea-agents@latest 查看安装计划。不要自动批准任何更改或外部依赖;先列出目标文件、备份路径、provider 与许可证要求。批准后执行 setup,再用 doctor 只读验证。

功能调查

在我明确拥有或获准分析的目标中,调查 [功能]。输出已确认事实、证据位置、合理推断和未知项。不要绕过访问控制、许可证或付费功能,不要导出凭据和个人数据。

Clean-room 规格

根据已批准的黑盒行为与公开接口编写 SPEC.md,只描述输入、输出、状态转换、错误条件和测试用例;不要包含反编译代码、专有命名、受版权保护资源或内部实现细节。

独立实现验证

仅依据 SPEC.md 在新仓库实现兼容功能。完成后由独立验证者运行差分测试,并列出所有不一致、未覆盖路径和许可证依赖。不得读取研究阶段的反编译文本。

版本差异

对我有权分析的旧版与新版执行版本比较。说明公开行为、文件、符号和调用关系的变化,给出证据;不要推断无法从证据确认的商业意图。

十四、一个晚上的正确练习路线

  1. 1. 阅读官方 README、installation 与 SECURITY.md;
  2. 2. 在隔离目录运行 setup 的 dry-run/计划,理解它会修改什么;
  3. 3. 安装后运行 doctor;
  4. 4. 使用官方 Notes 示例,而不是商业软件;
  5. 5. 只调查一个小功能;
  6. 6. 写 EVIDENCE.md 和 UNKNOWN.md;
  7. 7. 从行为写 SPEC.md;
  8. 8. 在新目录独立实现;
  9. 9. 使用未见过的输入验证;
  10. 10. 删除不再需要的目标副本与敏感日志。

结语:软件没有“死”,但理解软件的成本正在下降

REA 的真正意义,不是“所有付费软件都能免费拿”,而是让更多开发者拥有一套证据驱动的软件调查能力。

它可以帮助你理解自己购买和获准研究的软件、恢复遗留系统、做安全审计、实现互操作、验证公开行为,并把一次性探索变成可重复工作流。它也可能被滥用于绕过付费、复制知识产权和攻击未授权目标——工具越强,边界越需要被写进执行层,而不是留给模型临场判断。

最可靠的原则只有一句:

研究你有权研究的目标,记录证据,独立实现,验证行为;不要复制代码,不要绕过访问控制,也不要把“能做到”误当成“可以做”。


原作者:codila(@0xCodila[1])原文:REA Reverse Engineering Full Course[2]官方仓库:morluto/rea[3]官方文档:REA Guides[4]安全策略:REA SECURITY.md[5]

引用链接

[1] @0xCodila: https://x.com/0xCodila[2] REA Reverse Engineering Full Course: https://x.com/0xCodila/status/2109623431763292649[3] morluto/rea: https://github.com/morluto/rea[4] REA Guides: https://rea.tools/guides/[5] REA SECURITY.md: https://github.com/morluto/rea/blob/main/SECURITY.md

相关学习资料