一个编码智能体被问起闭源应用怎么运作,它会滔滔不绝地解释,至于它到底读没读过代码,没人知道。REA(Reverse Engineer Anything)想解决的就是这件事:给智能体配上真正的分析工具,让每个答案都带上证据。
![]()
它确实火了。从2026年4月14日到10月18日,这个项目在GitHub上拿下304,554颗星,是Ghidra的90,126颗的三倍多。10月10日,rea.tools在Hacker News上的提交冲到808分。
星标不等于靠谱。有人拿REA 6.5.0跑了一个自己能读到源码的应用,结果很分裂:渲染器API映射得分毫不差,一个与安全相关的设置却被整个跳过。
它到底给智能体加了什么
全部东西装在一个npm包里,叫rea-agents,MIT协议,包含命令行工具、智能体技能和一个MCP服务器。一条npx rea-agents setup就能接进Claude Code、Codex、Cursor、Gemini CLI、Grok Build或任何MCP客户端,改动过的配置文件会留备份。rea mcp doctor检查在测试机上列出了207个工具和6个提示词。
它自己不反编译。原生二进制交给已安装的Hopper、Ghidra或IDA,安卓走JADX,离线检查用Rizin或GNU objdump。Electron和JavaScript应用、.NET程序集、Go或Rust二进制的构建信息、HAR抓包,REA用自带的解析器,不需要额外引擎。
有一点必须先记住:分析在本地,对话不在本地。REA的FAQ写明,智能体拿到工具结果,而“它的模型提供方有自己的数据政策”。换句话说,云端模型能看到REA提取出来的任何代码。
测试是怎么做的
目标选的是T3 Code,一个MIT协议的Electron应用,用来控制Claude Code、Codex这类编码智能体,有28,088颗星。v0.1.0版本于2026年10月15日从提交81493ef发布,这意味着REA的每一条发现都能和二进制背后的确切源码对照。
开局先坏了两件事。REA的engines字段跳过Node 25,要求22.19+、24.11+或26+,于是换到Node 24.22.0。接着它用artifact_integrity_mismatch拒收了应用归档,原因是一个原生.node插件与记录的哈希对不上。报错信息本身就提示了解法:加--integrity-policy record-and-continue,再用--source-path把范围限定到应用自己的两个bundle。
范围限定很关键。分析整个归档花了227秒,覆盖2,665个文件、约850万个AST节点,最后撞上REA约2GB的结果上限。只限应用自身的两个bundle,35秒跑完,报告了4个窗口、121个暴露的桥接成员、207次渲染器IPC调用,主进程处理器只找到10个。
对得上的地方
T3 Code通过Electron的contextBridge向界面暴露一个对象desktopBridge。REA列出121个成员,含嵌套成员。用Babel解析v0.1.0标签里的真实preload.ts,两份清单逐项比对:121个全部匹配,0个遗漏,0个虚构。
窗口设置也对。三个用字面量选项构建的窗口都启用了contextIsolation: true、nodeIntegration: false和sandbox: true,与源码一致。第四个是主窗口,选项来自一个经包装函数传入的变量,REA把它标为dynamic而不是瞎猜。这个判断是对的,但也意味着最重要的那个窗口仍然得人工去读。
掉链子的地方
IPC的画面是歪的。REA找到的10个处理器里,9个位于打包进应用的登录库@clerk/electron,207次渲染器调用中只有1次被匹配到处理器。T3 Code通过一个把通道名当变量传的通用包装器注册自己的处理器,REA把这132个操作计为未解析,而不是编一个映射出来。态度诚实,但粗心的智能体可能把摘要读成“这座桥大部分通向虚空”。
更大的缺口在这里:T3 Code在will-attach-webview处理器里为应用内浏览器预览关掉了contextIsolation,沙箱保持开启,好让选择器脚本与页面共享globalThis。这段代码未压缩地躺在交付的main.cjs第113,485行,而这个字符串在REA产出的186MB证据里一次都没出现。REA理解窗口构造函数,不理解事件处理器里后来被修改的偏好设置。
装之前要知道的事
模型可能拒绝。Hacker News帖子里有评论者说,哪怕只是暗示逆向工程,Anthropic和OpenAI的模型都会“对拒绝极其敏感”,没有任何工具能改变这一点。
安装是智能体驱动的:官网建议把一条安装指令粘进智能体,同帖有人把这比作curl | bash。它确实会在执行前展示计划,但先在临时文件夹里试CLI更稳妥。
许可证仍然有效。REA的README写明,IDA Pro、Hopper、JEB这类商业工具必须合法获得,免责声明也说项目不会帮任何人绕过DRM、许可证检查或反作弊系统。项目迭代很快:2026年7月12日以来发了32个npm版本,10月里6.1.0到6.5.0六天之内落地,任何无人值守运行的地方都要锁版本。
更安全的试法
- 从有已知源码的目标开始,比如开源项目或自己写的东西。
- 把rea-agents@6.5.0放进一次性目录,先跑rea doctor,再注册给智能体。
- 用--source-path把分析限制在应用自身的bundle。
- 先读证据的局限和dynamic计数,再看智能体的摘要。
- 自己搜一遍bundle里REA不建模的东西,比如will-attach-webview。
证据指向无法解析的压缩代码时,JavaScript Deobfuscator能帮上忙;应用附带.map文件时,Source Map Decoder能把打包后的行映射回原始文件。
选型上:Electron、安卓、原生代码混合目标用REA;已经付费买IDA Pro的用IDA Pro MCP;没有预算的原生二进制用Ghidra上的GhidraMCP;Electron安全审查用REA看桥接和窗口,再人工过一遍事件处理器;代码不能出内网的,REA配本地模型。
REA让反编译器变成智能体能操作的东西,还给答案附上收据。这次测试里,收据在REA看得见的地方分毫不差,在看不见的地方一片空白。所以有用的习惯是:追问这个工具从没看过什么。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.