GhidraMCP

GhidraMCP

基于套接字的 Ghidra MCP 服务器

13bm

研究与数据
访问服务器

README

GhidraMCP

一个实现了模型上下文协议 (MCP) 的 Ghidra 插件,用于 AI 辅助的二进制分析。

概述

GhidraMCP 通过模型上下文协议 (MCP) 弥合了 Ghidra 强大的逆向工程能力和 AI 助手之间的差距。 该插件使 AI 模型能够连接到 Ghidra 并协助进行二进制分析任务,从而使逆向工程更加高效和易于访问。

特性

  • AI 驱动的二进制分析: 通过模型上下文协议将 AI 助手连接到 Ghidra
  • 自然语言界面: 用简单的英语提问有关二进制文件的问题
  • 深度代码洞察: 检索详细的函数信息和反编译代码
  • 二进制结构分析: 探索导入、导出和内存布局
  • 自动化安全分析: 获取有关潜在安全漏洞的 AI 辅助见解
  • 基于 Socket 的架构: Ghidra 和 AI 助手之间的高性能通信
  • 跨平台兼容性: 在 Ghidra 支持的所有平台上运行

安装

前提条件

  • Ghidra 11.2.1+
  • Java 17 或更高版本
  • Python 3.8+ (用于桥接脚本)

步骤

  1. Releases 页面下载最新的 release ZIP 文件
  2. 打开 Ghidra
  3. 导航到 File > Install Extensions
  4. 单击 "+" 按钮并选择下载的 ZIP 文件
  5. 重新启动 Ghidra 以完成安装
  6. 通过转到 File > Configure > Miscellaneous 并选中 "MCPServerPlugin" 旁边的框来启用扩展

用法

启动 MCP 服务器

启用插件后,当您打开 Ghidra 项目时,服务器会自动启动。 默认情况下,它运行在:

  • 主机: localhost
  • 端口: 8765

您可以通过检查 Ghidra 控制台中的以下消息来验证服务器是否正在运行:

MCP Server started on port 8765

连接 AI 助手

连接 Claude

要将 Claude 连接到 GhidraMCP 插件:

  1. 安装 MCP 桥接脚本:

    pip install FastMCP
    
  2. 将以下配置添加到您的 Claude MCP 设置:

    {
      "mcpServers": {
        "ghidra": {
          "command": "python",
          "args": ["PATH-TO-REPO/GhidraMCP/ghidra_server.py"]
        }
      }
    }
    

桥接脚本在 Ghidra 和 Claude 之间建立连接,从而可以通过自然语言实现实时二进制分析。

可用工具

该插件通过 MCP 接口公开了几个强大的功能:

工具 描述
get_function(address, decompile=False) 检索有关特定地址的函数的详细信息
analyze_binary(question) 询问有关已加载二进制文件的自然语言问题
get_imports() 列出二进制文件中的所有导入函数
get_exports() 列出二进制文件中的所有导出函数
get_memory_map() 获取二进制文件的内存布局
connect_to_ghidra(host, port) 连接到特定的 Ghidra 实例
rename_function(current_name, new_name) 按当前名称重命名函数
rename_data(address, new_name) 重命名特定地址的数据标签
extract_api_call_sequences(address) 从函数中提取 API 调用以进行安全分析
identify_user_input_sources() 查找二进制文件中潜在的用户输入源
generate_call_graph(address, max_depth=3) 生成函数调用的分层表示
identify_crypto_patterns() 检测二进制文件中的加密实现
find_obfuscated_strings() 查找可能被混淆的字符串

示例查询

以下是通过 MCP 兼容的 AI 客户端可以提出的问题示例:

  • "此二进制文件中使用了哪些加密算法?"
  • "你能给我展示一下 0x401000 处函数的反编译代码吗?"
  • "这个恶意软件发出了哪些可疑的 API 调用?"
  • "根据其导入和导出,解释此二进制文件的用途。"
  • "此程序中的身份验证机制如何工作?"
  • "此代码中是否存在任何潜在的缓冲区溢出漏洞?"
  • "此二进制文件建立了哪些网络连接?"
  • "你能把这个函数重命名为更具描述性的名称吗?"
  • "向我展示所有可能被利用的潜在用户输入源。"
  • "为 main 函数生成调用图。"

高级用法

安全分析能力

GhidraMCP 提供了专门用于安全分析的工具:

API 调用序列分析

从函数中提取和分类外部 API 调用以进行安全分析。 这有助于识别潜在的危险函数并了解它们的交互。

用户输入源

识别外部数据进入程序的入口点,这对于漏洞评估和了解攻击面至关重要。

调用图生成

创建结构化的调用图以了解执行流程、跟踪数据传播并识别潜在的攻击路径。

加密模式检测

识别加密实现,包括标准算法(AES、RSA 等)和基于代码模式的自定义实现。

混淆字符串检测

查找可能通过 XOR 编码或逐字符构造等技术进行混淆的字符串。

自定义配置

您可以通过编辑 MCPServerPlugin.java 文件来修改服务器端口:

server.setPort(YOUR_CUSTOM_PORT);

与分析工作流程集成

GhidraMCP 可以集成到您现有的分析工作流程中:

  1. 使用 Ghidra 的标准分析功能来识别感兴趣的区域
  2. 通过 GhidraMCP 利用 AI 辅助来获得更深入的了解
  3. 将 AI 见解与您的手动分析相结合
  4. 根据 AI 见解重命名函数和数据,以提高可读性

从源代码构建

要从源代码构建插件:

  1. 克隆此存储库

    git clone https://github.com/yourusername/GhidraMCP.git
    
  2. 按照 Ghidra Developer Guide 中的描述设置 Ghidra 开发环境

  3. 设置 GHIDRA_INSTALL_DIR 环境变量:

    export GHIDRA_INSTALL_DIR=/path/to/ghidra
    
  4. 使用 Gradle 构建:

    ./gradlew buildExtension
    
  5. 扩展 ZIP 将在 dist 目录中创建

故障排除

常见问题

  • 连接问题: 确保 Ghidra 实例正在运行并且插件已启用
  • 端口冲突: 如果端口 8765 已在使用中,请在插件配置中修改端口
  • 桥接脚本错误: 检查是否已使用 pip install FastMCP 安装所有必需的 Python 包
  • 分析函数的空结果: 如果二进制文件不包含相关模式,某些安全分析函数可能会返回空结果

日志

检查以下日志以进行故障排除:

  • Ghidra 控制台,用于服务器端消息
  • ghidra_mcp_bridge.log,用于桥接脚本问题

贡献

欢迎贡献! 请随时提交问题或拉取请求。

  1. Fork 存储库
  2. 创建您的功能分支:git checkout -b feature/amazing-feature
  3. 提交您的更改:git commit -m 'Add some amazing feature'
  4. 推送到分支:git push origin feature/amazing-feature
  5. 打开一个拉取请求

致谢


GhidraMCP 不隶属于 NSA 或 Ghidra 项目,也不受其认可。

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python