GhidrAssistMCP项目概览:如何为Ghidra装上原生MCP Server,让AI参与逆向工程
【免费下载链接】GhidrAssistMCP
An native MCP server extension for Ghidra
GhidrAssistMCP 是一款为逆向工程平台 Ghidra 打造的原生 MCP(Model Context Protocol,模型上下文协议)Server 扩展,它让 AI 助手能够直接调用 Ghidra 的工具能力:读取反编译代码、搜索函数、重命名符号、追踪交叉引用。这篇文章面向新手,带你完整了解它的功能、安装步骤与配置方法,快速搭建"AI + Ghidra"的逆向分析工作流。
为什么逆向工程需要 MCP Server?
如果你曾用 AI 辅助分析过二进制文件,大概率经历过这样的流程:
- 在 Ghidra 里选中函数,手动复制反编译代码
- 粘贴到聊天窗口,附上地址、签名等上下文
- 等 AI 分析完,再把结论手动誊回 Ghidra 的注释里
这个过程既低效又容易丢失上下文。MCP 是 AI 与外部工具之间的标准化协议——工具只要以 MCP 的形式暴露能力,AI 客户端就可以像"长出手"一样直接调用它们,而不是靠人肉复制粘贴。
GhidrAssistMCP 做的事正是:把 Ghidra 变成一个 MCP Server,让 AI 助手在分析过程中随时查询和操作 Ghidra 中的程序数据。
一分钟认识 GhidrAssistMCP
一句话概括:它是 Ghidra 的扩展插件,在 Ghidra 进程内部启动一个 MCP Server(默认localhost:8080),把 Ghidra 的反向工程能力封装成 49 个标准 MCP 工具对外提供。
核心能力一览:
| 能力 | 说明 |
|---|---|
| 49 个内置 MCP 工具 | 覆盖程序管理、函数分析、交叉引用、结构体、类型、注释、书签等 |
| 6 个 MCP 资源 | 以ghidra://program/{name}/info等 URI 直接读取程序信息、函数、字符串等 |
| 7 个内置 Prompt | 预置函数分析、漏洞识别、数据流追踪等常见任务的提示词模板 |
| 双 HTTP 传输 | 同时支持 SSE 和 Streamable HTTP,兼容更多 MCP 客户端 |
| 多程序/多窗口 | 一个 Server 服务所有 CodeBrowser 窗口,自动感知当前焦点程序 |
| 结果缓存 + 异步任务 | 重复查询命中缓存;反编译等耗时操作异步执行并可查询/取消 |
📖 完整文档见仓库根目录的 README.md。
核心功能亮点
49 个 MCP 工具:覆盖逆向全流程
工具按场景组织成几大类别(完整清单见 README.md 的 Available Tools 章节,实现位于 src/main/java/ghidrassistmcp/tools/):
| 类别 | 代表工具 | 能做什么 |
|---|---|---|
| 程序管理 | get_binary_info、list_binaries、open_program | 查看程序信息、打开/关闭程序、导入文件 |
| 自动分析 | analyze_program、analysis_options | 触发自动分析、管理分析选项预设 |
| 函数分析 | get_functions、get_function_stack_layout、get_basic_blocks | 列出函数、查看栈帧布局与基本块 |
| 代码读取 | get_code | 按decompiler/disassembly/pcode三种格式取代码 |
| 交叉引用 | xrefs | 查地址/函数引用,支持调用者/被调用者 |
| 结构体 | struct | 创建、合并、按 C 定义修改结构体,自动从变量用法推导结构体 |
| 符号改名 | rename_symbol、batch_rename | 重命名函数/数据/变量,支持批量操作 |
| 注释与书签 | comments、bookmarks | AI 把分析结论直接写回 Ghidra 注释 |
一个值得注意的设计:涉及文件系统和脚本执行的高风险工具(import_file、scripts、export_program)默认处于禁用状态,需要时再在配置界面手动开启,安全默认值对新手很友好。
7 个预置分析提示词
扩展内置了常见逆向任务的 Prompt 模板,源码在 src/main/java/ghidrassistmcp/prompts/:
analyze_function— 函数综合分析identify_vulnerability— 安全漏洞识别trace_data_flow— 数据流追踪trace_network_data— 网络收发调用栈追踪(协议分析)compare_functions— 两个函数的相似性比对document_function— 生成函数文档reverse_engineer_struct— 从使用模式恢复结构体定义
多程序与焦点感知
同时打开多个二进制时,单个 MCP Server 服务所有 CodeBrowser 窗口。每次工具响应都会带上上下文头部,例如:
[Context] Operating on: malware.exe | Active window: malware.exeAI 由此知道"当前操作的是哪个程序",未指定program_name时自动使用当前焦点窗口中的程序,多任务切换不再混淆。
安装步骤:三步装好 Ghidra MCP 扩展
前置条件
- Ghidra 11.4+(官方在 Ghidra 12.1 Public 上测试通过)
- 一个支持 MCP 的 AI 客户端
方式一:安装二进制发行版(推荐)
- 从 Releases 页面下载最新的
.zip扩展包 - 在 Ghidra 中:File → Install Extensions → Add Extension,选择下载的 ZIP,按提示重启
- File → Configure → Configure Plugins,搜索 "GhidrAssistMCP" 并勾选启用
方式二:从源码构建
源码构建需要 Java 25+,并使用仓库内置的 Gradle wrapper:
git clone https://gitcode.com/gh_mirrors/gh/GhidrAssistMCP cd GhidrAssistMCP指定 Ghidra 安装目录后一条命令完成构建与安装(构建时请确保 Ghidra 已关闭):
export GHIDRA_INSTALL_DIR=/path/to/ghidra_12.1_PUBLIC ./gradlew installExtension该命令会把构建产物写入 Ghidra 安装目录的Extensions/Ghidra,并解压到用户扩展目录。重启 Ghidra 后如插件未自动出现,同样通过File → Configure → Configure Plugins启用即可。
初始配置:一键启动 MCP Server
启动 Ghidra 后,通过Window → GhidrAssistMCP(或工具栏图标)打开控制面板。界面包含两个页签(UI 实现见 GhidrAssistMCPProvider.java):
Configuration 页签:
- Host:默认
localhost - Port:默认
8080 - Enable MCP Server:开关
- 下方是全部 MCP 工具的勾选列表,可逐个启用/禁用,点击Save Configuration持久化
Log 页签:实时滚动显示每一条REQ(工具请求)和RES(工具响应),是观察 AI 客户端都在做什么的"仪表盘":
快速上手:MCP 客户端如何连接
Server 启动后,暴露以下端点:
SSE: http://localhost:8080/sse SSE messages: http://localhost:8080/message Streamable HTTP: http://localhost:8080/mcp在你的 AI 客户端中添加以上地址为 MCP Server,即可开始对话。一次典型的工具调用如下(调用get_code反编译main函数):
{ "method": "tools/call", "params": { "name": "get_code", "arguments": { "function": "main", "format": "decompiler" } } }除了工具,客户端还可以直接读取 6 个静态资源,如ghidra://program/{name}/functions(函数列表)、ghidra://program/{name}/strings(字符串)等,适合让 AI 一次性获取程序的静态概览。
Headless 模式:把 MCP Server 带进自动化流水线
不需要打开 GUI 也能用。仓库提供了专用脚本 GAMCPStartServerScript.java,作为analyzeHeadless的 pre/post 脚本运行:
"$GHIDRA_INSTALL_DIR/support/analyzeHeadless" /tmp/ghidra-projects McpHeadless \ -import /path/to/binary \ -scriptPath "$GHIDRASSISTMCP_EXT/ghidra_scripts" \ -preScript GAMCPStartServerScript.java "host=127.0.0.1" "port=8080"加上wait=true参数可让分析完成后 Server 保持运行,供交互式客户端接入。这让"MCP 化的 Ghidra"可以直接嵌入批处理和 CI 场景,是自动化逆向分析的利器。
常见问题排查
| 现象 | 排查方向 |
|---|---|
| Server 无法启动 | 检查 8080 端口是否被占用,查看 Ghidra 控制台日志 |
| AI 客户端连接失败 | 确认 Server 已启用;本地执行curl http://localhost:8080/sse验证;检查防火墙 |
| 工具没有出现在列表中 | 确认插件已启用,检查 Configuration 页签中工具是否被勾选 |
| 工具执行报错 | 确认目标程序已加载进 Ghidra,并在 Log 页签查看具体错误 |
| 异步任务卡住 | 用get_task_status/list_tasks查看,必要时cancel_task取消 |
如需更详细的日志,可在 Ghidra 启动参数中加入:
-Dlog4j.logger.ghidrassistmcp=DEBUG项目结构速览
想深入了解实现的同学,可以从这几个入口读起:
- 总览与协议端点:GhidrAssistMCPServer.java
- 工具注册、缓存与异步任务管理:GhidrAssistMCPBackend.java
- 多窗口焦点追踪的单例协调器:GhidrAssistMCPManager.java
- Headless 服务器:GhidrAssistMCPHeadlessServer.java
- 工具接口定义:McpTool.java
- 内置帮助文档:help.html
项目采用 MIT 许可证(见 LICENSE),可以自由使用与二次开发。
总结
GhidrAssistMCP 用"原生扩展"的方式把 Ghidra 接入了 MCP 生态:
- ✅ 49 个工具 + 6 个资源 + 7 个预置 Prompt,覆盖逆向分析全流程
- ✅ 双传输协议,多程序多窗口,缓存与异步任务一应俱全
- ✅ 三步安装,
localhost:8080即开即用,还支持 headless 自动化 - ✅ 高风险工具默认禁用,安全默认值对新手友好
装好它之后,AI 不再需要你把反编译代码一个个粘贴过去——它可以直接"看见"并操作你正在 Ghidra 中分析的每个字节。这正是 AI 参与逆向工程的第一步。
【免费下载链接】GhidrAssistMCP
An native MCP server extension for Ghidra
相关推荐
为什么jadx-mcp-server被称为AI逆向工程利器:LLM驱动APK分析的完整概览
为什么jadx mcp server被称为AI逆向工程利器:LLM驱动APK分析的完整概览 jadx mcp server 是一款面向 Android 逆向工程
GhidraGPT:把AI逆向助手装进Ghidra——完整功能概览与项目深度介绍
GhidraGPT:把AI逆向助手装进Ghidra——完整功能概览与项目深度介绍 GhidraGPT 是一款开源的 Ghidra AI 逆向插件 ,它将 LLM
ReVa Ghidra MCP 服务器架构全解析:双层插件与 McpServerManager 如何让 AI 驱动逆向工程
ReVa Ghidra MCP 服务器架构全解析:双层插件与 McpServerManager 如何让 AI 驱动逆向工程 ReVa(reverse engin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考