Ghidra MCP服务器
 ](https://openjdk.java.net/projects/jdk/21/) ](https://ghidra-sre.org/) ](CHANGELOG.md)
如果你觉得这有用,请⭐ 为repo加星——这有助于其他人发现它!
一个生产就绪的模型上下文协议(MCP)服务器,将Ghidra强大的逆向工程能力与现代人工智能工具和自动化框架连接起来。 193个MCP工具,久经考验的人工智能工作流程,以及最全面的Ghidra MCP集成。
重要提示:v4.3+迁移说明
如果您要从旧版本升级,请先阅读以下内容:
- Python桥不再接受
--ghidra-server. - 通过环境变量设置Ghidra TCP URL:
GHIDRA_MCP_URL. - 桥现在更喜欢先进行本地UDS自动发现。如果UDS可用,即使TCP存在,它也会使用UDS。
- 如果您的Ghidra状态显示
TCP: Disabled,直接HTTP调用,如http://127.0.0.1:17171/...将按设计失败。
建议的MCP客户端配置(stdio):
[mcp_servers.ghidra]
command = "python3"
args = ["/absolute/path/to/bridge_mcp_ghidra.py", "--transport", "stdio"]
env = { GHIDRA_MCP_URL = "http://127.0.0.1:17171" } # used when TCP mode is enabled/needed
enabled = true为什么选择Ghidra MCP?
大多数Ghidra MCP实现都为您提供了一些只读工具,到此为止。这个项目是不同的——它是由一位逆向工程师构建的,他每天在真实的二进制文件上使用它,而不是作为演示。
- 193个MCP工具 --比任何竞争性实现多3倍。不仅仅是读取操作,还有重命名、键入、注释、结构创建和脚本执行的完全写入权限。
- 久经考验的人工智能工作流程 --经过验证的文档工作流程(V5)在数百个功能中得到了改进。包括分步提示、匈牙利符号参考、批处理指南和孤立代码发现。
- 生产级可靠性 -原子事务、批处理操作(API调用减少93%)、可配置超时和优雅的错误处理。没有无声的失败。
- 跨二进制文档传输 --SHA-256函数哈希匹配会自动在二进制版本之间传播文档。文件一次,到处申请。
- 完全集成Ghidra服务器 --连接到共享的Ghidra服务器、管理存储库、版本控制、签出/签入工作流和多用户协作。
- 无头模式和GUI模式 --使用或不使用Ghidra GUI运行。Docker已为CI/CD管道和大规模自动化分析做好准备。
🌟 特性
核心MCP集成
- 完全MCP兼容性 --模型上下文协议的完整实现
- 193 MCP工具 -全面的API表面,涵盖二进制分析的各个方面
- 生产就绪可靠性 --原子事务、批处理操作、可配置超时
- 实时分析 --与Ghidra分析引擎的实时集成
二元分析能力
- 功能分析 --反编译、调用图、交叉引用、完整性评分
- 数据结构发现 --结构/联合/枚举创建,包括字段分析和命名建议
- 串提取 --正则表达式搜索、质量过滤和字符串锚定函数发现
- 进出口分析 --符号表、外部位置、顺序导入解析
- 内存和数据检查 --原始内存读取、字节模式搜索、数组边界检测
- 跨二进制文档 --函数哈希匹配和跨版本的文档传播
人工智能驱动的逆向工程工作流程
- 功能文档工作流V5 --使用匈牙利符号、类型审核和自动验证评分进行完整功能文档的7步流程
- 批处理文档 --并行子代理调度,用于同时记录多个功能
- 孤立代码发现 --自动扫描仪在已知代码之间的间隙中发现未被发现的功能
- 数据类型调查 --结构发现和现场分析的系统工作流程
- 跨版本匹配 --跨不同二进制版本的基于哈希的函数匹配
开发与自动化
- Ghidra脚本管理 --完全通过MCP创建、运行、更新和删除Ghidra脚本
- 多程序支持 --在多个打开的程序之间切换和比较
- 批量操作 -批量重命名、注释、键入和标签管理(API调用减少93%)
- 无头服务器 --无需Ghidra GUI的完整分析——Docker和CI/CD就绪
- 项目和版本控制 --创建项目、管理文件、Ghidra服务器集成
- 分析控制 --以编程方式列出、配置和触发Ghidra分析器
🚀 快速开始
先决条件
- Java 21 LTS (建议使用OpenJDK)
- Apache Maven 3.9+
- 吉德拉12.0.3 (或兼容版本)
- Python 3.8+ 使用pip
安装
推荐用于Windows:使用mcp4ghidra-setup.ps1作为主要切入点。 它在一个命令中处理先决条件设置+构建+部署。 重要提示:-SetupDeps仅安装Maven/Ghidra JAR依赖项。-Deploy是最终用户命令,并且(默认情况下)在构建/部署之前也确保Python要求。
- 克隆存储库:
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp- 建议:先运行环境预检:
.\mcp4ghidra-setup.ps1 -Preflight -GhidraPath "C:\ghidra_12.0.3_PUBLIC"- 构建并部署到Ghidra(单个命令):
.\mcp4ghidra-setup.ps1 -Deploy -GhidraPath "C:\ghidra_12.0.3_PUBLIC"- 可选的严格/手动模式 (高级):
# Skip automatic prerequisite setup
.\mcp4ghidra-setup.ps1 -Deploy -NoAutoPrereqs -GhidraPath "C:\ghidra_12.0.3_PUBLIC"- 显示脚本帮助:
.\mcp4ghidra-setup.ps1 -Help
# or
Get-Help .\mcp4ghidra-setup.ps1 -Detailed- 可选的仅构建模式 (高级/故障排除):
# Preferred: script-managed build-only
.\mcp4ghidra-setup.ps1 -BuildOnly # Manual Maven build (requires Ghidra deps already installed in local .m2)
mvn clean package assembly:single -DskipTests安装(Linux--Ubuntu/Debian)
使用 mcp4ghidra-setup.sh 作为Linux的主要入口点。 它处理先决条件设置、Maven依赖项安装、构建和部署。- 克隆存储库:
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp- 安装系统必备组件 (如果尚未安装):
sudo apt update && sudo apt install -y openjdk-21-jdk maven python3 python3-pip curl jq unzip- 飞行前运行环境:
./mcp4ghidra-setup.sh --preflight --ghidra-path ~/ghidra_12.0.3_PUBLIC- 构建并部署到Ghidra(单个命令):
./mcp4ghidra-setup.sh --deploy --ghidra-path ~/ghidra_12.0.3_PUBLIC这将:
- 将Ghidra JAR依赖项安装到本地 ~/.m2/repository - 构建 GhidraMCP-.zip 使用Maven - 将扩展解压缩到特定于操作系统的Ghidra用户扩展目录 - 更新 preferences 和 LastExtensionImportDirectory - 安装Python要求
- 可选:仅设置Maven依赖关系:
./mcp4ghidra-setup.sh --setup-deps --ghidra-path ~/ghidra_12.0.3_PUBLIC- 显示脚本帮助:
./mcp4ghidra-setup.sh --help按操作系统扩展/配置路径 - Linux:$HOME/.config/ghidra/ghidra__PUBLIC/- macOS:$HOME/Library/ghidra/ghidra__PUBLIC/- 扩展文件夹:/Extensions/GhidraMCP/
其他辅助脚本 (PowerShell实用程序的Linux等效工具): -functions-extract.sh-通过Ghidra REST API提取函数(使用curl/jq) -functions-process.sh--使用Claude CLI进行并行函数处理
基本用法
选项1:标准传输(推荐用于AI工具)
python bridge_mcp_ghidra.py使用明确的TCP回退URL(如果需要):
GHIDRA_MCP_URL=http://127.0.0.1:17171 python bridge_mcp_ghidra.py --transport stdio注: --ghidra-server 在v4.3+中被删除。选项2:SSE传输(Web/HTTP客户端)
python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081在吉德拉
- 启动Ghidra并打开一个 代码浏览器 窗口
- 在 代码浏览器,通过启用插件 文件>配置>配置所有插件>GhidraMCP
- 可选:通过配置自定义端口 代码浏览器>编辑>工具选项>GhidraMCP HTTP服务器
- 通过启动服务器 工具>GhidraMCP>启动MCP服务器
- 检查 工具>GhidraMCP>服务器状态 确认运输:
- UDS: Running 和 TCP: Disabled 意味着桥接器/工具应通过UDS连接。 - TCP: Running 表示HTTP端点在您配置的端口上可用(默认 8089 除非更改)。
验证它是否正常工作
# Quick health check
curl http://127.0.0.1:8089/check_connection
# Expected: "Connected: GhidraMCP plugin running with program ''"
# Get version info
curl http://127.0.0.1:8089/get_version❓ 故障排除
“GhidraMCP”菜单未出现在“工具”中
原因: 插件未启用或安装不正确。
解决方案:
- 验证是否安装了扩展: 文件>安装扩展 --应列出GhidraMCP
- 启用插件: 文件>配置>配置所有插件>GhidraMCP (勾选此框)
- 重新启动Ghidra 安装/启用后
服务器没有响应/连接被拒绝
原因: 服务器未启动或端口错误。
解决方案:
- 确保已启动服务器: 工具>GhidraMCP>启动MCP服务器
- 检查配置的端口: 编辑>工具选项>GhidraMCP HTTP服务器
- 检查端口是否正在使用中:
# Linux/macOS
lsof -i :8089
# Windows
netstat -ano | findstr :8089- 查找Ghidra控制台中的错误: 窗口>控制台
MCP工具出现故障,显示“传输关闭”
原因: 网桥进程在启动时退出(最常见的是更新后过时的CLI参数)。
修复:
- 移除
--ghidra-server来自MCP客户端参数。 - 用途:
- args: ["/path/to/bridge_mcp_ghidra.py", "--transport", "stdio"] - 环境: GHIDRA_MCP_URL=http://127.0.0.1:17171 (或您的TCP端口)
- 在客户端中重新启动MCP服务器切换。
- 在Ghidra,检查 工具>GhidraMCP>服务器状态:
- 如果 TCP: Disabled,HTTP检查 127.0.0.1: 预计会失败。 - 这在使用UDS传输时是正常的。
500内部服务器错误
原因: 服务器端异常,通常是由于缺少程序数据。
解决方案:
- 确保在CodeBrowser中加载二进制文件
- 首先运行自动分析: 分析>自动分析
- 检查Ghidra控制台(窗口>控制台)Java异常
- 某些操作需要经过充分分析的二进制文件
404未找到错误
原因: 终结点不存在或URL错误。
解决方案:
- 验证终结点是否存在:
curl http://127.0.0.1:8089/get_version - 检查端点名称中的拼写错误
- 确保使用正确的HTTP方法(GET与POST)
扩展未出现在安装扩展中
原因: JAR文件位置错误。
解决方案:
- 手动安装位置:
~/.ghidra/ghidra_12.0.3_PUBLIC/Extensions/GhidraMCP/lib/GhidraMCP.jar - 或使用: 文件>安装扩展>添加 并选择ZIP文件
- 确保为您的Ghidra版本构建了JAR/ZIP
构建失败,显示“未找到Ghidra依赖项”
原因: Ghidra JAR未安装在本地Maven存储库中。
解决方案:
# Windows (recommended)
.\mcp4ghidra-setup.ps1 -SetupDeps -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
# Or manual install (see install-ghidra-deps.sh)📊 生产绩效
- MCP工具184个工具已全面实施
- 速度:对大多数行动的反应低于秒
- 效率:通过批处理操作减少93%的API调用
- 可靠性:具有全有或全无语义的原子事务
- AI工作流程:经过验证的文档提示在数百个实际功能中得到了改进
- 部署:自动版本感知部署脚本
🛠️ API 参考
核心业务
check_connection-验证MCP连接get_metadata-程序元数据和信息get_version-服务器版本信息get_function_count-返回程序的函数总数get_entry_points-二进制入口点发现get_current_address-获取光标地址(仅限GUI)get_current_function-在光标处获取功能(仅GUI)get_current_selection-获取当前选择上下文(地址+函数)read_memory-从内存中读取原始字节save_program-保存当前程序exit_ghidra-保存并优雅退出Ghidra
功能分析
list_functions-列出所有函数(分页)list_functions_enhanced-带有isThunk/is外部标志的列表list_classes-列出命名空间/类名(分页)search_functions_enhanced-使用过滤器进行高级功能搜索decompile_function-将函数分解为C伪代码force_decompile-强制重新反编译(绕过缓存)batch_decompile-批量反编译多个函数get_function_callers-获取函数调用者get_function_callees-获取函数调用项get_function_call_graph-函数关系图get_full_call_graph-完整的程序调用图get_function_signature-获取函数原型字符串get_function_hash-标准化函数操作码的SHA-256哈希get_bulk_function_hashes-带过滤器的分页批量哈希get_function_jump_targets-从反汇编中获取跳转目标地址get_function_metrics-获取函数的复杂性度量get_function_xrefs-获取函数交叉引用analyze_function_complete-综合功能分析analyze_function_completeness-文件完整性评分batch_analyze_completeness-多功能批量完整性分析find_similar_functions_fuzzy-模糊相似性匹配bulk_fuzzy_match-所有功能的批量模糊匹配diff_functions-并行区分两种功能validate_function_prototype-验证函数原型字符串can_rename_at_address-检查地址是否可以重命名delete_function-删除地址处的功能
内存和数据
list_segments-内存段和布局list_data_items-列出定义的数据标签和值(分页)list_data_items_by_xrefs-按外部参照计数排序的数据项get_function_by_address-功能在地址disassemble_function-拆卸列表disassemble_bytes-原始字节反汇编get_xrefs_to-地址的交叉引用get_xrefs_from-地址的交叉引用get_bulk_xrefs-批量交叉引用查找analyze_data_region-分析内存区域结构inspect_memory_content-查看原始内存内容detect_array_bounds-检测阵列边界search_byte_patterns-搜索字节模式create_memory_block-创建新的内存块
跨二进制文档
get_function_documentation-导出完整的功能文档apply_function_documentation-将文档导入目标功能compare_programs_documentation-比较程序之间的文档build_function_hash_index-构建持久JSON索引lookup_function_by_hash-在索引中查找匹配函数propagate_documentation-将文档应用于所有匹配的实例
数据类型和结构
list_data_types-可用数据类型search_data_types-搜索数据类型get_data_type_size-获取数据类型的字节大小get_valid_data_types-获取有效Ghidra内置类型的列表get_struct_layout-获取结构的详细现场布局validate_data_type-验证数据类型语法validate_data_type_exists-检查数据类型是否存在create_struct-创建自定义结构add_struct_field-向结构中添加字段modify_struct_field-修改现有字段remove_struct_field-从结构中删除字段create_enum-创建枚举get_enum_values-获取枚举值create_array_type-创建数组数据类型create_typedef-创建typedef别名create_union-创建联合数据类型create_pointer_type-创建指针数据类型clone_data_type-用新名称克隆数据类型apply_data_type-将类型应用于地址delete_data_type-删除数据类型consolidate_duplicate_types-合并重复类型suggest_field_names-人工智能辅助的结构字段名称建议create_data_type_category-在类型管理器中创建类别文件夹move_data_type_to_category-将类型移动到其他类别list_data_type_categories-列出所有数据类型类别import_data_types-从GDT/头文件导入类型
符号和标签
list_imports-导入的符号和库list_exports-导出的符号和函数list_external_locations-外部位置参考get_external_location-具体外部位置细节list_strings-通过分析提取字符串search_memory_strings-按正则表达式/子字符串模式搜索字符串list_namespaces-可用命名空间list_globals-全局变量create_label-在地址处创建标签batch_create_labels-批量标签创建delete_label-删除地址处的标签batch_delete_labels-批量标签删除rename_label-重命名现有标签rename_or_label-重命名或创建标签
重命名和文档
rename_function-按名称重命名函数rename_function_by_address-按地址重命名函数rename_data-重命名数据项rename_variables-重命名函数变量rename_global_variable-重命名全局变量rename_external_location-重命名外部引用batch_rename_function_components-批量重命名set_decompiler_comment-设置反编译器注释set_disassembly_comment-设置拆卸注释set_plate_comment-设置功能板注释get_plate_comment-获取功能板评论batch_set_comments-批量评论设置clear_function_comments-清除函数的所有注释list_bookmarks-列出所有书签set_bookmark-创建或更新书签delete_bookmark-删除书签
类型系统
set_function_prototype-设置函数签名set_local_variable_type-设置变量类型set_parameter_type-设置参数类型batch_set_variable_types-批量类型设置set_variable_storage-控制变量存储位置set_function_no_return-将函数标记为不返回clear_instruction_flow_override-指令上的明确流量超控list_calling_conventions-可用的通话约定get_function_variables-获取所有函数变量get_function_labels-在功能中获取标签
Ghidra脚本管理
list_scripts-列出可用脚本run_script-运行脚本list_ghidra_scripts-列出自定义Ghidra脚本save_ghidra_script-保存新脚本get_ghidra_script-获取脚本内容run_ghidra_script-按名称执行Ghidra脚本run_script_inline-执行内联脚本代码update_ghidra_script-更新现有脚本delete_ghidra_script-删除脚本
多程序支持
list_open_programs-列出所有打开的程序get_current_program_info-当前程序详细信息switch_program-切换活动程序list_project_files-列出项目文件open_program-从项目中打开程序
项目生命周期
create_project-创建一个新的Ghidra项目open_project-打开现有项目close_project-关闭当前项目delete_project-删除项目list_projects-在目录中列出Ghidra项目
项目组织
create_folder-在项目树中创建文件夹move_file-将域文件移动到另一个文件夹move_folder-将文件夹移动到其他位置delete_file-从项目中删除域文件
分析工具
find_next_undefined_function-查找未定义的函数find_undocumented_by_string-按字符串引用查找函数batch_string_anchor_report-串锚分析get_assembly_context-获取程序集上下文analyze_struct_field_usage-分析结构字段访问get_field_access_context-获取字段访问模式create_function-在地址处创建函数analyze_control_flow-圈复杂度和循环检测analyze_call_graph-构建函数调用图analyze_api_call_chains-检测API调用威胁模式detect_malware_behaviors-检测恶意软件行为类别find_anti_analysis_techniques-寻找反分析技术find_dead_code-检测无法访问的代码extract_iocs_with_context-从字符串中提取IOCapply_data_classification-将数据分类应用于地址
分析控制
list_analyzers-列出所有可用的Ghidra分析仪configure_analyzer-启用/禁用或配置分析器run_analysis-以编程方式触发Ghidra自动分析
服务器连接(Ghidra服务器)
connect_server-连接到Ghidra服务器disconnect_server-断开与Ghidra服务器的连接server_status-检查服务器连接状态list_repositories-列出服务器上的存储库create_repository-创建新存储库list_repository_files-列出服务器存储库文件夹中的文件get_repository_file-获取服务器存储库中文件的元数据
版本控制
checkout_file-从版本控制中检出文件checkin_file-签入带有注释的文件undo_checkout-撤消结账而不提交add_to_version_control-将文件添加到版本控制
版本历史记录
get_version_history-获取文件的完整版本历史记录get_checkouts-获取活动结账状态
管理员
terminate_checkout-强制终止用户的结账list_server_users-列出Ghidra服务器上的所有用户set_user_permissions-设置用户的存储库访问级别
知识数据库(仅桥接,需要PostgreSQL)
store_function_knowledge-将记录的功能数据存储到知识数据库中query_knowledge_context-按关键字搜索记录的函数(ILIKE+tsvector)store_ordinal_mapping-按二进制版本存储序号到名称的映射get_ordinal_mapping-按二进制、版本、序号查找已知序号export_system_knowledge-按游戏系统将记录的功能导出为降价
看 更改日志.md 版本历史。
🏗️ 建筑
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AI/Automation │◄──►│ MCP Bridge │◄──►│ Ghidra Plugin │
│ Tools │ │ (bridge_mcp_ │ │ (GhidraMCP.jar) │
│ (Claude, etc.) │ │ ghidra.py) │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
MCP Protocol HTTP REST Ghidra API
(stdio/SSE) (localhost:8089) (Program, Listing)组件
- bridge_mcp_ghidra.py --将MCP协议转换为HTTP调用的Python MCP服务器(193个工具)
- GhidraMCP.jar --Ghidra插件,通过HTTP公开分析功能(176个GUI端点)
- MCP4Ghidra无头服务器 --独立无头服务器——184个端点,无需GUI
- ghidra_scripts/ --常见任务的自动化脚本集合
🔧 发展
从源头构建
# Recommended: one command does setup + build + deploy
.\mcp4ghidra-setup.ps1 -Deploy -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
# Optional: build only (no deploy)
.\mcp4ghidra-setup.ps1 -BuildOnly
# Version bump (updates all 7 project files atomically)
.\bump-version.ps1 -New X.Y.Z脚本命令参考
主要操作(选择一个):
-Deploy(默认):自动设置前置条件、构建、部署-SetupDeps:将Ghidra JAR安装到本地.m2(仅限Maven deps;不安装Python包)-BuildOnly:仅构建工件-Clean:删除中的构建/缓存工件和本地Ghidra依赖文件夹.m2适用于活动版Ghidra-Preflight:验证工具、路径、所需的Ghidra jar和写入权限,而无需进行更改
有用的选项:
-GhidraPath "C:\ghidra_12.0.3_PUBLIC"-GhidraVersion "12.0.3"-StrictPreflight-NoAutoPrereqs-SkipBuild-SkipRestart-DryRun-Force-Verbose-Help
快速示例:
# Standard deploy (recommended)
.\mcp4ghidra-setup.ps1 -Deploy -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
# First-time dependency setup only
.\mcp4ghidra-setup.ps1 -SetupDeps -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
# Build only
.\mcp4ghidra-setup.ps1 -BuildOnly
# Preflight checks only
.\mcp4ghidra-setup.ps1 -Preflight -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
# Strict preflight (fails on warnings)
.\mcp4ghidra-setup.ps1 -Preflight -StrictPreflight -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
# Show command help
.\mcp4ghidra-setup.ps1 -Help项目结构
ghidra-mcp/
├── bridge_mcp_ghidra.py # MCP server (Python, 193 tools)
├── src/main/java/ # Ghidra plugin + headless server (Java)
│ └── com/xebyte/
│ ├── MCP4GhidraPlugin.java # GUI plugin (176 endpoints)
│ ├── headless/ # Headless server (184 endpoints)
│ └── core/ # Shared service layer (12 services)
├── ghidra_scripts/ # Automation scripts
├── tests/ # Python unit tests + endpoint catalog
│ ├── unit/ # Catalog consistency, schema, tool function tests
│ └── endpoints.json # Endpoint specification (191 entries)
├── docs/ # Documentation
│ ├── prompts/ # AI workflow prompts
│ ├── releases/ # Version release notes
│ └── project-management/ # Project docs
└── .github/workflows/ # CI/CD pipelines依赖库
Ghidra JAR必须安装到本地Maven存储库中(~/.m2/repository)在编译之前。 这是每台机器的一次性设置,当您的Ghidra版本更改时也是如此。 -Deploy 现在默认情况下会自动安装这些。
该工具强制以下内容之间的版本一致性:
pom.xml(ghidra.version)-GhidraVersion(如有提供)-GhidraPath版本段(例如。,ghidra_12.0.3_PUBLIC)
如果这些不匹配,部署将很快失败,并出现明显的错误。
故障排除:版本不匹配
如果看到版本不匹配错误,请对齐所有三个值:
pom.xml→ghidra.version-GhidraVersion(如果使用)-GhidraPath版本段(ghidra_X.Y.Z_PUBLIC)
然后重新运行:
.\mcp4ghidra-setup.ps1 -Deploy -GhidraPath "C:\ghidra_12.0.3_PUBLIC" -GhidraVersion "12.0.3"# Windows
.\mcp4ghidra-setup.ps1 -SetupDeps -GhidraPath "C:\path\to\ghidra_12.0.3_PUBLIC"
# Optional version override
.\mcp4ghidra-setup.ps1 -SetupDeps -GhidraPath "C:\path\to\ghidra_12.0.3_PUBLIC" -GhidraVersion "12.0.3"所需库(14个JAR,~37MB):
| 库 | 源路径 | 目的 |
|---|---|---|
| Base.jar | Features/Base/lib/ | Ghidra核心功能 |
| 解压缩器.jar | Features/Decompiler/lib/ | 反编译引擎 |
| PDB罐 | Features/PDB/lib/ | Microsoft PDB符号支持 |
| FunctionID.jar | Features/FunctionID/lib/ | 功能识别 |
| 软件建模.jar | Framework/SoftwareModeling/lib/ | 程序模型API |
| Project.jar | Framework/Project/lib/ | 项目管理 |
| Docking.jar | Framework/Docking/lib/ | UI对接框架 |
| Generic.jar | Framework/Generic/lib/ | 通用实用程序 |
| 实用程序.jar | Framework/Utility/lib/ | 核心公用设施 |
| Gui.jar | Framework/Gui/lib/ | GUI组件 |
| FileSystem.jar | Framework/FileSystem/lib/ | 文件系统支持 |
| Graph.jar | Framework/Graph/lib/ | 图形/调用图分析 |
| DB.jar | Framework/DB/lib/ | 数据库操作 |
| Emulation.jar | Framework/Emulation/lib/ | P代码仿真 |
备注:库中不包括库(请参阅 .gitignore).在构建之前,您必须从Ghidra安装中安装它们。脚本角色: -mcp4ghidra-setup.ps1:统一自动化脚本(-SetupDeps,-BuildOnly,-Deploy,-Clean) - 默认-Deploy行为:自动设置先决条件,然后构建和部署 - 使用-NoAutoPrereqs用于严格/手动先决条件管理
发展特征
- 自动化部署:版本感知部署脚本
- 批量操作:将API调用减少93%
- 原子事务:全有或全无语义
- 综合录井:调试和跟踪功能
📚 文档
核心文档
AI工作流提示
- 功能文档V5 --主要工作流程:匈牙利符号、类型审核和验证评分的7步流程
- 批处理文档V5 --多功能处理的并行子代理调度
- 孤立代码发现 --用于未发现功能的自动扫描仪
- 数据类型调查 --系统结构发现
- 跨版本匹配 --基于哈希的函数匹配
- 快速启动提示 --简化初学者工作流程
- 所有提示 --完整提示索引
发布历史
🐳 无头服务器(Docker)
GhidraMCP包括一个无头服务器模式,用于在没有Ghidra GUI的情况下进行自动分析。
Docker快速入门
# Build and run
docker-compose up -d ghidra-mcp
# Test connection
curl http://localhost:8089/check_connection
# Connection OK - GhidraMCP Headless Server v4.3.0无头API工作流
# 1. Load a binary
curl -X POST -d "file=/data/program.exe" http://localhost:8089/load_program
# 2. Run auto-analysis (identifies functions, strings, data types)
curl -X POST http://localhost:8089/run_analysis
# 3. List discovered functions
curl "http://localhost:8089/list_functions?limit=20"
# 4. Decompile a function
curl "http://localhost:8089/decompile_function?address=0x401000"
# 5. Get metadata
curl http://localhost:8089/get_metadata关键无头端点
| 端点 | 方法 | 描述 |
|---|---|---|
/load_program | POST | 加载二进制文件进行分析 |
/run_analysis | POST | 运行Ghidra自动分析 |
/list_functions | GET | 列出所有发现的函数 |
/list_exports | GET | 列出导出的符号 |
/list_imports | GET | 列出导入的符号 |
/decompile_function | GET | 将函数分解为C代码 |
/create_function | POST | 在地址处创建函数 |
/get_metadata | GET | 获取程序元数据 |
/create_project | POST | 创建Ghidra项目 |
/list_analyzers | GET | 列出可用分析器 |
/server/status | GET | 检查Ghidra服务器连接 |
配置
Docker的环境变量:
GHIDRA_MCP_PORT-服务器端口(默认:8089)GHIDRA_MCP_BIND_ADDRESS-绑定地址(Docker默认为0.0.0.0)JAVA_OPTS-JVM选项(默认值:-Xmx4g-XX:+UseG1GC)
🤝 贡献
看 贡献.md 详细的贡献指南。
快速开始
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 构建并测试您的更改(
mvn clean package assembly:single -DskipTests) - 根据需要更新文档
- 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。
🏆 生产状态
| 度量 | 值 |
|---|---|
| 版本 | 4.3.0 |
| MCP工具 | 193已完全执行 |
| GUI端点 | 175(MCP4Ghidra插件) |
| 无头端点 | 183(MCP4Ghidra无头服务器) |
| 编译 | ✅ 100%成功 |
| 批量效率 | API呼叫减少93% |
| AI工作流程 | 7个经过验证的文档工作流程 |
| Ghidra脚本 | 包括自动化脚本 |
| 文档 | 全面的AI提示 |
看 更改日志.md 查看版本历史和发行说明。
🙏 致谢
👥 贡献者
该项目得益于敬业贡献者的工作:
核心贡献者
@heeen --重大贡献包括:
- 用于交叉二进制比较的模糊函数匹配和结构化差分(#13)
- 脚本执行改进和错误修复(#12)
- 新的API端点:
save_program,exit_ghidra,delete_function,create_memory_block,run_script_inline(#11)
- 架构愿景:注释驱动设计、UDS传输、Python桥优化建议
- Ghidra团队 -对于令人难以置信的逆向工程平台
- 模型上下文协议 -用于标准化的AI集成框架
- 贡献者 -用于测试、反馈和改进
______________________________________________________________________
🔗 相关项目
- 再宇宙 --Ghidra BSim PostgreSQL平台,用于大规模二进制相似性分析。与GhidraMCP完美搭配,用于人工智能驱动的逆向工程工作流程。
- 作弊引擎服务器python --用于动态内存分析和调试的MCP服务器。
______________________________________________________________________
具备企业级可靠性和全面的二进制分析功能,可用于生产部署。
