Se você achar isso útil, marque o repositório com estrela – isso ajuda outras pessoas a descobri-lo!
Um servidor Model Context Protocol (MCP) pronto para produção que une os poderosos recursos de engenharia reversa do Ghidra com ferramentas modernas de IA e estruturas de automação.
- Compatibilidade total com MCP – Implementação completa do Protocolo de Contexto do Modelo
- 110 ferramentas MCP disponíveis – Superfície API abrangente para análise binária
- Confiabilidade pronta para produção – Operações em lote testadas e transações atômicas
- Análise em tempo real – Integração ao vivo com o mecanismo de análise do Ghidra
Capacidades de análise binária
- Análise de Função – Descompilação, gráficos de chamadas, referências cruzadas
- Descoberta de estrutura de dados – Criação automática de estrutura/união/enum
- Extração de String – Análise e categorização abrangente de strings
- Análise de Importação/Exportação – Tabela de símbolos e mapeamento de dependências de biblioteca
- Mapeamento de memória – Documentação completa de layout de memória
- Documentação Cross-Binária – Correspondência de hash de função em versões binárias
- Ciclo de Desenvolvimento Automatizado – Pipeline completo de construção-teste-implantação-verificação
- Gerenciamento de script Ghidra – Crie, execute e gerencie scripts Ghidra via MCP
- Suporte multiprograma – Alternar e comparar vários programas abertos
- Operações em lote – Renomeação, comentários e digitação em massa eficientes
- Java 21LTS (OpenJDK recomendado)
- ApacheMaven 3.9+
- Guia 12.0.2 (ou versão compatível)
- Python 3.8+ com pip
Clone o repositório:
git clone https://github.com/bethington/ghidra-mcp.git cd ghidra-mcpInstale dependências do Python:
pip install -r requirements.txt
Copiar bibliotecas Ghidra (veja Dependências da Biblioteca para ver a lista completa):
# Windows - run the provided batch script copy-ghidra-libs.bat "C:\path\to\ghidra_12.0.2_PUBLIC" # Linux/Mac - copy manually from your Ghidra installation # See Library Dependencies section below for all 14 required JARs
Construa o plug-in:
mvn clean package assembly:single -DskipTests
Implante no Ghidra:
# Windows (automated) .\deploy-to-ghidra.ps1 # Or manually copy to Ghidra Extensions Copy-Item target\GhidraMCP-2.0.0.zip "C:\ghidra\Extensions\Ghidra\"
Opção 1: Stdio Transport (recomendado para ferramentas de IA)
python bridge_mcp_ghidra.pyOpção 2: Transporte SSE (clientes Web/HTTP)
python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081- Inicie o Ghidra e carregue um binário
- Vá para Ferramentas > GhidraMCP > Iniciar servidor MCP
- O servidor é executado em
http://127.0.0.1:8080/por padrão
📊 Desempenho de produção
- Ferramentas MCP: 110 ferramentas totalmente implementadas
- Velocidade: Resposta em menos de um segundo para a maioria das operações
- Eficiência: Redução de 93% nas chamadas de API por meio de operações em lote
- Confiabilidade: Transações atômicas com semântica de tudo ou nada
- Implantação: script de implantação automatizado com reconhecimento de versão
check_connection– Verifique a conectividade MCPget_metadata– Metadados e informações do programaget_version– Informações sobre a versão do servidorget_entry_points– Descoberta de pontos de entrada binários
list_functions– Listar todas as funções (paginadas)search_functions_by_name– Funções de pesquisa por nome/padrãosearch_functions_enhanced– Pesquisa avançada de funções com filtrosdecompile_function– Função de descompilar para pseudocódigo Cget_decompiled_code– Obtenha código descompilado por endereçoget_function_callers– Obtenha chamadores de funçãoget_function_callees– Obter chamadas de funçãoget_function_call_graph– Gráfico de relacionamento de funçõesget_full_call_graph– Gráfico de chamadas completo para programaanalyze_function_complete– Análise abrangente de funçõesanalyze_function_completeness– Pontuação de integridade da documentação
list_segments– Segmentos de memória e layoutget_function_by_address– Função no endereçodisassemble_function– Listagem de desmontagemdisassemble_bytes– Desmontagem de bytes brutosget_xrefs_to– Referências cruzadas para endereçoget_xrefs_from– Referências cruzadas de endereçoget_bulk_xrefs– Pesquisa de referência cruzada em massaanalyze_data_region– Analisar a estrutura da região de memóriainspect_memory_content– Veja o conteúdo da memória brutadetect_array_bounds– Detectar limites de array
Documentação entre binários (v1.9.4+)
get_function_hash– Hash SHA-256 de opcodes de função normalizadaget_bulk_function_hashes– Hashing em massa paginado com filtroget_function_documentation– Exportar documentação completa da funçãoapply_function_documentation– Importar documentação para a função alvobuild_function_hash_index– Construir índice JSON persistentelookup_function_by_hash– Encontre funções correspondentes no índicepropagate_documentation– Aplicar documentos a todas as instâncias correspondentes
list_data_types– Tipos de dados disponíveissearch_data_types– Pesquise tipos de dadoscreate_struct– Criar estrutura personalizadaadd_struct_field– Adicionar campo à estruturamodify_struct_field– Modificar campo existenteremove_struct_field– Remover campo da estruturacreate_enum– Criar enumeraçãoget_enum_values– Obtenha valores de enumeraçãocreate_array_type– Criar tipo de dados arrayapply_data_type– Aplicar tipo ao endereçodelete_data_type– Excluir um tipo de dadosconsolidate_duplicate_types– Mesclar tipos duplicadosget_valid_data_types– Obtenha uma lista de tipos válidos de Ghidra
list_imports– Símbolos e bibliotecas importadoslist_exports– Símbolos e funções exportadoslist_external_locations– Referências de localização externalist_strings– Strings extraídas com análiselist_namespaces– Namespaces disponíveislist_globals– Variáveis globaiscreate_label– Criar etiqueta no endereçobatch_create_labels– Criação de etiquetas em massadelete_label– Excluir etiqueta no endereçobatch_delete_labels– Exclusão de rótulo em massarename_label– Renomear rótulo existenterename_or_label– Renomear ou criar etiqueta
rename_function– Renomear função por nomerename_function_by_address– Renomear função por endereçorename_data– Renomear item de dadosrename_variables– Renomear variáveis de funçãorename_global_variable– Renomear variável globalrename_external_location– Renomear referência externabatch_rename_function_components– Renomeação em massaset_decompiler_comment– Definir comentário do descompiladorset_disassembly_comment– Definir comentário de desmontagemset_plate_comment– Definir comentário da placa de funçãoget_plate_comment– Obter comentário da placa de funçãobatch_set_comments– Configuração de comentários em massa
set_function_prototype– Definir assinatura de funçãoset_local_variable_type– Definir tipo de variávelset_parameter_type– Definir tipo de parâmetrobatch_set_variable_types– Configuração de tipo em massaset_variable_storage– Controlar local de armazenamento variávelset_function_no_return– Marcar função como sem retornolist_calling_conventions– Convenções de chamada disponíveisget_function_variables– Obtenha todas as variáveis de funçãoget_function_labels– Obtenha rótulos em função
list_scripts– Listar scripts disponíveisrun_script– Execute um scriptlist_ghidra_scripts– Listar scripts Ghidra personalizadossave_ghidra_script– Salvar novo scriptget_ghidra_script– Obtenha o conteúdo do scriptrun_ghidra_script– Executar script Ghidraupdate_ghidra_script– Atualizar script existentedelete_ghidra_script– Excluir roteiro
list_open_programs– Liste todos os programas abertosget_current_program_info– Detalhes do programa atualswitch_program– Alternar programa ativolist_project_files– Listar arquivos de projetoopen_program– Abrir programa do projetocompare_programs_documentation– Compare a documentação entre programas
find_next_undefined_function– Encontre funções indefinidasfind_undocumented_by_string– Encontre funções por referência de stringbatch_string_anchor_report– Análise de âncora de stringsearch_byte_patterns– Procure padrões de bytesget_assembly_context– Obtenha o contexto da montagemanalyze_struct_field_usage– Analisar estrutura de acesso ao campoget_field_access_context– Obtenha padrões de acesso de campocreate_function– Criar função no endereçoget_function_jump_target_addresses– Obtenha alvos de salto
Consulte docs/README.md para documentação completa.
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AI/Automation │◄──►│ MCP Bridge │◄──►│ Ghidra Plugin │
│ Tools │ │ (bridge_mcp_ │ │ (GhidraMCP.jar) │
│ (Claude, etc.) │ │ ghidra.py) │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
MCP Protocol HTTP REST Ghidra API
(stdio/SSE) (localhost:8080) (Program, Listing)
- bridge_mcp_ghidra.py – Servidor Python MCP que traduz o protocolo MCP para chamadas HTTP
- GhidraMCP.jar – Plugin Ghidra que expõe capacidades de análise via HTTP
- ghidra_scripts/ – Coleção de mais de 70 scripts de automação para tarefas comuns
# Build the plugin (skip integration tests)
mvn clean package assembly:single -DskipTests
# Deploy to Ghidra
.\deploy-to-ghidra.ps1ghidra-mcp/
├── bridge_mcp_ghidra.py # MCP server (Python)
├── src/main/java/ # Ghidra plugin (Java)
├── lib/ # Ghidra library dependencies
├── ghidra_scripts/ # 70+ automation scripts
├── docs/ # Documentation
│ ├── prompts/ # AI workflow prompts
│ ├── releases/ # Version release notes
│ └── project-management/ # Project docs
├── examples/ # Example usage
└── scripts/ # Build/utility scripts
O lib/ deve conter arquivos Ghidra JAR para compilação. Execute o script fornecido para copiá-los da instalação do Ghidra:
# Windows
copy-ghidra-libs.bat "C:\path\to\ghidra_12.0.2_PUBLIC"
# Or manually copy from your Ghidra installationBibliotecas necessárias (14 JARs, ~37MB):
| Biblioteca | Caminho de origem | Propósito |
|---|---|---|
| Base.jar | Features/Base/lib/ | Funcionalidade principal do Ghidra |
| Decompilador.jar | Features/Decompiler/lib/ | Mecanismo de descompilação |
| PDB.jar | Features/PDB/lib/ | Suporte ao símbolo Microsoft PDB |
| FunctionID.jar | Features/FunctionID/lib/ | Identificação da função |
| SoftwareModeling.jar | Framework/SoftwareModeling/lib/ | Programas de modelo de API |
| Projeto.jar | Framework/Project/lib/ | Gerenciamento de projetos |
| Docking.jar | Framework/Docking/lib/ | Estrutura de encaixe da UI |
| Genérico.jar | Framework/Generic/lib/ | Utilitários genéricos |
| Utilitário.jar | Framework/Utility/lib/ | Utilitários principais |
| Gui.jar | Framework/Gui/lib/ | Componentes GUI |
| Sistema de arquivos.jar | Framework/FileSystem/lib/ | Suporte ao sistema de arquivos |
| Gráfico.jar | Framework/Graph/lib/ | Análise de gráfico/gráfico de chamadas |
| DB.jar | Framework/DB/lib/ | Operações de banco de dados |
| Emulação.jar | Framework/Emulation/lib/ | Emulação de código P |
Observação: Bibliotecas NÃO estão incluídas no repositório (veja
.gitignore). Você deve copiá-los da instalação do Ghidra antes de compilar.
- Implantação Automatizada: script de implantação com reconhecimento de versão
- Operações em lote: Reduz chamadas de API em 93%
- Transações Atômicas: Semântica de tudo ou nada
- Registro abrangente: Recursos de depuração e rastreamento
Consulte CONTRIBUTING.md para diretrizes detalhadas de contribuição.
- Bifurque o repositório
- Crie uma ramificação de recurso (
git checkout -b feature/amazing-feature) - Crie e teste suas alterações (
mvn clean package assembly:single -DskipTests) - Atualize a documentação conforme necessário
- Confirme suas alterações (
git commit -m 'Add amazing feature') - Empurre para o galho (
git push origin feature/amazing-feature) - Abra uma solicitação pull
Este projeto está licenciado sob a Licença Apache 2.0 – consulte o arquivo LICENSE para obter detalhes.
| Métrica | Valor |
|---|---|
| Versão | 2.0.0 |
| Ferramentas MCP | 110 totalmente implementados |
| Compilação | ✅ 100% de sucesso |
| Eficiência de lote | Redução de 93% nas chamadas de API |
| Scripts Ghidra | Mais de 70 scripts de automação |
| Documentação | Abrangente com prompts de IA |
Consulte CHANGELOG.md para histórico de versões e notas de lançamento.
- Equipe Ghidra – Pela incrível plataforma de engenharia reversa
- Protocolo de Contexto do Modelo – Para a estrutura padronizada de integração de IA
- Colaboradores – Para testes, feedback e melhorias
- re-universe — plataforma Ghidra BSim PostgreSQL para análise de similaridade binária em grande escala. Combina perfeitamente com GhidraMCP para fluxos de trabalho de engenharia reversa orientados por IA.
- cheat-engine-server-python — Servidor MCP para análise e depuração dinâmica de memória.
Pronto para implantação em produção com confiabilidade de nível empresarial e recursos abrangentes de análise binária.
Fonte: theverge

