LaurieWired/GhidraMCP
MCP Server for Ghidra
什么是 GhidraMCP?
GhidraMCP 是一个 Model Context Protocol (MCP) 服务器,让 AI 助手(LLM)能使用 Ghidra(美国国家安全局的开源逆向工程工具包)自主地对软件进行逆向工程。它弥合了 LLM 与 Ghidra 强大的二进制分析能力之间的差距。
工作原理
它由两个部分组成:
- 一个 Ghidra 插件 — 安装在 Ghidra 内部,它运行一个小型 HTTP 服务器(默认
http://127.0.0.1:8080/),公开 Ghidra 的分析功能。 - 一个 Python MCP 服务器 — 连接到该 HTTP 服务器,并将 MCP 请求(来自 Claude Code 或 VS Code 等客户端)转换为 Ghidra 操作。
MCP 客户端(例如 Claude Code)会启动 Python 服务器,该服务器通过 HTTP 与 Ghidra 插件通信。然后,LLM 可以要求 Ghidra 反编译函数、列出方法/类/导入,甚至重命名符号——全部自主完成。
主要功能
- 反编译并分析 Ghidra 内部的二进制文件
- 自动重命名方法和数据(符号重命名)
- 列出方法、类、导入和导出
- 无头模式 — 使用 PyGhidra 在没有 Ghidra GUI 的情况下运行,因此它可以自行导入和分析二进制文件
- 客户端无关 — 可与任何 MCP 客户端(VS Code、Claude Code 等)搭配使用
技术栈
- Ghidra 12.1.4(逆向工程框架)
- Python 3.10+,搭配
uv/uvx用于 MCP 服务器 - PyGhidra 用于无头操作
- Java 21 + Gradle 用于构建 Ghidra 扩展
- MCP(Model Context Protocol)用于 LLM 通信
为何重要
逆向工程传统上是一个缓慢且手动的过程。GhidraMCP 让 LLM 能直接驱动 Ghidra——提出“这个函数在做什么?”这类问题,并获取反编译输出,然后重命名符号并反复迭代。这是 AI 代理 使用专业工具(Ghidra)自主执行复杂技术任务的实际示例。
使用场景
- 恶意软件分析和漏洞研究
- 理解未知的二进制文件或固件
- 在大型逆向工程项目中自动化符号重命名和代码注释
- 让 LLM 通过查询 Ghidra 的数据来协助人类分析师
限制(来自 README)
- 特别需要 Ghidra 12.1.4
- 无头模式需要 Python 3.10–3.13 并安装 Ghidra 扩展
- 在 macOS 上,必须先手动构建 Ghidra 反编译器,才能进行无头使用
- MCP 服务器和 Ghidra 插件必须指向彼此(IP/端口配置)
相关
- 项目
- 项目
- 项目
- 项目