bethington/ghidra-mcp: Servidor Ghidra MCP de nível de produção — 132 endpoints, transferência de documentação entre binários, análise em lote, modo headless e implantação de Docker para engenharia reversa alimentada por IA

PUBLICIDADE

bethington/ghidra-mcp: Servidor Ghidra MCP de nível de produção — 132 endpoints, transferência de documentação entre binários, análise em lote, modo headless e implantação de Docker para engenharia reversa alimentada por IA

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
  1. Clone o repositório:

    git clone https://github.com/bethington/ghidra-mcp.git
    cd ghidra-mcp
  2. Instale dependências do Python:

    pip install -r requirements.txt
  3. 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
  4. Construa o plug-in:

    mvn clean package assembly:single -DskipTests
  5. 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.py

Opção 2: Transporte SSE (clientes Web/HTTP)

python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081
  1. Inicie o Ghidra e carregue um binário
  2. Vá para Ferramentas > GhidraMCP > Iniciar servidor MCP
  3. 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 MCP
  • get_metadata – Metadados e informações do programa
  • get_version – Informações sobre a versão do servidor
  • get_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ão
  • search_functions_enhanced – Pesquisa avançada de funções com filtros
  • decompile_function – Função de descompilar para pseudocódigo C
  • get_decompiled_code – Obtenha código descompilado por endereço
  • get_function_callers – Obtenha chamadores de função
  • get_function_callees – Obter chamadas de função
  • get_function_call_graph – Gráfico de relacionamento de funções
  • get_full_call_graph – Gráfico de chamadas completo para programa
  • analyze_function_complete – Análise abrangente de funções
  • analyze_function_completeness – Pontuação de integridade da documentação
  • list_segments – Segmentos de memória e layout
  • get_function_by_address – Função no endereço
  • disassemble_function – Listagem de desmontagem
  • disassemble_bytes – Desmontagem de bytes brutos
  • get_xrefs_to – Referências cruzadas para endereço
  • get_xrefs_from – Referências cruzadas de endereço
  • get_bulk_xrefs – Pesquisa de referência cruzada em massa
  • analyze_data_region – Analisar a estrutura da região de memória
  • inspect_memory_content – Veja o conteúdo da memória bruta
  • detect_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 normalizada
  • get_bulk_function_hashes – Hashing em massa paginado com filtro
  • get_function_documentation – Exportar documentação completa da função
  • apply_function_documentation – Importar documentação para a função alvo
  • build_function_hash_index – Construir índice JSON persistente
  • lookup_function_by_hash – Encontre funções correspondentes no índice
  • propagate_documentation – Aplicar documentos a todas as instâncias correspondentes
  • list_data_types – Tipos de dados disponíveis
  • search_data_types – Pesquise tipos de dados
  • create_struct – Criar estrutura personalizada
  • add_struct_field – Adicionar campo à estrutura
  • modify_struct_field – Modificar campo existente
  • remove_struct_field – Remover campo da estrutura
  • create_enum – Criar enumeração
  • get_enum_values – Obtenha valores de enumeração
  • create_array_type – Criar tipo de dados array
  • apply_data_type – Aplicar tipo ao endereço
  • delete_data_type – Excluir um tipo de dados
  • consolidate_duplicate_types – Mesclar tipos duplicados
  • get_valid_data_types – Obtenha uma lista de tipos válidos de Ghidra
  • list_imports – Símbolos e bibliotecas importados
  • list_exports – Símbolos e funções exportados
  • list_external_locations – Referências de localização externa
  • list_strings – Strings extraídas com análise
  • list_namespaces – Namespaces disponíveis
  • list_globals – Variáveis ​​globais
  • create_label – Criar etiqueta no endereço
  • batch_create_labels – Criação de etiquetas em massa
  • delete_label – Excluir etiqueta no endereço
  • batch_delete_labels – Exclusão de rótulo em massa
  • rename_label – Renomear rótulo existente
  • rename_or_label – Renomear ou criar etiqueta
  • rename_function – Renomear função por nome
  • rename_function_by_address – Renomear função por endereço
  • rename_data – Renomear item de dados
  • rename_variables – Renomear variáveis ​​de função
  • rename_global_variable – Renomear variável global
  • rename_external_location – Renomear referência externa
  • batch_rename_function_components – Renomeação em massa
  • set_decompiler_comment – Definir comentário do descompilador
  • set_disassembly_comment – Definir comentário de desmontagem
  • set_plate_comment – Definir comentário da placa de função
  • get_plate_comment – Obter comentário da placa de função
  • batch_set_comments – Configuração de comentários em massa
  • set_function_prototype – Definir assinatura de função
  • set_local_variable_type – Definir tipo de variável
  • set_parameter_type – Definir tipo de parâmetro
  • batch_set_variable_types – Configuração de tipo em massa
  • set_variable_storage – Controlar local de armazenamento variável
  • set_function_no_return – Marcar função como sem retorno
  • list_calling_conventions – Convenções de chamada disponíveis
  • get_function_variables – Obtenha todas as variáveis ​​de função
  • get_function_labels – Obtenha rótulos em função
  • list_scripts – Listar scripts disponíveis
  • run_script – Execute um script
  • list_ghidra_scripts – Listar scripts Ghidra personalizados
  • save_ghidra_script – Salvar novo script
  • get_ghidra_script – Obtenha o conteúdo do script
  • run_ghidra_script – Executar script Ghidra
  • update_ghidra_script – Atualizar script existente
  • delete_ghidra_script – Excluir roteiro
  • list_open_programs – Liste todos os programas abertos
  • get_current_program_info – Detalhes do programa atual
  • switch_program – Alternar programa ativo
  • list_project_files – Listar arquivos de projeto
  • open_program – Abrir programa do projeto
  • compare_programs_documentation – Compare a documentação entre programas
  • find_next_undefined_function – Encontre funções indefinidas
  • find_undocumented_by_string – Encontre funções por referência de string
  • batch_string_anchor_report – Análise de âncora de string
  • search_byte_patterns – Procure padrões de bytes
  • get_assembly_context – Obtenha o contexto da montagem
  • analyze_struct_field_usage – Analisar estrutura de acesso ao campo
  • get_field_access_context – Obtenha padrões de acesso de campo
  • create_function – Criar função no endereço
  • get_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.ps1
