返回更新列表
新发布Jul 25, 2026

ghidra-mcp v6.0.0

MCP server桥接Ghidra的逆向工程与AI工具:256个工具,用于反编译、P-code模拟、实时调试、数据流分析、批量操作和约定执行,支持无头模式和GUI模式。

分享

Ghidra MCP 服务器

MCP Toplist

Tests Release License GitHub Sponsors

Python Java Ghidra MCP

Stars Last commit Discussions Issues OpenSSF Scorecard

如果你觉得这个项目有用,请给仓库 ⭐ 点个 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 用户配置。

  1. 克隆仓库: ```bash git clone https://github.com/bethington/ghidra-mcp.git cd ghidra-mcp
  2. 推荐:先运行环境预检: ```text python -m tools.setup preflight --ghidra-path "F:\ghidra_12.1.3_PUBLIC"
  3. 构建并部署到 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 冒烟测试。

  1. 可选的严格/手动模式(高级): ```text

    Skip automatic prerequisite setup

    python -m tools.setup build python -m tools.setup deploy --ghidra-path "F:\ghidra_12.1.3_PUBLIC"
  2. 显示命令帮助: ```text python -m tools.setup --help
  3. 可选的仅构建模式(高级/故障排除): ```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.

分类