
ghidra-mcp v6.0.0
MCP server桥接Ghidra的逆向工程与AI工具:256个工具,用于反编译、P-code模拟、实时调试、数据流分析、批量操作和约定执行,支持无头模式和GUI模式。
Ghidra MCP 服务器
如果你觉得这个项目有用,请给仓库 ⭐ 点个 star —— 这能帮助更多人发现它!
如果 Ghidra MCP 为你节省了时间,欢迎考虑赞助本项目。一次性赞助和定期赞助都能帮助资助兼容性更新、生产环境加固、文档以及新工具的开发。
一个生产就绪的 Model Context Protocol (MCP) 服务器,将 Ghidra 强大的逆向工程能力与现代 AI 工具和自动化框架连接起来。253 个 MCP 工具、经过实战检验的 AI 工作流,以及目前最全面的 Ghidra-MCP 集成 —— 现在还包括 P-code 仿真、实时调试器集成和 PCode 图数据流分析。
为什么选择 Ghidra MCP?
大多数 Ghidra MCP 实现只提供少量只读工具就草草了事。本项目与众不同 —— 它由一位每天在真实二进制文件上使用它的逆向工程师构建,而非作为演示。
- 253 个 MCP 工具 —— 比任何竞争实现多 3 倍。不仅是读取操作 —— 还提供完整的写入访问,用于重命名、类型标注、注释、结构体创建、脚本执行、P-code 仿真和实时调试。
- 经过实战检验的 AI 工作流 —— 在数百个函数上打磨验证的文档工作流(V5)。包含分步提示词、匈牙利命名法参考、批处理指南以及孤立代码发现。
- 生产级可靠性 —— 原子事务、批量操作(减少 93% API 调用)、可配置超时以及优雅的错误处理。没有静默失败。
- 跨二进制文档迁移 —— SHA-256 函数哈希匹配可在不同二进制版本间自动传播文档。一次编写,处处适用。
- 完整的 Ghidra Server 集成 —— 连接共享 Ghidra 服务器、管理仓库、版本控制、检出/检入工作流以及多用户协作。
- 无头模式和 GUI 模式 —— 可在有或没有 Ghidra GUI 的情况下运行。Docker 就绪,适用于 CI/CD 流水线和规模化自动分析。
- 设计上坚持己见 —— v5.0 将命名约定、类型安全和文档标准移入工具层。AI 代理和人类工程师无需在每个提示词中附带风格指南,即可产出一致的输出。
约定强制执行
你肯定经历过:项目进行到六个月时,你在同一个代码库中发现 ProcessItem、process_items、handleItem 和 ItemProc —— 四个函数做同一件事,却由四个不同的会话或工程师命名,彼此没有共享约定。修复它花费的时间比应有的更长,而且问题还会再次发生。
v5.0 将约定从"需要记住的事情"移入工具层,在那里它们才能真正被强制执行。
| 层级 | 行为 | 示例 |
|---|---|---|
| 自动修复 | 静默应用 | uint32 上的 count 字段 → 保存时自动加前缀为 dwCount |
| 警告 | 更改通过,但返回警告 | processData → "名称应为 PascalCase 并包含动词:ProcessData" |
| 拒绝 | 更改被阻止并附说明 | undefined → undefined 类型更改 → "无操作被拒绝,类型未更改" |
对于 AI 代理,这意味着每个会话、每个模型、每次运行都能获得一致的输出 —— 无需在每个提示词中粘贴风格指南。工具知道规则;模型只需做出决策。
对于团队,它消除了整类"这不符合我们的命名约定"的审查评论。约定仲裁留在工具中,而非代码审查中。
对于规模化独立工作,analyze_function_completeness 提供一个 0–100% 的评分,诚实衡量:结构性扣分(无法修复的编译器产物)在你的有效评分中被豁免,对数缩放防止某个糟糕类别掩盖其他一切,分层板级注释质量意味着你确切知道缺少什么以及为什么。
🌟 功能特性
核心 MCP 集成
- 完整 MCP 兼容性 —— 完整实现 Model Context Protocol
- 253 个 MCP 工具 —— 覆盖二进制分析各个方面的全面 API 接口
- 生产就绪的可靠性 —— 原子事务、批量操作、可配置超时
- 实时分析 —— 与 Ghidra 分析引擎实时集成
兼容性说明: MCP 工具名称已针对 GitHub Copilot CLI 和 CAPI 验证进行规范化。对外暴露的工具名称仅使用小写字母、数字、 下划线和连字符;诸如
/debugger/status之类的嵌套 HTTP 路径 在需要避免与静态桥接工具冲突时,会以debugger_status_2之类的名称对外公布。
二进制分析能力
- 函数分析 —— 反编译、调用图、交叉引用、完整性评分
- 数据流分析 —— 从任意变量或寄存器进行 PCode 图值传播(前向/后向)
- 数据结构发现 —— 结构体/联合体/枚举创建,附带字段分析和命名建议
- 字符串提取 —— 正则搜索、质量过滤以及字符串锚定的函数发现
- 导入/导出分析 —— 符号表、外部位置、序号导入解析
- 内存与数据检查 —— 原始内存读取、字节模式搜索、数组边界检测
- 跨二进制文档 —— 函数哈希匹配和跨版本文档传播
动态分析(v5.4.0)
- P-code 仿真 —— 通过 Ghidra 的
EmulatorHelper隔离运行任意函数;在毫秒级内暴力破解 API 哈希解析 - 实时调试器集成 —— 基于 Ghidra 的 TraceRmi 框架提供 17 个 Java 端点和 22 个 Python 桥接工具(Windows PE 上使用 dbgeng,其他平台使用 gdb/lldb):附加、单步执行、断点、寄存器、内存读取、非中断函数跟踪、ASLR 感知的静态↔动态地址转换
AI 驱动的逆向工程工作流
- 函数文档工作流 V5 —— 7 步流程,用于完整的函数文档编写,包含匈牙利命名法、类型审计和自动化验证评分
- 批量文档 —— 并行子代理调度,同时为多个函数编写文档
- 孤立代码发现 —— 自动化扫描器在已知代码之间的空隙中发现未发现的函数
- 数据类型调查 —— 用于结构体发现和字段分析的系统化工作流
- 跨版本匹配 —— 基于哈希的函数匹配,跨不同二进制版本
开发与自动化
- Ghidra 脚本管理 —— 完全通过 MCP 创建、运行、更新和删除 Ghidra 脚本
- 多程序支持 —— 在多个打开的程序之间切换和比较
- 批量操作 —— 批量重命名、注释、类型标注和标签管理(减少 93% API 调用)
- 无头服务器 —— 无需 Ghidra GUI 即可进行完整分析 —— Docker 和 CI/CD 就绪
- 项目与版本控制 —— 创建项目、管理文件、Ghidra Server 集成
- 分析控制 —— 以编程方式列出、配置和触发 Ghidra 分析器
🚀 快速开始
前置条件
- Java 21 LTS(推荐 OpenJDK)
- Apache Maven 3.9+
- Ghidra 12.1.3(或兼容版本)
- Python 3.10+,搭配 uv(推荐)或 pip + venv
共享 Ghidra Server 用户:Ghidra 12.1.3 客户端要求 Ghidra Server 为 12.1、12.0.5 或更新的兼容版本。在从 12.1 客户端使用此插件之前, 请先升级服务器。
Ghidra 12.1.3 将 Jython 作为可选扩展提供。Java 脚本默认可用, 但
ghidra_scripts/中的.py脚本需要从 File > Install Extensions 安装 Jython 扩展并重启 Ghidra。
安装
推荐所有平台:直接使用
python -m tools.setup。
ensure-prereqs安装运行时 Python 依赖以及本地 Maven 仓库所需的 Ghidra JAR 包。deploy复制构建输出、安装用户配置文件扩展,并修补 Ghidra 用户配置。
- 克隆仓库: ```bash
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp
- 推荐:先运行环境预检: ```text
python -m tools.setup preflight --ghidra-path "F:\ghidra_12.1.3_PUBLIC"
- 构建并部署到 Ghidra: ```text
python -m tools.setup ensure-prereqs --ghidra-path "F:\ghidra_12.1.3_PUBLIC"
python -m tools.setup build
python -m tools.setup deploy --ghidra-path "F:\ghidra_12.1.3_PUBLIC"
deploy 在需要时会保存/关闭已运行的匹配 Ghidra 实例,安装扩展,启动 Ghidra,等待 MCP 健康检查,并运行 schema 冒烟测试。
- 可选的严格/手动模式(高级): ```text
Skip automatic prerequisite setup
python -m tools.setup build python -m tools.setup deploy --ghidra-path "F:\ghidra_12.1.3_PUBLIC" - 显示命令帮助: ```text
python -m tools.setup --help
- 可选的仅构建模式(高级/故障排除): ```text
python -m tools.setup build
支持两种 Java 后端。Gradle 是本地工作的默认选择——它直接从安装目录读取 Ghidra 的 jar 包,因此无需 install-file 步骤,除 JDK 外无需安装任何其他内容。CI 构建和门禁使用 Maven,因此 Maven 是受维护的对等选项,而非备选方案。 ```bash
Gradle (default) -- the wrapper is committed, so no Gradle install is needed.
-PGHIDRA_INSTALL_DIR or the GHIDRA_INSTALL_DIR env var both work.
In Git Bash use forward slashes; a backslash path is mangled before Gradle sees it.
./gradlew buildExtension -PGHIDRA_INSTALL_DIR=/path/to/ghidra
I'm sorry, but I don't see any content to translate in your message. You mentioned "INPUT:" but no actual text followed it.