夜雨聆风学习资料网

ARTICLE · 1154348

逆向任何东西?!没源码也能把算法逐字节扒出来?

逆向任何东西?!没源码也能把算法逐字节扒出来?
工具推荐2026-10-10
逆向任何东西?!没源码也能把算法逐字节扒出来?

看到竞品或某个开源软件里一段拍案叫绝的功能,想搞明白它底层是怎么跑起来的,往往是工程师最头疼的时刻。手里只有一个编译好的二进制可执行文件,或者一堆压缩混淆过的 ASAR 资源包,既没有源码,也没有开发文档。

过去遇到这种硬骨头,逆向工程基本是少数极客的专属手艺。在电脑里装上 IDA Pro、Ghidra 或 Hopper,对着几万行反汇编指令和支离破碎的伪代码看上两三天,最后往往以眼花缭乱、放弃告终。

最近在开源社区蹿红的 REA(全称 Reverse Engineer Anything,morluto/rea,MIT 协议)把这套门槛打碎了。它把整套逆向工具链包装成了标准的 MCP 服务,专门给 Claude Code、Codex、Cursor、Windsurf 这类代码 Agent 递了一把通用的螺丝刀。

毒舌时间

以前想拆别人家玩具,得自己去焊电路板;现在倒好,直接把全套瑞士军刀塞进大模型嘴里。

01
能拆什么:从原生二进制到桌面端全盘通吃

很多人以为这又是一个套壳调用 LLM 瞎猜逻辑的玩具,但翻开架构会发现,REA 在底层做的是实打实的静态分析和逆向桥接。

1. 原生二进制文件

对于 Mach-O、ELF、PE 格式乃至 16 位的 DOS 程序,REA 并不会自己闭门造车写一套反编译内核。它在后台直接桥接宿主机已有的 Hopper、Ghidra 或 IDA Pro。

Agent 在分析时不需要用户手动操作反编译器界面,而是通过 MCP 工具直接调用底层的反编译桥,自动提取出关键函数的伪代码、汇编指令、字符串常量以及交叉引用表。

▲ REA 桥接 Hopper 分析原生二进制

2. JavaScript 与 Electron 桌面应用

分析现代桌面软件时,很多时候用不着搬出重量级反编译引擎。REA 对桌面端生态做了深入的原生支持。

面对 Electron 打包产物,它能免原生分析引擎直接解包 ASAR 文件。通过内置的 Babel 语法解析器,工具能在静态层面还原 JavaScript 抽象语法树(AST),抽离模块依赖关系与导出结构。它还能自动理清 Preload 预加载脚本、渲染进程与主进程之间的 IPC 通信边界。

3. 多架构与运行时覆盖

除这两类最常见的目标外,REA 还把触角伸到了更广泛的技术栈:

▸ .NET 程序集:静态解析元数据、CIL 字节码指令并对比构建产物。

▸ Android APK:借助无界面 JADX 和 JDK,提取清单文件、类与反编译方法。

▸ 嵌入式固件:在 Linux 环境下对接 Binwalk 与 Unblob,完成固件解包。

▸ 交互式进程捕获:利用原生 PTY 伪终端捕获命令行的交互输入、输出与退出状态。

毒舌时间

把二十年前的 DOS 游戏和如今动辄几百兆的 Electron 烂摊子都包圆了,这工程脏活干得够扎实。

02
怎么用:一行命令接入与证据驱动

这套工具把复杂的配置流程压缩成了一步交互式命令。

安装与智能体配置

本地只要准备好 Node.js 环境,在终端执行安装向导:

bash

npx rea-agents setup

向导会自动扫描系统里已有的 Agent 客户端(涵盖 Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、Windsurf 等),展示计划修改的配置清单并自动备份原始配置。用户确认后,它会写入 MCP 服务端配置并注入配套的逆向调查 Skill。

如果希望在终端作为日常命令行工具使用,也可以全局安装:

bash

npm install --global rea-agents

rea --help

证据驱动的逆向重构

REA 的核心设计原则是拒绝大模型幻觉。它的核心是证据链(Evidence)机制。

Agent 不允许凭空捏造功能实现。当你在聊天窗口给 Agent 派发任务(例如“弄清 Notes 应用的搜索功能如何工作并给出复刻方案”)时,Agent 会通过 MCP 多轮调用 REA 的工具链:

1. 检查目标应用的入口与导出结构;

2. 定位到关键函数调用并提取对应的汇编或伪代码;

3. 将提取到的代码片段、函数地址、数据流和未确定的边界作为证据返回给 Agent;

4. Agent 基于这些确凿证据,用干净的现代代码在你的工程里重新写出对应功能,并附带自动化测试。

▲ DX-Ball 声音平移、Notion 剪贴板桥接与 TH04 弹幕环案例

官方仓库公布了几个颇具代表性的真实案例:

▸ DX-Ball 声像算法还原:顺着声效调用路径追踪到根据球体坐标计算立体声平移的辅助函数。Agent 检查指令后,将残缺伪代码转写为完整的 C 语言实现,不仅通过了 3,205 组原始 x86 测试用例,还逐字节复现了编译后函数的全部 63 个字节。

▸ Notion 剪贴板跨进程追踪:在没有源码的前提下,顺着渲染进程的剪贴板接口,沿 Preload 与 IPC 通信链一路摸到主进程,摸清了富格式剪贴板数据的底层流转。

▸ TH04 弹幕计算复原:翻查 PC-98 老游戏里的 16 位汇编指令,完整还原了固定角度与瞄准角度的数学计算,并将重构出的 C++ 代码与当年旧编译器的输出进行了逐项比对。

03
注意事项:三条泼冷水红线

工具虽强,但在上手之前,有三处工程与合规红线必须看清:

第一,深层原生反编译依然死绑本地逆向引擎。静态分析 JavaScript、Electron 和 .NET 确实可以零配置白嫖,但只要涉及 C/C++ 等编译型二进制,你机器上必须装有 Hopper、Ghidra 或 IDA Pro 中的至少一款(macOS 上 setup 经授权可协助安装 Hopper)。

第二,运行环境版本卡得很死。该工具强制要求 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+。常用的 Node 20 以及奇数维护版本(如 Node 23、25)统统不受支持,环境不匹配会在第一步直接报错。

第三,数据边界与法务红线。虽然所有分析过程均在本地机器执行,但被 REA 提取出来的代码片段和反编译证据,最终会作为 MCP 工具调用的返回结果送进大模型的上下文。也就是说,相关数据受你所使用的模型提供商的数据协议管辖。更关键的是,反编译受版权保护的商业软件有着严格的法律红线,切忌越界乱用。

猫话 · 总结

翻译成猫话:这是给 Agent 装了套万能开锁器,但锁能开,不代表别人家的门你可以随便进。

耄耋今日心情 · 惊讶
往期回顾
01
让 AI 全面接管代码?先用控制架构立规矩
精选文章
02
Answer me with HTML:省 8 倍 Token 秒出单页图文
工具分享
03
什么是Jev:颠覆LLM的快思考模型
精选文章

相关学习资料