mcpField
R
reverse-engineer

reverse-engineer

本地服务
github.com/Firzus开发工具44 天前更新

关于 reverse-engineer

reverse-engineer 是用于检查 Electron 应用和编译二进制文件的只读 MCP 服务与 CLI,面向需要在不运行目标的情况下进行带引用位置分析的 Agent 和开发者。部分反编译功能需要可选工具。

主要功能

  1. 01识别文件格式与二进制标记
  2. 02检查 Electron 应用结构和 IPC
  3. 03按位置搜索文件与归档
  4. 04列出二进制区段和字符串
  5. 05读取 Go 与 Rust 构建信息
  6. 06反编译原生、.NET 和 APK 代码

适用场景

  1. 01初步检查陌生可执行文件
  2. 02在应用归档中定位代码或字符串
  3. 03检查 Electron 预加载脚本与 IPC 通道
  4. 04查看二进制元数据或反编译函数

MCP 相关

向 MCP 客户端提供只读逆向分析工具,包括初步检查、搜索、二进制清单和反编译。结果包含引用位置,分析内容按 SHA-256 缓存。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"firzus-reverse-engineer": {
"command": "npx",
"args": [
"-y",
"reverse-engineer"
]
}
}
}
启动命令npx -y reverse-engineer

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmreverse-engineer0.1.0-alpha.2

工具

8

收录的工具列表 · 更新于 1 周前

参数类型必填说明
pathstring是文件或目录

详细介绍

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_inventoryPE、ELF 和 Mach-O 节、库和导入项、导出项、Node 插件名称、ASCII 和 UTF-16 字符串、PE 资源
buildinfoGo 构建信息(工具链、主包、模块、设置、依赖项)和 Rust cargo-auditable 包
decompileGhidra 无头模式,按文件缓存:列出函数、将字符串映射到使用它的函数、返回一个函数的 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 就会触发发布,因此请将合并视为发布决策。在发布拉取请求中:

  1. 在 package.json、package-lock.json、server.json、上文固定版本的命令以及技能的 SKILL.md 中设置相同的版本;单元测试会检查前三项。如果 vp pack 报告新增了打包依赖,请将其许可证添加到 THIRD_PARTY_NOTICES.md。
  2. 运行开发部分中的检查,然后运行 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 的代码。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。