逆向一切的 AI Agent,不用你会后悔一辈子!!!
原创
网络安全透视镜
网络安全透视镜
网络安全透视镜
2026年10月10日 08:45
江苏
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
TOOL · 逆向实测2026.10
AI 面对闭源只能猜
给 AI 装上 眼睛
它就能读二进制了
Hopper · Ghidra · Electron · 固件 · 133 个工具
开源项目 · MIT 协议
OPEN SOURCEMIT 协议
3 个核心看点
滑动
CORE 01
一个 MCP 撑起整条链
架构与工作原理
CORE 02
12 类目标全都能拆
能力与案例
CORE 03
一条命令就能上手
安装与三种用法
看到喜欢的功能,弄清它如何工作。
一直深挖到二进制层面——本篇要讲的,就是这样一个把它做成 MCP 服务的开源项目。
最近看到一个很有意思的开源项目:TypeScript 编写
把 Hopper、Ghidra、IDA、JADX 这些专业逆向工具,全部封装成一个 MCP Server,让 AI 编程智能体(Claude Code、Codex、Cursor、Gemini CLI、Grok Build 等)可以读懂一个应用——即使你手上只有编译后的二进制文件,完全没有源代码。
今天看看:它到底是什么、怎么装、怎么用。 下载地址见文末
01
PART
AI 看不到闭源的东西
THE PROBLEM · 痛点
大模型写代码很强,但它们的学习来源基本是公开的源代码。当你说“帮我实现一个和 XX 应用一样的搜索功能”时,如果 XX 是闭源的、或者是编译成 .exe / .dylib / .so 的原生二进制,或者是被打包压缩过的 Electron 应用,AI 就只能开始编——它会给你一个看起来很像的壳子,但里面的算法、边界条件、魔数一个都对不上。
让 AI 获得读的能力,而不只是写
它不提供代码,它提供证据。
...对比
没有该工具: 实现搜索功能 → AI 编一个大概 → 跑起来全是坑
有了该工具: 实现搜索功能 → AI 去逆向真实 App → 拿证据照着实现
官方文档里有一句话概括得特别准:
分析在本机运行,结果里带着支撑每个结论的证据,也带着这个结论的局限性。
它不靠猜,每一条结论都标明了依据和不确定的地方。
注意 limitations(局限性)这个词——这是 它和市面上大多数“AI 猜一猜”类工具的分水岭。它不装作自己什么都知道,它会明确告诉你哪些是观察到的事实、哪些是推断、哪些还不知道(unknowns)。
02
PART
一个 MCP 撑起整条逆向链
ARCHITECTURE · 架构
2.1 工作原理:智能体在中间,工具在下面
该工具的架构非常克制,可以用官方这张图概括:
— 工作流程示意图中文版:提问 → 检查追踪 → 读证据 → 用起来,带追问回环
翻译成中文就是四步:
| 步骤 | 发生什么 |
|---|---|
| 1. 提问 | 你在智能体里描述目标:应用 / 二进制 / 浏览器页面,加上你关心的功能 |
| 2. 检查与追踪 | 智能体通过 MCP 调用该工具,它驱动本地分析引擎去检查目标 |
| 3. 读证据 | 它返回代码、引用关系,以及明确的未知项 |
| 4. 用起来 | 智能体解释原理、写出实现、并测试 |
关键点在于:第 2 步和第 4 步之间是可以循环的(图里那个 Follow-up question 回环)。AI 看完证据发现“还不够”,会自己追问下一个问题,它继续挖——直到拼图完整。
2.2 下面是真实的 Hopper 界面
这不是概念图,这是 它真的在 Hopper 里跑起来的样子:
— 分析桥在 Hopper 中运行,左侧是反汇编的 EntryPoint 代码,底部终端是分析日志
底层这些真实的反编译产物——伪代码(pseudocode)、汇编指令、字符串、符号表、交叉引用(xrefs)——全部会结构化地返回给智能体。智能体读到的不是截图,而是可检索的文本数据。
2.3 关键设计:CLI 和 MCP 双入口
这一点很多人会忽略,但很重要:
MCP 模式
给智能体用,AI 自动调用
CLI 模式
给你自己用,可以在终端里手动敲,也可以写进脚本做自动化
CMD 该工具 analyze /path/to/program --provider ghidra --json
而且两条路径共用同一套工作流和同一套证据契约——CLI 里看到的结果,和 AI 通过 MCP 拿到的结果,格式和语义是一致的。这一点在工程上非常值钱,意味着你可以先用 CLI 手动摸清楚一个目标,再把结论喂给 AI,或者反过来。
2.4 项目分层架构
它不是一个套壳调 Hopper 的脚本,它的代码本身是一个严格分层的 TypeScript ESM 应用。依赖方向自上而下,最终收敛到无副作用的领域层:
— 分层架构中文版,依据官方架构文档整理绘制
这 8 层的设计意图值得单独说:
| 层 | 职责 |
|---|---|
| 入口层 | CLI 适配器、MCP stdio 服务、可执行分发器。两个入口共用下面所有逻辑,保证行为一致 |
| 生产组合层 | 按需创建 provider 与 session 工厂,依赖只在真正需要时才加载 |
| 适配器层 | MCP 请求翻译、Hopper 桥、Ghidra 桥、安装适配器,隔离外部协议细节 |
| 应用层 | 共享工作流、会话路由、提供方注册表、调查记录、快照缓存。Evidence 和 unknowns 的归属在这里管 |
| 提供方层 | Hopper / Ghidra / IDA、pwntools / EVMole、JADX / Binwalk / .NET、CDP / Inspector |
| 进程基础层 | 受控进程组、Windows 边界、Job Object,保证外部进程不失控、不残留 |
| 契约层 | 调用方可见的入参出参 schema,对外承诺的稳定接口 |
| 领域层 | 纯逻辑:证据、比对、应用图谱。无副作用、不依赖任何外层,因此可独立测试 |
值得留意的一个设计:提供方注册表(AnalysisProviderRegistry)是确定性选择、不自动回退。
也就是说,如果 它选定了 Hopper 但 Hopper 跑失败了,它不会悄悄换用 Ghidra让你误以为是同一个结果。这在安全分析里很重要——引擎换了,分析结论的可信度就变了,必须让你知道。
03
PART
能分析什么
CAPABILITIES · 能力清单
这是 它最让人惊讶的地方。它支持的目标类型之多,超过了大多数商业逆向工具的全家桶范围:
| 目标类型 | 它返回什么 | 需要什么 |
|---|---|---|
| 原生二进制 | 伪代码、汇编、字符串、符号、调用与引用 | Hopper / Ghidra / IDA |
| JavaScript / Electron | 模块、导入、source map、路由、IPC、原生扩展关系 | 只要 Node.js + npm |
| 网站 | 页面结构、脚本、网络观察、按需截图 | Chrome 系浏览器 |
| .NET 程序集 | 元数据、CIL 指令、声明的原生依赖、构建对比 | 纯静态,无需引擎 |
| Android APK | Manifest 声明、类、反编译方法、引用 | 无头 JADX + 完整 JDK |
| 固件 | 区域划分、提取结果、转交原生分析的内容 | Binwalk / Unblob |
| EVM 字节码 | 分派选择器、字节偏移、推断参数、可变性 | 本地原始字节 |
| 离线 ELF 布局 | 节、段、原始符号 / 重定位、静态防护候选项 | Linux x64 + pwntools |
| 进程行为 | 终端输出、交互、退出码、文件系统观察、运行对比 | Linux / macOS + 原生 PTY |
| 软件包与资源 | 文件清单、摘要、plist、Apple bundle 结构 | 静态检查 |
| 已保存的网络捕获 | 请求、响应、可访问载荷、来源位置 | HAR 文件 |
| 已记录的 Linux 崩溃 | 原始 note、各线程寄存器 / 信号、映射候选项 | pwntools,可选 GDB / pwndbg |
从 Windows PE / macOS Mach-O / Linux ELF 原生二进制,到 Electron 应用、Android APK、路由器固件、智能合约字节码,甚至连 16 位 DOS 老游戏(PC-98 时代的 TH 系列)都能分析。
一个细节值得单独提:Ghidra provider 甚至支持 16 位 DOS 程序分析。官方案例里,团队逆向了 PC-98 经典游戏 TH04 的弹幕环形角度算法,然后把重建的 C++ 代码和当年的编译器输出做了逐字节比对。
04
PART
什么叫真的逆向出来了
CASES · 三个官方案例
官方的 Showcase 里有三个案例,我挑最有代表性的讲。
CASE 01
DX-Ball:声像定位算法重建
SOUND PAN · 逐字节验证
追踪一个音效调用,找到根据位置计算声像(sound pan)的辅助函数,检查汇编指令,把不完整的伪代码翻译成 C。
重建代码通过 3,205 个原始 x86 测试用例,并复现了编译后函数的全部 63 个字节。
这不是“看起来差不多”,这是逐字节完全一致。这种级别的验证,只有在真正读懂了汇编的情况下才可能做到。
CASE 02
Notion:追踪 Electron 剪贴板桥
ELECTRON · 多进程调用链
找到渲染进程的剪贴板 API,沿 preload 和 IPC 一路追踪到主进程,检查富文本剪贴板数据格式。
这个案例展示的是 它处理 Electron 多进程架构的能力。Electron 应用的安全性一直是个谜(渲染进程能碰剪贴板吗?能读文件吗?),它能把这层调用链完整还原出来。
CASE 03
TH04:DOS 环形弹幕角度恢复
16-BIT · 老游戏逆向
检查 16 位指令,恢复固定角度和瞄准角度的计算逻辑,再和历史编译器输出对比。
05
PART
安装:一条命令,然后重启智能体
SETUP · 安装上手
5.1 前置条件
运行时
Node.js 22.x(≥22.19)、24.x(≥24.11)或 26+,外加 npm。注意 Node 23、25 和预发布版本不支持。它不会帮你升级 Node、npm 或 Homebrew
逆向引擎
只有原生二进制分析才需要 Hopper / Ghidra / IDA;静态 JS 和 .NET 分析完全不需要任何引擎
5.2 一条命令完成设置
CMD npx 该项目包名 setup
这条命令会做四件事:
1
让你多选要接入的智能体(Claude Code、Codex、Cursor、Gemini CLI、Windsurf、Devin、OpenCode、VS Code、Grok Build 等 13 种)
2
打印出完整的变更计划给你审阅(改哪些文件、备份在哪、有没有外网访问、包管理器会执行什么命令)
3
你批准后才真正写入配置,并注册 该工具的 MCP Server
4
同时安装配套的工作流指令(skill),告诉智能体该怎么用它
几个值得注意的安全设计:
配置安全
配置写入会保留无关条目和注释,用原子替换,并且会创建 .rea.backup 备份。配置文件格式有问题时会阻断整个流程,避免把你的配置写坏
授权边界
检测到已有客户端 ≠ 获得授权:新检测到的客户端默认不勾选,必须你手动选。Hopper 是独立可选的选项,setup 会单独征求批准
只读预览
加 --dry-run 可以看计划但不落地,退出码 0
装完一定要重启智能体。MCP Server 是新注册的,不重启的话会话里看不到这些工具。
5.3 支持的智能体清单
| 客户端 | --client 参数值 |
|---|---|
| Claude Code | claude\_code |
| Claude Desktop | claude\_desktop |
| Codex | codex |
| Cursor | cursor |
| Gemini CLI | gemini\_cli |
| Windsurf | windsurf |
| Devin | devin |
| OpenCode | opencode |
| Antigravity | antigravity |
| GitHub Copilot CLI | copilot\_cli |
| Command Code | commandcode |
| VS Code | vscode |
| Grok Build | grok\_build |
Grok Build 用户注意:setup 会去编辑 ~/.grok/config.toml 里的 [mcp\_servers.rea] 段,并自动设置 startup\_timeout\_sec = 30。共享 skill 装在 ~/.agents/skills,本来就在 Grok Build 的 skill 路径上。
5.4 装全局 CLI
如果想经常在终端里用:
bash
npm install --global 该项目包名
该工具 --help
!小坑提醒
npm install 该项目包名(不加 --global)只会装到当前项目的 node\_modules/.bin,不会让该命令出现在你的 shell PATH 里。要么加 --global,要么就用 npx。
5.5 关于 Hopper 与 Ghidra
Hopper
独立商业软件,有自己的许可证。它会复用你已有的安装,也可以在你批准后帮你装(macOS 走 DMG,校验官方公布的体积和摘要后原子安装;Linux 走官方的 deb / rpm / Arch 包)
Ghidra 与 IDA
都是自带(BYO),它不会替你装。它会在需要时自动启动 Hopper,你不用手动先开着
支持基线
macOS 12+、Ubuntu 24.04+、Fedora 41+、64 位 Arch、CachyOS
06
PART
使用:三种典型姿势
USAGE · 实战用法
问智能体
最常用
→
CLI 静态分析
免引擎上手
→
CLI 原生分析
需配 provider
三条路径共用同一套工作流与证据契约
姿势一:在智能体里自然语言提问
装好之后,你只需要像平时一样跟智能体说话:
...prompt
弄清 Notes 应用的搜索功能如何工作,展示证据,并为我的项目实现类似功能。
把 Notes 换成你的目标应用,描述你关心的功能就行。智能体会自动去调 该工具的 MCP 工具、读证据、追问、写实现、跑测试。
姿势二:CLI 静态分析 JS 与 Electron 应用
这条路径不需要任何逆向引擎,是最容易上手的:
bash
npx -y 该项目包名@latest analyze-javascript-application /absolute/path/to/app --json
Windows 下路径写法:把路径换成 \"D:/apps/example\" 这样的正斜杠形式。返回结果包含模块清单、导入关系、Electron 边界(main ↔ renderer ↔ preload)以及对应的证据。
姿势三:CLI 原生分析
...bash
看有哪些 provider 可用
该工具 providers --json
该工具 capabilities --json
分析一个二进制
该工具 analyze /path/to/program --provider ghidra --json
搜索字符串
该工具 search /path/to/program \"search\" --provider ghidra --json
看某个函数的完整档案
该工具 function /path/to/program main --provider ghidra --json
反编译指定地址得到伪代码
该工具 decompile /path/to/program 0x1000 --provider ghidra --json
查交叉引用
该工具 xrefs /path/to/program 0x1000 --provider ghidra --json
追踪某个功能调用链
该工具 trace /path/to/program \"search\" --provider ghidra --json
只要汇编指令的话用 该工具 instructions。macOS 的 .app bundle 可以直接传路径进去。
07
PART
几个值得单独学的设计
DESIGN · 工程细节
写到这里,我想单独拎出几个 该工具的设计细节。它们不性感,但恰恰是这类工具能不能被信任的关键。
SKILL 1
Evidence 是结构化的,不是散文
每一个结论都带着来源:观察到了什么(observation)、推断出了什么(inference)、哪些还没搞清楚(unknown)。而且支持导入、导出、对比:
...bash
该工具 evidence-import /path/to/bundle.json
该工具 evidence-export /path/to/bundle.json /path/to/canonical.json
该工具 compare /path/to/left.json /path/to/right.json
这意味着不同时间的分析结果、不同版本的 App,可以做结构化 diff——这是判断“我重建对了没有”的硬依据。
SKILL 2
Snapshot:把昂贵的分析结果缓存下来
...bash
该工具 analyze /path/to/program --provider ghidra --snapshot /path/to/analysis.json
再跑同样的查询,直接复用缓存,不重启引擎
只有当目标字节、操作、参数、provider、设置全部一致时才命中缓存;涉及可变状态和游标依赖的调用不会被缓存(这点很严谨,避免给你错结果)。
SKILL 3
Provider 选择是显式的、有状态的
...bash
该工具 analyze /path/to/program --provider hopper
export 分析引擎偏好=ghidra
MCP 里则是给 open\_binary 传 provider\_id。选定之后,这个 provider 会一直绑定在当前 session 上,不会因为运行时失败就被自动换掉——避免了“悄悄换了个引擎,你却不知道”的问题。
SKILL 4
就绪自检:doctor 支持按需体检
...bash
该工具 doctor --json
该工具 doctor --provider ghidra --json
该工具 doctor --client codex --json
该工具 doctor --skill --json
更重要的是文档里那句话——全量体检的 healthy: false不代表你的当前任务做不了。比如你没有 Hopper,但你要分析的只是个 JS 应用,那完全不影响。
SKILL 5
CLI 与 MCP 结果一致,但退出码语义严格
| 退出码 | 含义 |
|---|---|
| 0 | 操作完成。结果里可能含部分证据、警告或未解决问题 |
| 1 | 操作无法完成(无效输入、权限、取消、超时等) |
| 128+N | 被信号 N 终止 |
setup --dry-run 返回 planned 且退出 0;被取消也是 0;但 needs\_confirmation 或 needs\_human 返回 1。
!shell 技巧
想用管道后处理结果,务必先开 set -o pipefail,否则 该工具的失败状态会被下游格式化工具吞掉。
...bash
set -o pipefail
该工具 inspect-artifact ./app.asar --json | jq . > inspection.json
08
PART
更新与卸载
UPDATE · 维护
...bash
该工具 update
npx 该项目包名@latest setup
!容易踩的坑
该工具的 MCP 注册会固定(pin)到执行 setup 时的那个精确版本。所以升级之后要重启智能体,才能真正用上新功能。
卸载就是 该工具 uninstall,它会保留 Hopper 本体,只清理它自己的东西。
09
PART
关键信息速查
CHEAT SHEET · 收藏备用
| 项目 | 内容 |
|---|---|
| 项目地址 | 公众号回复「AI逆向」获取 |
| 协议 / 语言 | MIT · TypeScript |
| Node 要求 | 22.x(≥22.19)/ 24.x(≥24.11)/ 26+ |
| 一键安装 | npx 该项目包名 setup |
| 免引擎起步 | npx -y 该项目包名@latest analyze-javascript-application <路径> --json |
| 支持智能体 | Claude Code、Codex、Cursor、Gemini CLI、Windsurf、Devin、OpenCode、VS Code、Grok Build 等 13 种 |
| 工具规模 | 上百个 MCP 工具,覆盖面见上文能力表 |
免责声明
该项目本身提供了合法的逆向工程研究、分析与重建工具。使用者需要自行取得必要授权并遵守适用法律。本文仅作技术介绍与学习交流,请勿用于任何非法或未经授权的用途。
另外提醒:项目官方在其 README 中明确声明——该项目从未发行或背书任何加密货币或代币,任何冒用该项目名义的 Token 均与本项目无关。
本文基于该项目公开文档与实测整理。项目迭代很快,涉及的功能细节请以官方文档为准。
///
LAST
写在最后
CONCLUSION · 结语
这个项目有意思的地方在于,它做的事情像是给 AI 装上眼睛。
在此之前,AI 面对闭源二进制基本只能靠猜。它把 Hopper、Ghidra、JADX 这些人类用了很多年的逆向工具,包装成 AI 能理解的接口,然后用 Evidence 把我看到了什么和我猜到了什么严格区分开。
它能被顶到高关注度,说明很多人有同样的需求。这也提醒我们一件事:让 AI 能读懂闭源世界这个方向,已经被证明是刚需。
如果你想试试,我建议的路径是:
1
装 Node.js(22.19+)
2
跑 npx 该项目包名 setup,只勾一个你常用的智能体,先不装 Hopper
3
找一个你熟悉的 Electron 应用,解包它的 ASAR,跑一次 analyze-javascript-application
4
看懂返回的模块图和证据结构之后,再决定要不要深入原生分析
GET THE PROJECT
想拿到这个项目的地址?
关注公众号
网络安全透视镜
后台回复 AI逆向 ,即可获取项目地址与完整资料
觉得这篇拆解还算清楚的话,欢迎点赞、在看、转发三连。
点赞
在看
转发
THANKS FOR READING
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论