使用说明
Ghidra MCP服务器
此扩展包含一个Ghidra插件,该插件公开了一个模型上下文协议(MCP)服务器,以公开Ghidra功能。
LLM代理可以使用它来帮助逆向工程理解复杂的二进制文件并节省时间。
简单crackme的示例用法:
https://github.com/user-attachments/assets/ae938375-950a-4a29-bd48-165f856d970b
正如你在视频中看到的,克劳德3.7十四行诗在某个时候进入了“额外里程模式”,并决定写一个Ghidra脚本来解决这个问题,所以我不得不介入 并“引导”它朝向KISS。我决定保留这一部分,因为我认为它清楚地表明,无论我们的MCP工具有多酷,LLM都是LLM,而且还有更多 工具——比如良好的提示和指导。
为什么?
MCP是当今最性感的东西 一个优秀的Ghidra MCP插件 几天前已经被释放了。
然而:
- 写作工具很有趣
- 有效地使用LLM还不简单,“拥有”工具会有很大帮助
- 我想尝试Java——这种情况并不常见——在Ghidra中嵌入Spring Boot应用程序似乎是一种很好的方法
另外,引用永恒的“PoC||GTFO”:
建造你自己的该死的喂鸟器。 <img src=https://gips1.baidu.com/it/u=655279375,1748392510&fm=3081&app=3081&f=PNG?w=1414和h=1872宽度=50%>
什么?
模型上下文协议(MCP) 由Anthropic于2024年12月推出,旨在为两者之间的互动创建一个标准 人工智能助手和“数据源”或“工具”。构建MCP服务器基本上意味着为AI代理构建新的设备,由于它是一个标准,因此可以互操作 我们可以对不同的代理使用相同的工具。听起来不错!
在当前状态下,此Ghidra MCP插件公开了以下工具:
- 列表函数
- 分解函数
- 重命名函数
- 重命名局部变量
- 评论功能
- 从/到地址获取引用
- 在内存中搜索字符串
现在这主要是一个实验,但我渴望对其进行修补,真正了解它对严肃的逆向工程任务有多有用。
安装
您可以从版本中下载扩展。
要安装它,请启动Ghidra,然后在选择任何工具之前,选择文件->安装扩展->“+”按钮添加下载的ZIP文件。进入代码浏览器工具后,选择文件->配置,然后在“开发人员”下配置,并确保选中“GhidraMCPPlugin”框。
这将启动MCP服务器(您可以确认有 java 在您计算机的端口8888上运行的进程)。
构建
跑 gradle 在项目的根目录中,您应该在 dist 文件夹。
用法
Ghidra中的嵌入式MCP服务器配置了“SSE”传输,因此您需要一个支持SSE的MCP客户端。
或者,安装 mcp-proxy 通过 uv (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端点。
