2026年7月17日 2 分钟阅读

Ghidra MCP 实战:让 Claude Code 也能分析二进制文件,256 个 MCP 工具实现 AI 逆向工程

tinyash 0 条评论

背景:AI 编码 Agent 的盲区

Claude Code、Codex、OpenCode 这些 AI 编码 Agent 在写代码、重构、调试方面表现惊人,但它们有一个巨大的盲区——它们无法分析编译后的二进制文件

当你面对以下场景时,常规的 AI 编码 Agent 束手无策:

  • 想分析一个第三方闭源库是否存在后门
  • 需要理解某个旧版本二进制中的算法实现
  • 审计一个 CVE 补丁的前后差异
  • 逆向分析恶意软件样本

传统的解决方案是打开 Ghidra(NSA 开源的逆向工程平台),手动加载二进制、分析函数、查看反编译代码、标注函数名——整个过程全靠人工,效率极低。

Ghidra MCP Server 解决了这个问题。它是一个开源的 MCP(Model Context Protocol)服务端,将 Ghidra 强大的逆向工程能力封装成 256 个 MCP 工具,让任何支持 MCP 的 AI Agent(Claude Code、Codex、Cursor、Copilot 等)可以直接调用这些工具来分析二进制文件。

项目在 HN 上获得了 298 分的关注,GitHub 已有 2,829 星,完全在 Apache-2.0 下开源——由 bethington 开发,版本已迭代至 v5.15.0。

安装与环境:最简 Docker 方案

Ghidra MCP 有两种运行模式:

  1. GUI 模式(完整 Ghidra 桌面 + MCP 插件)
  2. Headless 模式(无头服务器,Docker 部署)

对于大多数 AI Agent 集成场景,Headless Docker 方案是最推荐的——无需安装 Java 21、Maven 和 Ghidra 桌面,一条命令启动即可。

Docker 部署

git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp
docker-compose up -d ghidra-mcp

启动后,先验证服务是否正常运行:

curl http://localhost:8089/check_connection

预期输出:

Connection OK - GhidraMCP Headless Server v5.15.0

配置 Claude Code 连接

~/.claude/settings.json 中添加 MCP 配置:

{
  "mcpServers": {
    "ghidra-mcp": {
      "type": "http",
      "url": "http://localhost:8089"
    }
  }
}

重启 Claude Code 后,Ghidra MCP 的 256 个工具就会自动可用。

实战场景 1:加载二进制文件并运行分析

最基本的使用流程是先加载一个二进制文件到 Ghidra 分析引擎,再列出发现的所有函数。

curl -X POST -d "file=/data/program.exe" \
  http://localhost:8089/load_program

curl -X POST http://localhost:8089/run_analysis

curl "http://localhost:8089/list_functions?limit=20"

在 Claude Code 中,你可以直接通过自然语言完成上述操作:

“帮我加载 /workspace/sample.exe 到 Ghidra,运行自动分析,然后列出所有发现的函数。”

Claude Code 会自动调用对应的 MCP 工具,返回分析结果。你会看到函数名、地址、调用关系等结构化信息。

实战场景 2:反编译函数与跨版本匹配

Ghidra MCP 的核心能力之一是将二进制中的函数反编译为可读的 C 伪代码。

curl "http://localhost:8089/decompile_function?address=0x401000"

返回的反编译代码可以直接提供给 Claude Code 做进一步分析——解释算法逻辑、识别加密方式、发现潜在漏洞。

跨版本匹配是 Ghidra MCP 的独特优势。当同一个软件的新版本发布后,所有函数的地址都会发生变化,手动找出哪些函数被修改过非常耗时。Ghidra MCP 使用归一化函数哈希(Normalized Function Hash),通过对函数的助记符、操作数类别、控制流等逻辑结构做哈希,即使地址偏移了,也能跨版本匹配同一个函数:

curl "http://localhost:8089/get_function_hash?address=0x401000"

curl "http://localhost:8089/find_similar_functions_across_programs?address=0x401000"

这个功能让 AI Agent 可以自动回答「v1.08 相比 v1.07 改了哪些函数」——这在 CVE 补丁分析中非常实用。

实战场景 3:AI 驱动的函数自动标注工作流

Ghidra MCP 内置了一套完整的 AI 逆向工程工作流,包含 7 步自动化流程。以「函数文档化工作流 V5」为例:

  1. 反编译函数——获取 C 伪代码
  2. 完整性评分——分析函数目前已标注的程度
  3. AI 命名建议——根据反编译代码生成函数名建议
  4. 类型审计——修正参数类型和返回值类型
  5. 匈牙利命名法标注——统一函数命名风格
  6. 自动化验证评分——自动检查标注质量
  7. 批量提交——将标注结果批量写入 Ghidra 数据库

通过 Claude Code,你只需一句话:

“对 /workspace/malware_sample.exe 中所有 main 相关的函数运行完整的函数文档化工作流。”

AI Agent 会依次调用 decompile_functionanalyze_function_completenessbatch_analyze_completeness 等 MCP 工具,最终自动完成函数命名和标注。

Ghidra MCP 还支持 batch_decompile(批量反编译多个函数)和 bulk_fuzzy_match_functions(批量模糊匹配),配合 AI 工作流可以让逆向分析的效率提升一个数量级。

核心功能速览

除了上述场景,Ghidra MCP 还提供了大量实用的分析能力:

功能类别代表工具说明
函数分析decompile_functionget_function_call_graph反编译、调用图、复杂度指标
数据流analyze_data_flowPCode 值传播分析(前向/后向)
结构体发现discover_data_structures自动创建结构体/联合体/枚举
字符串提取extract_strings正则搜索、质量过滤
P-code 模拟emulate_function在隔离环境中运行单个函数
调试器集成debugger_attachdebugger_step17 个 Java 端点 + 22 个 Python 桥接工具
项目版本控制create_projectserver_statusGhidra Server 集成
孤儿代码发现find_orphaned_code自动扫描已知代码间隙中的未发现函数

最佳实践

  1. 优先使用 Headless 模式:Docker 部署的头服务器避免了桌面 Ghidra 的 GUI 依赖,更适合 CI/CD 和批量分析场景。
  1. 合理设置内存:Ghidra 分析大型二进制文件可能需要较多内存,Docker 部署时建议设置 JAVA_OPTS="-Xmx4g -XX:+UseG1GC"
  1. 函数哈希用于版本对比:软件更新后,用 get_function_hash + find_similar_functions_across_programs 跨版本定位变更函数,比对比地址更可靠。
  1. 批量操作减少调用次数:使用 batch_decompilebulk_fuzzy_match_functions 等批量工具代替逐个函数调用,效率提升 93% 以上。
  1. AI 工作流需要验证:AI 生成的函数名和类型标注建议是辅助性的,建议实际审视每个标注的正确性后再提交。

总结

Ghidra MCP 填补了 AI 编码 Agent 在二进制分析领域的空白。它将 Ghidra 强大的逆向工程引擎封装成 256 个标准 MCP 工具,让 Claude Code、Codex 等 AI Agent 可以直接分析、反编译、标注二进制文件,支持跨版本匹配、P-code 模拟、实时调试器集成等高级功能。

无论是安全审计、恶意软件分析、CVE 补丁研究,还是想理解闭源库中的算法实现,Ghidra MCP 都让 AI Agent 具备了之前完全无法触及的能力。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。