Wink Pings

44万星的逆向工程MCP:先别信解释,先看它指到哪

REA把Claude Code、Codex这类agent接到二进制、Electron、.NET、APK和网站上,号称能解释功能怎么实现。推文说44万星,README写40万星。社区已经在问混淆二进制、上下文开销和误解释。拿自己写的app试,比看星数有用。

一个叫REA的MCP server在X上被推。推文说它让Claude Code、Codex、Antigravity这类agent把应用拆开,解释到二进制层。GitHub星标被写成440,000。

REA推文配图

仓库在GitHub,npm包叫rea-agents,官网是rea.tools。README写MIT许可,推文写100% Open Source。

星数先放一边。推文写440,000,README的星标历史区写的是400,000星感谢。有回复提到仓库约有1700个开放issue,这个数字来自网友Jas,不是官方统计。星数跑得快,解释错得也顺,这两件事要分开看。

它解决什么痛点?看到一个功能想在自己产品里复刻,没源码;接手一套没人敢动的旧内部工具;追一个崩溃却读不懂二进制;移动应用把API key留在包里;桌面应用导出CSV时丢了一列,找不到在哪丢的。Justice U在回复里问的正是最后一个场景。

REA把agent接到一组检查工具上,目标包括原生二进制、JavaScript和Electron应用、.NET程序集、网站、Android APK、固件、模型文件、SQLite数据库、WASM、EVM字节码等。分析在本地跑,结果带证据和限制。README明确说,静态JavaScript和.NET检查只读文件,不运行应用;运行时捕获会以你的用户权限运行或交互目标。

REA在Hopper里启动分析桥检查原生二进制

安装不复杂。装好Node.js和npm,跑:

npx rea-agents setup

选择agent,审查它要改的配置,批准,重启agent。原生分析可以复用已有的Hopper、Ghidra、IDA或Kuna;静态JavaScript分析不需要原生分析引擎。CLI也能直接跑:

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

原生分析要先配置provider。商业工具许可证要自己搞定。README写得很直白,IDA Pro、Hex-Rays、Hopper、JEB的授权得合法取得,REA不提供license、key或激活。

REA调查流程:agent提问,REA检查并追踪,agent用返回的代码、引用和未知项去解释、实现、测试

工作方式不神秘。agent通过MCP调用REA检查目标、追踪相关代码,REA返回发现和证据。agent拿这些结果追问、解释行为,或者写实现并测试。CLI走同一套流程。

上下文开销是真实问题。Aakash Pawar问,二进制层返回给agent的内容有多大。Ofek Shaked担心工具描述本身占掉半个窗口。README说MCP默认用紧凑输入schema降低上下文开销,完整输出schema默认开启;如果客户端顶不住tools/list帧,可以切紧凑或关闭输出schema。实际占多少,得看注册后的工具列表和一次真实分析。

REA案例:DX-Ball声音声像、Notion剪贴板桥、TH04弹幕环

README给了几个案例。DX-Ball里,调查声音调用,跟进位置到声像的helper,看指令,把不完整伪代码变成C。重构通过3,205个原始x86用例,复现全部63个编译函数字节。Notion案例追Electron剪贴板桥,从renderer的剪贴板API穿到preload、IPC和主进程,检查富剪贴板格式。TH04案例看PC-98游戏的16位指令,恢复固定和瞄准角度计算,再和历史编译器输出对比。案例页在showcase。

它还能拿录制的web app会话建RL环境,把API请求和响应变成agent能调用的工具,用AgentEnv跑。指南在这里。

质疑也得摆出来。Harry Tandy问,遇到加壳或混淆的二进制还成不成,还是只在干净构建上有效。Invariant问,剥离符号的二进制能不能解释。这两个问题决定它在真实世界里的上限。John Rood的说法更直接:有用的输出不是解释,是地址。错误解释和正确解释读起来一样顺,所以要让agent说出它指向的函数,再去核对。Gaurav Bhowmick建议先审计星数,再拿自己写的app测试,看它解释错什么。

安全建议也有。Mohammad Vazin说放进一次性VM,别放在存着SSH密钥的笔记本上。理由不复杂:把agent指向未知二进制,早晚它会想执行一下看行为。README也区分了静态检查和运行时捕获,前者读文件,后者会跑或交互。未知目标放隔离环境,这条不过分。

星标历史图在这里:

REA GitHub星标历史

想试的话,别先找最复杂的闭源软件。拿自己写的app,或者那套没人维护的旧工具,在VM里跑。问它一个具体功能怎么实现,要求给出函数名、地址、证据和未知项。解释可以错,地址和证据能核对。星数不是证据。

发布时间: 2026-11-10 19:31