关于 ghidraMCP
ghidraMCP 是一个 MCP 服务,让 LLM 能够借助 Ghidra 对应用程序进行逆向分析。由 Ghidra 插件与 Python MCP 客户端组成,面向逆向工程与安全研究人员。
主要功能
- 01在 Ghidra 中反编译并分析二进制文件
- 02自动重命名方法和数据
- 03列出方法、类、导入项与导出项
- 04支持无 GUI 的 Headless 分析模式
适用场景
- 01让 LLM 辅助分析闭源二进制程序
- 02在 MCP 客户端中查看 Ghidra 的反编译结果与符号信息
MCP 相关
ghidraMCP 作为 MCP 服务运行,向 MCP 客户端暴露 Ghidra 的核心功能作为工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ghidraMCP
ghidraMCP 是一个模型上下文协议(MCP)服务,可让大模型自主逆向工程应用程序。它向 MCP 客户端开放了 Ghidra 核心功能中的多种工具。
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
功能
MCP 服务 + Ghidra 插件
- 在 Ghidra 中反编译和分析二进制文件
- 自动重命名方法和数据
- 列出方法、类、导入项和导出项
安装
前置条件
- 安装 Ghidra 12.1.4
- 安装 uv(或使用
pip install git+https://github.com/LaurieWired/GhidraMCP安装 Python 3.10+,然后使用下方命令中的ghidra-mcp)
Ghidra
首先,从此仓库下载最新的发行版。其中包含 Ghidra 插件和 Python MCP 客户端。然后,可以直接将插件导入 Ghidra。
- 运行 Ghidra
- 选择
File->Install Extensions - 点击
+按钮 - 选择已下载发行版中的
ghidra_12.1.4_PUBLIC_<date>_GhidraMCP.zip - 重启 Ghidra
- 确保在
File->Configure->Developer中启用了 GhidraMCPPlugin - 可选:在 Ghidra 中通过
Edit->Tool Options->GhidraMCP HTTP Server配置端口
安装视频指南:
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
MCP 客户端
理论上,任何 MCP 客户端都应能与 ghidraMCP 配合使用。大多数客户端都接受如下 JSON 配置:
{
"mcpServers": {
"ghidra": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
服务器 IP 和端口可配置,应将其设置为指向目标 Ghidra 实例。如果未设置,两者都将默认为 localhost:8080。
对于连接 URL 而非启动命令的客户端,请先自行运行 MCP 服务:
uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --transport streamable-http --mcp-host 127.0.0.1 --mcp-port 8081 --ghidra-server http://127.0.0.1:8080/
然后在客户端中将 http://127.0.0.1:8081/mcp 添加为远程服务。
示例 1:VS Code
在命令面板中运行 MCP: Add Server,或将以下内容添加到工作区中的 .vscode/mcp.json:
{
"servers": {
"ghidra": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
示例 2:Claude Code
运行以下命令:
claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --ghidra-server http://127.0.0.1:8080/
无头模式(不使用 Ghidra GUI)
ghidra-mcp 也可以使用 PyGhidra 自行导入和分析二进制文件,无需运行 Ghidra GUI。这需要 Python 3.10–3.13、在 Ghidra 中安装 GhidraMCP 扩展(或使用 --extension-jar /path/to/GhidraMCP.jar),并将 GHIDRA_INSTALL_DIR 设置为 Ghidra 12.1.4 目录:
uvx --python 3.13 --from "ghidra-mcp[headless] @ git+https://github.com/LaurieWired/GhidraMCP" ghidra-mcp --headless --binary /path/to/target
在上方的任意客户端配置中使用相同的命令和参数。添加 --project DIR 可在多次运行之间保留 Ghidra 项目(并保存更改)。在 macOS 上,请在 Ghidra 目录中使用 support/gradle/gradlew buildNatives 构建一次 Ghidra 的反编译器。
从源代码构建
- 将
GHIDRA_INSTALL_DIR设置为 Ghidra 12.1.4 目录 - 使用 Gradle(Java 21)构建扩展,运行:
cd extension && $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension
extension/dist/ 中生成的 zip 文件包含构建好的 Ghidra 插件及其资源。Ghidra 需要这些文件才能识别新扩展。
- lib/GhidraMCP.jar
- extension.properties
- Module.manifest
可在代码检出目录中使用 uv run ghidra-mcp 运行 Python MCP 服务,并使用 uv run pytest 进行测试。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。