Ghidra MCP 实战:让 Claude Code 也能分析二进制文件,256 个 MCP 工具实现 AI 逆向工程
背景: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 有两种运行模式:
- GUI 模式(完整 Ghidra 桌面 + MCP 插件)
- 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」为例:
- 反编译函数——获取 C 伪代码
- 完整性评分——分析函数目前已标注的程度
- AI 命名建议——根据反编译代码生成函数名建议
- 类型审计——修正参数类型和返回值类型
- 匈牙利命名法标注——统一函数命名风格
- 自动化验证评分——自动检查标注质量
- 批量提交——将标注结果批量写入 Ghidra 数据库
通过 Claude Code,你只需一句话:
“对
/workspace/malware_sample.exe中所有 main 相关的函数运行完整的函数文档化工作流。”
AI Agent 会依次调用 decompile_function、analyze_function_completeness、batch_analyze_completeness 等 MCP 工具,最终自动完成函数命名和标注。
Ghidra MCP 还支持 batch_decompile(批量反编译多个函数)和 bulk_fuzzy_match_functions(批量模糊匹配),配合 AI 工作流可以让逆向分析的效率提升一个数量级。
核心功能速览
除了上述场景,Ghidra MCP 还提供了大量实用的分析能力:
| 功能类别 | 代表工具 | 说明 |
|---|---|---|
| 函数分析 | decompile_function、get_function_call_graph | 反编译、调用图、复杂度指标 |
| 数据流 | analyze_data_flow | PCode 值传播分析(前向/后向) |
| 结构体发现 | discover_data_structures | 自动创建结构体/联合体/枚举 |
| 字符串提取 | extract_strings | 正则搜索、质量过滤 |
| P-code 模拟 | emulate_function | 在隔离环境中运行单个函数 |
| 调试器集成 | debugger_attach、debugger_step | 17 个 Java 端点 + 22 个 Python 桥接工具 |
| 项目版本控制 | create_project、server_status | Ghidra Server 集成 |
| 孤儿代码发现 | find_orphaned_code | 自动扫描已知代码间隙中的未发现函数 |
最佳实践
- 优先使用 Headless 模式:Docker 部署的头服务器避免了桌面 Ghidra 的 GUI 依赖,更适合 CI/CD 和批量分析场景。
- 合理设置内存:Ghidra 分析大型二进制文件可能需要较多内存,Docker 部署时建议设置
JAVA_OPTS="-Xmx4g -XX:+UseG1GC"。
- 函数哈希用于版本对比:软件更新后,用
get_function_hash+find_similar_functions_across_programs跨版本定位变更函数,比对比地址更可靠。
- 批量操作减少调用次数:使用
batch_decompile、bulk_fuzzy_match_functions等批量工具代替逐个函数调用,效率提升 93% 以上。
- AI 工作流需要验证:AI 生成的函数名和类型标注建议是辅助性的,建议实际审视每个标注的正确性后再提交。
总结
Ghidra MCP 填补了 AI 编码 Agent 在二进制分析领域的空白。它将 Ghidra 强大的逆向工程引擎封装成 256 个标准 MCP 工具,让 Claude Code、Codex 等 AI Agent 可以直接分析、反编译、标注二进制文件,支持跨版本匹配、P-code 模拟、实时调试器集成等高级功能。
无论是安全审计、恶意软件分析、CVE 补丁研究,还是想理解闭源库中的算法实现,Ghidra MCP 都让 AI Agent 具备了之前完全无法触及的能力。
- GitHub: github.com/bethington/ghidra-mcp
- 许可: Apache-2.0
- 版本: v5.15.0(持续更新中)
相关链接