bethington/ghidra-mcp · 上手攻略

  • 仓库:bethington/ghidra-mcp
  • 链接:https://github.com/bethington/ghidra-mcp
  • 分类:skill
  • 作者:Tom
  • 更新:2026-07-22

是什么

ghidra-mcp 是一个生产级 MCP(Model Context Protocol)服务器,将 NSA 开源的 Ghidra 反编译引擎以 269 个 MCP 工具的形式暴露给 AI Agent,供其进行 AI 驱动的二进制逆向工程。与大多数 Ghidra MCP 实现只提供几个只读工具不同,这是一个由真实逆向工程师日常使用的完整方案——支持完整的写操作(重命名、类型标注、注释、结构体创建)、P-code 仿真、17 个 Java 调试端点 + 22 个 Python 桥接工具、以及原子事务与批量操作。


解决什么问题

  1. AI Agent 无法操控二进制:传统上 AI 只能读取反编译结果,ghidra-mcp 提供了完整的写入能力,让 Agent 能主动修改函数名、添加类型、写入注释。
  2. 工具数量太少:大多数 Ghidra MCP 只有 10–80 个工具,且多为只读。ghidra-mcp 提供 269 个,覆盖函数分析、数据流分析、P-code 仿真、实时调试、结构体发现、批处理等全流程。
  3. 命名规范无法执行:v5.0 将命名规范(PascalCase、动词前缀等)内置到工具层,AI 生成的代码自动符合团队规范,不再需要每次 prompt 附带风格指南。
  4. 生产环境可靠性不足:缺乏原子事务、批量操作(减少 93% API 调用)、超时配置——ghidra-mcp 针对生产场景做了完整加固。

快速安装

前置依赖

  • Java 21 LTS(推荐 OpenJDK)
  • Apache Maven 3.9+
  • Ghidra 12.1.2(或兼容版本)
  • Python 3.10+ + uv(推荐)或 pip + venv

⚠️ Ghidra 12.1.2 客户端需要 Ghidra Server 为 12.1 / 12.0.5 或更高版本。Jython 扩展(运行 .py 脚本)需在 Ghidra 中手动安装:File > Install Extensions,重启 Ghidra。

通用安装流程

# 1. 克隆仓库
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp

# 2. 环境预检(推荐)
python -m tools.setup preflight --ghidra-path "~/ghidra_12.1.2_PUBLIC"

# 3. 安装依赖 + 构建 + 部署(三步走)
python -m tools.setup ensure-prereqs --ghidra-path "~/ghidra_12.1.2_PUBLIC"
python -m tools.setup build
python -m tools.setup deploy --ghidra-path "~/ghidra_12.1.2_PUBLIC"

ensure-prereqs 会把 Ghidra JAR 安装到本地 Maven 仓库(~/.m2/repository)。deploy 会: - 构建 GhidraMCP-.zip - 解压扩展到 ~/.config/ghidra/ghidra_<version>_PUBLIC/Extensions/GhidraMCP/(Linux)或 ~/Library/ghidra/ghidra_<version>_PUBLIC/Extensions/GhidraMCP/(macOS) - 安装 Python 依赖 - 重启 Ghidra 并等待 MCP 健康检查

启动 MCP 服务器

# 在已运行的 Ghidra GUI 中
# 菜单:Tools > GhidraMCP > Start MCP Server

# 或命令行(headless 模式)
uv run bridge-mcp-ghidra

配置 AI 客户端(以 Cursor 为例)

{
  "mcpServers": {
    "ghidra": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/ghidra-mcp", "bridge-mcp-ghidra"]
    }
  }
}

HTTP 传输(供 Web 客户端)

uv run bridge-mcp-ghidra --transport streamable-http --mcp-host 127.0.0.1 --mcp-port 8081

对应 MCP 配置:

{
  "mcpServers": {
    "ghidra-mcp-http": {
      "url": "http://127.0.0.1:8081/mcp"
    }
  }
}

其他平台快速命令

平台 特殊说明
Linux(Debian/Ubuntu) uv run 避免 PEP 668 externally-managed-environment 错误
macOS(Homebrew) brew install openjdk@21 maven python ghidra,Ghidra 路径 /opt/homebrew/opt/ghidra/libexec
Arch Linux(AUR) yay -S ghidra-mcp(社区包)

核心用法

