ARTICLE · 1178572
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. 研究组只记录外部行为、输入输出、错误条件和测试用例; 2. 产出不含原始代码的 SPEC.md与证据目录;3. 实现组不接触原二进制的伪代码和反编译文本,只读行为规格; 4. 使用自己的架构、命名和代码实现; 5. 用黑盒测试验证兼容性; 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 -v2. 为研究目标建立隔离环境
分析未知二进制时,不要在装有生产凭据和个人资料的主系统直接运行。优先使用:
• 独立虚拟机或一次性分析主机; • 非管理员、低权限账户; • 无生产密钥、钱包和浏览器会话; • 限制网络与共享目录; • 对输入文件记录 hash,输出证据单独保存。
REA 的 provider bridge 使用 capability token 和当前用户 socket,但官方明确说明:这不是沙箱。恶意进程若已在同一 OS 用户下运行,或底层分析器解析恶意文件时出现漏洞,REA 无法替你隔离风险。
3. 明确允许研究的范围
先写一个 SCOPE.md:目标文件、授权来源、允许的分析方式、禁止提取的数据、输出用途和删除期限。没有清楚 scope,就不要开始。
六、安装与验证:先看计划,再批准写入
官方最简安装命令是:
npx rea-agents@latest setupsetup 会检测支持的 Agent,展示拟议修改,并等待批准;它会注册 MCP Server 和匹配的工作流指令,也会为已有配置创建备份。Hopper 是独立的可选项,不应在不理解许可证和安装来源时自动同意。

安装后完全重启 Agent,再运行只读诊断:
npx -y rea-agents@latest doctor --client claude_code --jsondoctor 只检查配置与依赖,不会修复或更改系统。若需要永久 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 --jsonAndroid
需要完整 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. 阅读官方 README、installation 与 SECURITY.md; 2. 在隔离目录运行 setup 的 dry-run/计划,理解它会修改什么; 3. 安装后运行 doctor; 4. 使用官方 Notes 示例,而不是商业软件; 5. 只调查一个小功能; 6. 写 EVIDENCE.md和UNKNOWN.md;7. 从行为写 SPEC.md;8. 在新目录独立实现; 9. 使用未见过的输入验证; 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















































































