关于 reverse-engineer
reverse-engineer 是用于检查 Electron 应用和编译二进制文件的只读 MCP 服务与 CLI,面向需要在不运行目标的情况下进行带引用位置分析的 Agent 和开发者。部分反编译功能需要可选工具。
主要功能
- 01识别文件格式与二进制标记
- 02检查 Electron 应用结构和 IPC
- 03按位置搜索文件与归档
- 04列出二进制区段和字符串
- 05读取 Go 与 Rust 构建信息
- 06反编译原生、.NET 和 APK 代码
适用场景
- 01初步检查陌生可执行文件
- 02在应用归档中定位代码或字符串
- 03检查 Electron 预加载脚本与 IPC 通道
- 04查看二进制元数据或反编译函数
MCP 相关
向 MCP 客户端提供只读逆向分析工具,包括初步检查、搜索、二进制清单和反编译。结果包含引用位置,分析内容按 SHA-256 缓存。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
8收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 文件或目录 |
详细介绍
reverse-engineer 服务
reverse-engineer 技能背后的只读 MCP 服务和 CLI。该技能是面向 Agent 的入口;此服务使用 TypeScript 解析器替代特定平台上缺失或不可靠的命令(otool、strings、jq、go version -m、asar 提取),并以最多 8 KB 的内容提供带引用位置的答案。安装技能不会安装此服务。
工具
| 工具 | 返回内容 |
|---|---|
triage | 根据魔数识别格式、架构、大小、SHA-256、标记(Go、Rust、Electron fuses、N-API、打包器)以及下一步调用 |
electron_surface | 缓存的 asar 提取结果、main、preload 和 exposeInMainWorld 键、.node 插件及 JS 调用的插件名称、按调用位置分组的 IPC 通道(包括应用封装器)、fuses、asar 完整性 |
search | 在目录树、.asar 或单个文件中进行有界搜索(包括隐藏文件夹),返回 file:line:col 或 file@offset 以及简短摘录 |
read | 行范围、用于压缩代码的列窗口(无需重新格式化)和十六进制转储 |
binary_inventory | PE、ELF 和 Mach-O 节、库和导入项、导出项、Node 插件名称、ASCII 和 UTF-16 字符串、PE 资源 |
buildinfo | Go 构建信息(工具链、主包、模块、设置、依赖项)和 Rust cargo-auditable 包 |
decompile | Ghidra 无头模式,按文件缓存:列出函数、将字符串映射到使用它的函数、返回一个函数的 C 代码 |
managed | .NET(通过 ilspycmd)和 APK/DEX/JAR(通过 jadx):反编译一次、生成摘要、返回一种类型 |
8 个工具的目录约 6 KB;技能约 5.5 KB。
设计规则:
- 默认精简。 每个答案都控制在
REVERSE_ENGINEER_MAX_BYTES(8192)以内。较长的输出会写入缓存,答案末尾会附上其路径,以便通过read和search分页读取。 - 事实带引用。 每个位置均为
file:line:col、file@0xoffset、符号或字符串。 - 常见情况不会阻塞。 打包后签名的
.node文件会显示为未经验证的哈希,而不是报错。格式错误或恶意二进制文件会降级为部分结果,而不会导致挂起。 - 只读。 工具不会运行目标程序。它们只会写入缓存:
%LOCALAPPDATA%\reverse-engineer\cache、~/Library/Caches/reverse-engineer或$XDG_CACHE_HOME/reverse-engineer(可通过REVERSE_ENGINEER_CACHE覆盖)。例外情况:Ghidra 不接受包含点文件夹的项目路径,因此如果使用这类缓存路径(Linux 默认值~/.cache),其项目会写入临时目录中的私有用户文件夹;缓存路径包含空格时,Ghidra 会将设置保存在主目录中;jadx 和 .NET SDK 首次使用时可能会在该目录写入各自的设置。 - 按 SHA-256 缓存。 提取或分析结果会重复使用。
使用
要求:Node.js 24.11 或更高版本。可选:使用 decompile 时需要 Ghidra 11+ 和 JDK 21;使用 managed 时需要 ilspycmd(.NET 10 SDK)和 jadx(JDK 21)。Agent 可以使用技能的安装指南安装这些工具:官方发行版会放入每位用户专属的工具根目录(%LOCALAPPDATA%\reverse-engineer\tools、~/Library/Application Support/reverse-engineer/tools 或 $XDG_DATA_HOME/reverse-engineer/tools;可通过 REVERSE_ENGINEER_TOOLS 覆盖),无需管理员权限,也无需更改 PATH。工具会先在此处查找,然后查找 PATH、GHIDRA_INSTALL_DIR 和常见安装目录。
此软件包以 alpha 预发布版本发布到 npm,名称为 reverse-engineer,并在 MCP Registry 中列为 io.github.Firzus/reverse-engineer。请固定确切版本:
npx -y [email protected] triage ./some.exe
npx -y [email protected] electron_surface "C:\Program Files\App" --focus audio,microphone
Claude Code MCP 配置(项目 .mcp.json):
{
"mcpServers": {
"reverse-engineer": {
"command": "npx",
"args": ["-y", "[email protected]", "mcp"]
}
}
}
在 Windows 上,使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "[email protected]", "mcp"]。要从克隆仓库运行尚未发布的构建,请执行开发部分中的命令,然后将配置指向 node <checkout>/mcp/reverse-engineer/dist/cli.mjs mcp。
使用 npx skills add Firzus/agent-skills --skill reverse-engineer 安装技能。
开发
工具链使用 Vite+(vite-plus,本地开发依赖)。.github/workflows/reverse-engineer-check.yml 会在 Windows、macOS 和 Linux 上运行相同的检查:
npm install
npx vp check # format, lint, type check
npx vp test # unit tests on synthetic and hostile fixtures
npx vp pack # bundle dist/cli.mjs, a single file with no runtime dependency
针对真实目标的测试需显式启用:设置 RE_TARGETS(包含 app.asar、app.asar.unpacked/ 和 gh.exe 的文件夹)、RE_NOTION_DIR(已安装的 Notion 应用)、RE_GHIDRA=1、RE_DOTNET_DLL 或 RE_APK。
发布
.github/workflows/reverse-engineer-publish.yml 会发布到 npm 和 MCP Registry。将版本变更合并到 main 就会触发发布,因此请将合并视为发布决策。在发布拉取请求中:
- 在
package.json、package-lock.json、server.json、上文固定版本的命令以及技能的SKILL.md中设置相同的版本;单元测试会检查前三项。如果vp pack报告新增了打包依赖,请将其许可证添加到THIRD_PARTY_NOTICES.md。 - 运行开发部分中的检查,然后运行
npm pack(它会重新构建dist/),并检查压缩包:LICENSE、README.md、THIRD_PARTY_NOTICES.md、dist/cli.mjs、ghidra/ExportDecompiled.java、package.json。
如果该版本已存在于 npm 和 MCP Registry,工作流就会停止。否则,工作流会运行检查工作流,在没有发布权限的作业中构建压缩包,然后在 release 环境中从不运行项目代码或依赖代码的作业进行发布。npm 使用可信发布,预发布版本会使用其专属 dist-tag(alpha)发布,绝不会使用 latest;MCP Registry 使用 GitHub OIDC 登录。最后一个作业会运行已发布版本的 --version。运行失败时,请修复原因,然后对该次运行使用 Re-run all jobs:每个发布步骤都会重新检查对应的注册表,并跳过已存在的内容。切勿为了掩盖发布失败而覆盖或撤销版本;请发布新版本。
首次自动发布前,npm 必须信任此工作流:在 reverse-engineer 软件包设置中,添加 GitHub Actions 可信发布者,用户设为 Firzus,仓库设为 agent-skills,工作流设为 reverse-engineer-publish.yml,环境设为 release。
基准测试
bench/ 将 leanrea 的测试框架调整为适用于 Windows,并比较四种方案:不使用技能、leanrea、REA(MCP 和技能)以及本工具。有关方法、结果及其局限,请参阅 bench/BENCHMARK.md。
许可证
MIT。基准测试任务和测试框架改编自采用 MIT 许可证的 leanrea;其声明见 bench/LICENSE-leanrea。Fuse 名称和 Go 构建信息布局遵循 Electron 和 Go 工具链公开文档中的格式;未复制 REA 的代码。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。