MCP 工具分类(共 269 个)

函数分析类:decompile、analyze_function_completeness(0–100% 评分)、find_orphaned_functions、get_call_graph、get_cross_references

数据流分析类:pc ode_graph_forward/backward(从任意变量/寄存器追踪数据传播)

结构体发现类:create_structure、create_union、create_enum、analyze_struct_fields

字符串处理类:search_strings(正则)、filter_string_quality、find_functions_by_string

内存操作类:read_memory、search_byte_pattern、detect_array_boundaries

跨二进制文档传递:sha256_function_hash_match(自动将文档同步到同函数的其他二进制版本)

P-code 仿真emulate_function(用 Ghidra EmulatorHelper 隔离运行任意函数,毫秒级暴力破解 API hash)

实时调试(17 Java + 22 Python 桥接):attach_debugger、set_breakpoint、step、get_registers、read_memory_trace

脚本管理:create_script、run_script、update_script、delete_script(全链路 MCP 管理 Ghidra 脚本)

批量操作:batch_rename、batch_comment、batch_set_type(93% API 调用减少)

项目与版本控制:create_project、manage_files、ghidra_server_checkin/checkout

约定执行层(v5.0 核心特性)

级别 行为 示例
Auto-fix 自动静默修复 uint32count 字段 → 保存时自动加 dw 前缀为 dwCount
Warn 放行但返回警告 processData → "name should be PascalCase with verb: ProcessData"
Reject 拒绝并解释 undefined → undefined type → "no-op rejected, type unchanged"

这意味着 AI Agent 生成的重命名、类型标注、注释天然符合团队规范,无需在 prompt 中重复风格指南。

函数文档工作流 V5(7步)

  1. analyze_function_completeness 获取评分
  2. 匈牙利命名法检查
  3. 类型审计
  4. 注释质量分级(结构化注释 plate comments)
  5. create_function_documentation 写入文档
  6. 验证评分提升
  7. 提交审查

典型适用场景

场景 关键工具
新binary 快速逆向 find_orphaned_functions + decompile + analyze_function_completeness
结构体重建 create_structure + analyze_struct_fields + pc ode_graph_forward
恶意软件调试 attach_debugger + set_breakpoint + step + read_memory
API hash 破解 emulate_function + brute_force_api_hash(毫秒级)
批量逆向文档 batch_rename + batch_comment + batch_set_type
跨版本同步文档 sha256_function_hash_match
找二进制间差异 cross_version_match + get_call_graph_diff

坑与注意

  1. Python 脚本需要 Jython 扩展:Ghidra 12.1.2 的 .py 脚本需在 Ghidra 中 File > Install Extensions 安装 Jython,重启生效。Java 脚本则开箱即用。
  2. Ghidra Server 版本匹配:Ghidra 12.1.2 客户端连接 Server 时,Server 必须是 12.1 / 12.0.5 或更高。
  3. HTTP 传输的 CORS:SSE/HTTP 模式下 loopback(任意端口)始终允许,bind host 和 GHIDRA_MCP_ALLOWED_HOSTS 环境变量列出的 host 也允许。
  4. Lazy 模式慎用--lazy 模式下只加载 listing、function、program 三个默认工具组,部分 MCP 客户端(如 Claude Code)不支持 tools/list_changed,会看到不完整的工具列表。
  5. Maven 构建备用python -m tools.setup build 底层调用 Maven;如有特殊需求可手动 mvn clean package assembly:single -DskipTests(需提前把 Ghidra deps 装入本地 .m2)。

与同类对比

特性 ghidra-mcp 其他 Ghidra MCP 实现
工具数量 269 通常 10–80
写操作 ✅ 完整 ❌ 或极有限
P-code 仿真
实时调试 ✅ 17 Java + 22 Python 端点 ❌ 或部分
命名约定强制 ✅ Auto-fix/Warn/Reject 三级
批量操作 ✅ 93% API 调用减少
约定内置工具层 ✅ v5.0
Headless + Docker 部分
Ghidra Server 集成

一句话结论

ghidra-mcp 是目前最完整的 Ghidra MCP 实现——269 个工具覆盖逆向全流程,v5.0 将命名规范内置到工具层,让 AI Agent 生成的逆向成果天然符合团队标准,是二进制安全研究者和 AI 安全工具开发者的必备基础设施。