此扩展包含一个 Ghidra 插件,该插件公开了一个模型上下文协议(MCP)服务器,以暴露 Ghidra 功能。
它可以被大型语言模型(LLM)代理用于辅助逆向工程师理解复杂的二进制文件并节省时间。
在简单的 Crackme 上使用的示例:
https://github.com/user-attachments/assets/ae938375-950a-4a29-bd48-165f856d970b
从视频中可以看到,Claude 3.7 Sonnet 在某个时刻进入了“额外里程模式”,决定编写一个 Ghidra 脚本来解决 Crackme,所以我不得不介入并“引导”它走向 KISS(保持简单)。我决定保留这一部分,因为我认为这清楚地表明,无论我们的 MCP 工具多么酷炫,LLMs 仍然是 LLMs,还有很多工具之外的东西——比如良好的提示和指导。
MCP 是当今的热门话题,几天前已经发布了一个优秀的 Ghidra MCP 插件。
然而:
此外,引用永恒的“PoC || GTFO”:
自己建造鸟食器。 <img src=https://gips1.baidu.com/it/u=655279375,1748392510&fm=3081&app=3081&f=PNG?w=1414&h=1872 width=50%>
模型上下文协议(MCP)由 Anthropic 在 2024 年 12 月提出,旨在创建 AI 助手与“数据源”或“工具”之间交互的标准。构建一个 MCP 服务器基本上意味着为 AI 代理构建新的设备,由于这是一个标准,因此具有互操作性,我们可以使用相同的工具与不同的代理一起使用。听起来很棒!
目前,这个 Ghidra MCP 插件公开了以下工具:
现在这主要是一个实验,但我渴望对其进行调试,真正了解它对严肃的逆向工程任务有多有用。
你可以从发布的版本下载扩展。
要安装它,请启动 Ghidra,然后在选择任何工具之前,选择文件 -> 安装扩展 -> "+" 按钮添加下载的 ZIP 文件。进入代码浏览器工具后,选择文件 -> 配置,然后在“开发者”下选择配置,并确保选中“GhidraMCPPlugin”复选框。
这将启动 MCP 服务器(你可以确认你的机器上有一个运行在 8888 端口的 java 进程)。
在项目的根目录运行 gradle,你应该会在 dist 文件夹中看到 ZIP 文件。
嵌入 Ghidra 的 MCP 服务器配置为使用“SSE”传输,因此你需要一个支持 SSE 的 MCP 客户端。
或者,通过 uv 安装 mcp-proxy(uv tool install mcp-proxy),这样你就可以使用它来进行 STDIO<->SSE 代理。
例如,这是我在 Cursor 中的 MCP 服务器配置:
{
"mcpServers": {
"GhidraMCP": {
"command": "mcp-proxy",
"args": ["http://localhost:8888/sse"]
}
}
}
注意:当使用 mcp-proxy 时,请确保在客户端启动 MCP 工具之前先启动 Ghidra 并打开代码浏览器,否则 mcp-proxy 将无法连接到 SSE 端点。