ghidra-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 installation

Bibliotecas necessárias (14 JARs, ~37MB):

BibliotecaCaminho de origemPropósito
Base.jarFeatures/Base/lib/Funcionalidade principal do Ghidra
Decompilador.jarFeatures/Decompiler/lib/Mecanismo de descompilação
PDB.jarFeatures/PDB/lib/Suporte ao símbolo Microsoft PDB
FunctionID.jarFeatures/FunctionID/lib/Identificação da função
SoftwareModeling.jarFramework/SoftwareModeling/lib/Programas de modelo de API
Projeto.jarFramework/Project/lib/Gerenciamento de projetos
Docking.jarFramework/Docking/lib/Estrutura de encaixe da UI
Genérico.jarFramework/Generic/lib/Utilitários genéricos
Utilitário.jarFramework/Utility/lib/Utilitários principais
Gui.jarFramework/Gui/lib/Componentes GUI
Sistema de arquivos.jarFramework/FileSystem/lib/Suporte ao sistema de arquivos
Gráfico.jarFramework/Graph/lib/Análise de gráfico/gráfico de chamadas
DB.jarFramework/DB/lib/Operações de banco de dados
Emulação.jarFramework/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.

  1. Bifurque o repositório
  2. Crie uma ramificação de recurso (git checkout -b feature/amazing-feature)
  3. Crie e teste suas alterações (mvn clean package assembly:single -DskipTests)
  4. Atualize a documentação conforme necessário
  5. Confirme suas alterações (git commit -m 'Add amazing feature')
  6. Empurre para o galho (git push origin feature/amazing-feature)
  7. Abra uma solicitação pull

Este projeto está licenciado sob a Licença Apache 2.0 – consulte o arquivo LICENSE para obter detalhes.

MétricaValor
Versão2.0.0
Ferramentas MCP110 totalmente implementados
Compilação✅ 100% de sucesso
Eficiência de loteRedução de 93% nas chamadas de API
Scripts GhidraMais de 70 scripts de automação
DocumentaçãoAbrangente 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

Mais recentes

PUBLICIDADE

WP Twitter Auto Publish Powered By : XYZScripts.com