ARTICLE · 1220654
没源码的功能,AI 也能拆:30 万星的 REA,开发者能拿它干什么
你在用某个 App,看到一个功能,心里"咯噔"一下——这个我也想要。
可能是别家客户端那个丝滑的转场,可能是一个离线搜索做得特别快的笔记应用,可能是你买了三年的某个工具里一个顺手的小设计。
问题是:它没开源。
以前的路径基本是三条死路:
• 等官方。等它出 API、出文档、出插件。大概率等不到。
• 自己啃。装 Ghidra、学汇编、对着反编译结果一条条对符号——这门手艺的学习曲线是 3 到 5 年,光搭环境就能耗掉半天。
• 放弃。跟自己说"算了,大概就是这么个实现"。
10 月 GitHub 上有个项目,把这三条路一起改了。
它叫 REA(Reverse Engineer Anything,逆向一切)。4 月建的仓库,前半年没人理;10 月初突然起飞,我在 GitHub API 上实测是 33.3 万 star、8.4 万 fork,连续多日霸榜 Trending,npm 单日下载量从 16 次冲到 10 万以上。
先替它把一句话说清楚,因为这点被太多文章写歪了:
它做的事情很朴素——把自己做成一个 MCP 服务,把你本机早就装好的 Ghidra、IDA、Hopper、apktool、Chrome 这些老工具,统一接到 Claude Code、Codex、Cursor 这类 AI Agent 上。
装它一行:
(要求 Node.js 22.19+ 的 22.x、24.11+ 的 24.x,或 26+)
跑完它会检测你装了哪些 Agent、列出准备改哪些配置文件、备份原文件,你确认才写入。重启 Agent,然后你对它说人话:
它去拆,把结论连同证据交回来,再帮你写实现。
这篇文章讲四件事:它是什么、它能干什么、开发者怎么用、以及用之前必须知道的五条边界。
REA 自己不做分析,它做的是"按目标类型自动路由到对的工具"。README 列出的分析对象有二十多类,挑开发者最常撞上的看:
| 不需要 | ||
| 不需要 | ||
| 不需要 | ||
| 不需要 | ||
| 不需要 | ||
| 不需要 | ||
注意中间那几行标了"不需要"的:Electron、.NET、Go、Rust、SQLite、抓包文件这几类,装完就能用,一行额外配置都没有。对大多数开发者来说,日常真正常用的就是这几类。
这是它设计上很讲究的一处,也是它和"直接把 Ghidra 塞给 Agent"的区别。
REA 返回的每条结论,都按证据强度分级:
• 观察:直接从字节、指令、文件里读到的
• 推导:基于观察推出来的
• 推断:猜的,但有依据
• 未知:明确告诉你"这块我没搞定"
每条还附来源位置(文件、字节区间、行号)和局限说明。
为什么这件事重要?因为反编译出来的伪代码,本质是"翻译的翻译"——编译器先把源码翻成机器码,反编译器再猜回去。猜错是常态。
REA 的做法相当于:翻译官把原文录音和译文一起推给你,你可以自己核对,而不是全信他那段话。
它等于承认了一件事:AI 会猜错,所以得让它把不确定性交出来。在 AI 大量产出结论的年代,可验证性比能力上限稀缺得多。
REA 生态里被讨论最多的,是它带火的两种复刻方法论。
第一种:说明书重写。
把目标软件的功能拆成一本极详细的规格说明,让 AI 对着它从零实现,再逐版对照差异修正。前 Square 工程师 Brandon Thomas 的 Rust 版 Adobe 七件套(ArtCraft)走的就是这条路;团队随后放出的 WordCraft,纯 Rust、不碰 Word 一行代码,只按公开规范重写,上架五天六千多星。
第二种:黑箱实验。
找不到某个功能对应的代码也没关系——先对一个变量做操作,观察另一个变量是否联动,反推功能映射。这是安全研究员的老手艺,过去靠人肉穷举,而 AI 恰恰最擅长这种机械的活。
对开发者的实际意义:"看懂别人的实现"和"做出自己的实现"之间,那堵墙被拆了。
官方案例(README 可查):
• DX-Ball:跟一条声音调用追到它的位置转声道计算函数,把不完整的伪代码补成 C。重建版通过 3,205 组原始 x86 用例,编译后 63 个字节与原函数逐字节一致。
• Notion 剪贴板桥:从渲染进程的剪贴板 API,穿 preload 和 IPC 追到主进程,看清富文本格式怎么跨软件保留。
• TH04:恢复 1997 年 PC-98 游戏里弹幕角的计算,重建的 C++ 与当年编译器输出对照。
社区实测(供参考,非官方):
• 有开发者拆自家智能马桶的微信小程序,约半小时还原蓝牙协议,顺手做了个桌面状态栏遥控器。
• 一位专业逆向工程师拿熟悉的项目对比:SketchUp 文件读写模块,AI 7 分钟,他人肉当年花了一个月;AutoCAD 那个上万行的核心函数,AI 十几分钟给结论,当年卡了他两三天。
• 有人嫌某语音输入工具订阅贵,25 分钟复刻出一个本地免费版。
• 拿 Excalidraw 做对照实验:复刻完拿官方开源代码逐项对答案,30 个常用功能 24 个一致,识别出的组件一个没错。
• KORBEN 用 Claude Code + REA + Ghidra 测了一个自建的假授权程序:2 分钟生成出可用注册码,479 个随机用户名全部通过验证。
这些案例的共同点不是"AI 好强",而是:一条原本需要专业背景的路,被"会描述需求"的人跑通了。
下面每条命令都来自官方文档,可以直接抄。
Electron / JS 应用不需要任何反编译引擎,指向路径就能分析:
一个真实应用的 Evidence 可能有几百 MB(官方举例:334 MB 的 Obsidian)。别直接扔给 Agent 读,先投影出摘要:
想看模块清单,把 view 换成 {"kind": "page", "collection": "modules", "offset": 0, "limit": 32}。
配给 Agent 的话术(这段可以直接抄):
import type / export type 只是源码事实,不产生运行时依赖,REA 会把类型导出名和值导出名分开报——别把类型导入当成真实接口。原生分析需要一个引擎。新手直接用 Ghidra(免费开源),有 IDA / Hopper 更好:
官方标准链路:打开 binary → 搜线索 → XRef → Call Graph → Decompile → 重建功能。
大二进制启动慢,调大引擎超时:REA_GHIDRA_STARTUP_TIMEOUT_MS。引擎有问题先自检:
这条在社区里讨论度很高——你买的设备,搞清楚它怎么通信,技术上已经没障碍了。
用 CDP 那条路可以观察设备配套的 Web 控制面板,用 analyze-javascript-application 可以拆设备厂商的小程序,用抓包工作流可以读 HAR / Fiddler SAZ:
这里有个坑,用 Playwright 的要注意:REA 要的是浏览器暴露的 HTTP 发现端点。如果你的浏览器是被自动化 SDK 用 --remote-debugging-pipe 或私有通道拉起来的,它不暴露这个端点,list_browser_targets 没东西可挂,连接失败报 endpoint_unreachable。
另外官方明确警告:Chromium 可能在 REA 的页面会话断开时清掉别的客户端设的 navigator.platform 模拟。要保模拟配置,就用一次性专用 profile。
拿到一份来路不明的 .dll、一个停服的老工具、一个没有文档的第三方库——先让它给你一份"说明书":
不装 Go、不配反汇编器,直接拿编译器版本、模块名、版本、来源、依赖边、原始字节和 SHA-256。
一个容易误判的点:Rust 二进制里找不到 .dep-v0 段,是"元数据缺失",不等于"这个程序没有依赖"。写审计报告时这句话必须带上。
每次调用都是独立进程,结果可存可复用:
想走 MCP over HTTP,用 rea mcp;接之前先确认生产环境能正常起:
这部分建议你别跳。上面每一篇热门文章都写了泼冷水,不是因为酸,是因为这些坑真的会咬人。
这是非常危险的一条,因为精确的引用会让你信任整份报告。
有开发者拿源码已知的程序做对照:让 REA 分析 50 个函数的调用关系,22 个出现遗漏,而报告仍标记为"完整"。
另一个独立测试(源码已知的开源 Electron 应用):30 处文件和行号全对,IPC 通道找到 18 个(比真实值还多 1 个,因为文本搜索漏了个别名通道)——但 8 个窗口只识别出 1 个,8 处回传位置一处没找到,4 处 nodeIntegration 配置全部漏检。nodeIntegration 是 Electron 安全审计的首要检查项。
老手会自然把工具输出当线索;新手读到带精确行号的报告,很容易把"没提到"理解成"没问题"。
结论:REA 的输出是线索,不是结论。关键结论必须找第二个来源交叉验证。
• 无壳和轻度加壳效果不错;VMP 这类高强度虚拟化加壳基本失效——有实测跑到 54 分钟后宣告失败。
• 不支持动态调试。
• 服务端逻辑完全够不着。那些日活亿级的国民级应用,核心业务逻辑不在你机器上;想靠它"复活关服网游"目前属于异想天开。
• 编译会永久丢失变量名等信息;一个 200MB 的二进制,半小时可能颗粒无收。
官方 SECURITY.md 写得很直白:它不是沙箱。运行时分析会用你当前用户的权限启动或附加目标程序,Frida 脚本在目标进程内执行,拥有该进程的内存、文件和网络权限。
分析来源不明的样本,和双击运行它的风险差不多——请放进虚拟机。
另一件事:REA 走红后几小时内就出现仿冒仓库,已有仿冒包被 VirusTotal 8 个引擎报为恶意。README 顶部专门贴了警告。只从官方 GitHub、rea.tools 和 npm 包装。
• 主分支注册了约 150 个 MCP 工具,光工具定义就往上下文里塞十几万 token。有开发者吐槽:包太重,裸着让 AI 自己装工具干活,反而可能更快更省。
• 社区实测的参考价:国产模型 + REA 跑 8 轮小目标全程不到 20 元;用 Cursor 拆一个普通 APK 不到 5 美元。但真正的成本大头是时间——半小时颗粒无收是常态。
这是被讨论最多、也最容易被"技术很酷"盖过去的一条。
先说净室。这是一个有 40 年历史的老做法:一个团队研究原版、写下它做了什么(行为,不是代码);另一个完全不同的团队只根据这份描述开发新产品,永远看不到原始代码。80 年代初 Compaq 就是这么重构 IBM BIOS 的,花了约 100 万美元。法院也一直站在互操作一边——1992 年 Sega v. Accolade、2000 年 Sony v. Connectix,后者索尼 0-3 败诉,最终模拟器里没有一行索尼的代码。
但 REA 把中间那堵墙拆了。有批评说得很锋利:
在你自己的电脑上读 App 来理解它,这叫学习;根据它的行为用自己的代码重写一个功能,这个行业一直都这么干;而抄袭对方代码、非授权解除付费限制、或者把别人反编译出来的源码发布出去,才会让你吃官司。
另外三件现实的事:
• 模型服务商会拦。已有用户报告用 Codex 跑逆向项目,项目没跑完,OpenAI 账号先被停用。对知名商业软件提问,模型自身的审查经常直接拒绝——REA 装得再好也拿不到第一份工。
• 出圈案例有水分。疯传的"烧 5000 亿 token 逆向《使命召唤》",用的其实不是 REA,是 Hex-Rays 的官方 MCP;所谓"花了二十多万美元"只是按商业 API 现价折算,作者真实消耗是 6000 亿到 7000 亿 token。
• REA 自己的免责声明只支持合法研究、教育、互操作、软件保存,以及分析你拥有或有权检查的软件;不支持绕过许可证校验和 DRM,不支持复制专有软件、复现受保护的代码和资产。想照着商业软件复刻再分发,MIT 协议救不了你——风险在版权和合同层面,不在代码层面。
顺带一句:REA 自己的代码是 MIT,但它不授予任何商业工具授权。IDA Pro / Hex-Rays、Hopper、JEB 的许可你得自己合法取得。
一句话总结:REA 降低的是"看懂"的成本,不是"做好"的成本。
它能帮你搞清楚一个功能大概怎么实现的、调了哪些接口、依赖了哪些包;但从思路到可靠的实现,还是你自己的工程活。
WordCraft 的数字很说明问题:它实现了 88% 的功能区命令,整体完成度只有六成。菜单可以靠 AI 快速铺满,格式兼容是几十年攒出来的深度。AI 压掉的是体力成本,压不掉时间成本。
而更值得想一层的是:REA 真正冲击的不是逆向工程师这个小群体,是"软件壁垒"这个概念。过去软件的护城河有三层——源码不公开、逆向门槛高、法律禁止。现在第二层几乎被抹平。
剩下的两条是:持续迭代的工程能力,和用户数据的网络效应。
客户端能被读懂、被重写,不代表后端、数据和持续的运营也能被拿走。护城河没有消失,它只是从"你看不到我的代码",挪到了"你拿不走我的服务能力和业务理解"。
所以最该警醒的从来不是大厂,是那些功能单一、价格不低、用户又不待见的工具类产品。
下次再看到一个"我也想要"的功能,与其跟自己说算了,不如先跑一行 npx rea-agents setup 试试——记得只拆你有权拆的东西。
仓库地址:https://github.com/morluto/rea,官网 rea.tools,npm 包名 rea-agents。官方中文 README 在 docs/readme/README_zh.md,官方案例在 rea.tools/showcase/。
你有没有那种"一直想要但没源码"的功能?评论区说说是什么,我下一篇可以拿它当实战案例拆。
核心观点:REA 没发明任何反编译技术,它把「会用 Ghidra」降成「会描述需求」,并把每条结论分成观察/推导/推断/未知四级——在 AI 大量产出结论的年代,能把"我不确定"显式说出来的工具,比多拆两个函数更值钱。















































































