Voltar às atualizações
UpdatedJul 26, 2026

OGhidra — Updated!

OGhidra conecta Modelos de Linguagem Grandes (LLMs) via Ollama com a plataforma de engenharia reversa Ghidra, possibilitando análise binária orientada por IA por meio de linguagem natural. Interaja com o Ghidra usando consultas conversacionais e automatize fluxos de trabalho complexos de engenharia reversa.

Compartilhar

OGhidra 3 - Engenharia Reversa com IA usando Ghidra

Para a versão que usa um Orchestrator inspirado no Claude, veja https://github.com/llnl/OGhidra/tree/orchestrator

Python Version License PRs Welcome

OGhidra conecta Grandes Modelos de Linguagem à plataforma de engenharia reversa do Ghidra, permitindo análise binária orientada por IA através de linguagem natural. Analise binários de forma conversacional, automatize fluxos de trabalho complexos e mantenha privacidade total com modelos de IA locais.

Tutorial de Configuração no YouTube

OGhidra Introduction


O que é OGhidra?

OGhidra aprimora o Ghidra com capacidades de IA, permitindo que você:

  • Análise em Linguagem Natural - Faça perguntas sobre funções, strings e imports em inglês simples
  • Fluxos de Trabalho Automatizados - Renomeie funções, detecte padrões, gere relatórios abrangentes
  • Modelos de IA Locais - Privacidade completa com modelos rodando em seu hardware (Ollama)
  • Suporte a IA na Nuvem - Conecte-se a APIs externas (OpenAI, Google Gemini, Anthropic Claude)
  • Detecção de Malware - Correspondência automática de padrões para mais de 12 técnicas de evasão e injeção
  • Enumeração Inteligente - Construa grafos de conhecimento consultáveis a partir da análise binária
  • Análise Multi-Instância - Execute múltiplas instâncias do Ghidra para análise paralela

Como Funciona

graph TD
    A[User Query] --> B[Planning Phase]
    B --> C{Execution Phase}
    C -- Tool Calls --> D[Ghidra/LLM]
    D --> C
    C --> E[Review Phase]
    E -- Agentic Loop --> B
    E --> F[Final Response]

    style E fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#bbf,stroke:#333,stroke-width:2px

Loop Agente: OGhidra usa um sistema de planejamento adaptativo. Após cada ciclo de execução, os resultados são revisados e a IA pode optar por coletar mais informações ou refinar sua análise antes de fornecer a resposta final.


Início Rápido

Pré-requisitos

  1. Python 3.12+ - Verifique a versão: python --version
  2. Ghidra 12.0.3 (Recomendado) - Baixe em Ghidra Releases
    • O caminho de construção/instalação do plugin está documentado para o Ghidra 12.0.3
    • Testado com: Ghidra 11.0.3, 11.3.2, 12.0.2, 12.0.3
  3. Java 21 - Necessário para construir a extensão do Ghidra 12.0.3: java -version
  4. Ollama (opcional, para modelos locais) - Instale de ollama.com

Instalação

# Clone repository
git clone https://github.com/LLNL/OGhidra.git
cd OGhidra

# Install dependencies (choose one)
uv sync                          # Using UV (recommended)
pip install -r requirements.txt  # Using pip

# Configure environment
cp .env.example .env
# Edite .env com suas configurações

Configurar Plugin do Ghidra

As etapas de construção do plugin OGhidraMCP abaixo têm como alvo o Ghidra 12.0.3 (recomendado). Há também um tutorial em vídeo no YouTube: https://www.youtube.com/watch?v=hBD92FUgR0Y

Construindo a Extensão GhidraMCP

Como desenvolvedor, você precisará construir a extensão GhidraMCP antes de instalá-la no Ghidra:

  1. Pré-requisitos:

    • Ghidra 12.0.3 instalado
    • Java 21
  2. Opção 1: Usando os scripts de construção automatizados:

    • Windows:

      # Set the path to your Ghidra installation (will attempt to find last run copy of Ghidra if not set)
      set GHIDRA_INSTALL_DIR=C:\path\to\ghidra_12.0.3_PUBLIC
      
      # Run the build script
      build_ghidra_plugin.bat
      
    • Unix/Linux/Mac:

      # Set the path to your Ghidra installation (will attempt to find the last run copy of Ghidra if not set)
      export GHIDRA_INSTALL_DIR=/path/to/ghidra_12.0.3_PUBLIC
      
      # Run the build script (make it executable first if needed)
      chmod +x build_ghidra_plugin.sh
      ./build_ghidra_plugin.sh
      
  3. Opção 2: Processo de construção manual:

    • Crie/atualize OGhidraMCP/gradle.properties com o caminho de instalação do Ghidra:

      GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.0.3_PUBLIC
      
    • On Unix/Linux/macOS:

      cd OGhidraMCP
      $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension --info
      
    • On Windows:

      cd OGhidraMCP
      "%GHIDRA_INSTALL_DIR%\support\gradle\gradlew.bat" buildExtension --info
      
  4. Localize a extensão construída:

    • O arquivo zip da extensão é criado em OGhidraMCP/dist/
    • O nome do arquivo será algo como ghidra_12.0.3_PUBLIC_YYYYMMDD_OGhidraMCP.zip

Instalando a Extensão GhidraMCP

Após ter construído a extensão com sucesso:

  1. Instale no Ghidra:

    • Abra o Ghidra -> File -> Install Extensions
    • Clique em Add Extension (ícone de mais verde)
    • Navegue até o diretório OGhidraMCP/dist/
    • Selecione o arquivo zip da extensão recém-construída (ex.: ghidra_12.0.3_PUBLIC_YYYYMMDD_OGhidraMCP.zip)
    • Reinicie o Ghidra
  2. Ative o plugin:

    • Abra um projeto do Ghidra
    • FileConfigureEnable Developer
    • Ative o plugin OGhidraMCP
    • O servidor iniciará em http://localhost:8080/methods

    VOCÊ PRECISA TER O CODE BROWSER ABERTO

Baixar Modelos de IA

# Para Ollama (modelos locais)
ollama pull gemma3:27b           		# Bom equilíbrio (20GB RAM)
ollama pull nomic-embed-text     		# Modelo de embedding para RAG

# Modelos alternativos
ollama pull gpt-oss:120b         		# Alta qualidade (80GB RAM)
ollama pull devstral-2:123b 			# Alta qualidade (80GB RAM)
ollama pull devstral-2:123b-cloud       # Modelo na Nuvem

Iniciar OGhidra

# Modo GUI (recomendado)
uv run main.py --ui

# CLI Interativa
uv run main.py --interactive

# Na CLI interativa, teste a conexão
health

Se você iniciou o modo GUI, use:

curl http://localhost:8080/methods

Configuração

Edite .env para configurar seu provedor de IA:

Opção 1: Modelos Locais (Ollama)

LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434/
OLLAMA_MODEL=gemma3:27b
OLLAMA_EMBEDDING_MODEL=nomic-embed-text

Opção 2: APIs Externas

LLM_PROVIDER=external
EXTERNAL_PROVIDER=google
EXTERNAL_API_KEY=your-api-key-here
EXTERNAL_MODEL=gemini-3.1-flash-lite-preview
EXTERNAL_EMBEDDING_MODEL=gemini-embedding-001

Opção 3: API Personalizada Compatível com OpenAI

LLM_PROVIDER=custom_api
CUSTOM_API_URL=https://api.example.com/v1/chat/completions
CUSTOM_API_KEY=your-api-key-here
CUSTOM_API_MODEL=your-model-name
CUSTOM_API_EMBEDDING_MODEL=your-embedding-model

Configurações de Gerenciamento de Contexto

Ajuste com base na janela de contexto do seu modelo:

# Orçamento de contexto em tokens (ajuste conforme o limite do seu modelo)
CONTEXT_BUDGET=100000              # 100K tokens para modelos de médio porte
                                   # 200K+ para modelos de ponta

# Configurações de execução
MAX_EXECUTION_STEPS=5              # Passos por ciclo de planejamento
MAX_AGENTIC_CYCLES=3               # Quantos ciclos de planejar-executar-revisar
AGENTIC_LOOP_ENABLED=true          # Ativar replanejamento adaptativo

Principais Funcionalidades

1. Botões de Ferramentas Inteligentes (GUI)

Acesso com um clique a tarefas comuns de engenharia reversa:

FerramentaDescrição
Analyze Current FunctionAprofundamento no comportamento da função selecionada
Rename Current FunctionIA sugere nomes significativos com base na análise
Rename All FunctionsRenomeação em massa com opções Smart/Full/Rename-Only
Analyze ImportsIdentifica bibliotecas e dependências externas
Analyze StringsEncontra URLs, credenciais, dados de configuração
Generate ReportAvaliação abrangente de segurança

2. Modos de Tarefa

Defina metas de análise especializadas:

# Na GUI: Use o menu suspenso "Task Mode"
# Na CLI: defina task_mode <mode>

task_mode malware      # Análise de malware com detecção de padrões
task_mode vuln         # Foco em pesquisa de vulnerabilidades
task_mode general      # Engenharia reversa geral

3. Detecção de Padrões de Malware

Detecção automática de mais de 12 padrões de malware:

  • Evasão: PEB Walking, Resolução Dinâmica de API, Anti-Debug, Anti-VM
  • Injeção: Injeção de Processo (Local/Remoto)
  • Persistência: Registro, Ganchos do Sistema de Arquivos
  • Ofuscação: Codificação de Strings, Hashing de API
  • Escalação de Privilégios: Manipulação de Token, bypass de UAC

Os padrões disparam alertas automáticos no contexto da IA com mapeamentos MITRE ATT&CK.

4. Enumeração Inteligente

Construa conhecimento rico e consultável a partir da análise binária:

# Enumere todas as funções com resumos da IA
# Escolha entre:
- Rename Only: Processa apenas nomes genéricos de funções
- Smart Enumeration: Foco em funções relevantes para segurança
- Full Enumeration: Analisa todas as funções no binário

Recursos:

  • Extração de metadados estruturados (LOC, complexidade, operações)
  • Otimização de busca semântica
  • Montagem de contexto baseada em intenção
  • Suporte a múltiplos vetores para recuperação precisa

5. Gerenciamento de Sessão

Salve e restaure sessões de análise:

# Salvar progresso
File → Save Session

# Carregar trabalho anterior
File → Load Session

# Salvamento automático após operações em massa
# As sessões incluem:
- Funções analisadas com resumos
- Vetores RAG para busca semântica
- Estatísticas de desempenho
- Estado da interface

Configuração do Backend

OGhidra suporta dois tipos de backend:

  • MCP — Integra-se ao servidor GhidraMCP e requer que o cliente Ghidra esteja em execução durante a análise
  • PyGhidra — Suporta análise headless sem o cliente Ghidra e remove o componente de servidor exigido pelo MCP

Selecionando um Backend

Use a seguinte opção de linha de comando para escolher um backend:

--ghidra-backend={http,pyghidra}
Opção de BackendDescrição
httpUsa o backend GhidraMCP
pyghidraUsa o backend PyGhidra

Configuração do PyGhidra

Usando um Projeto Ghidra Existente

Especifique um arquivo de projeto Ghidra (.gpr) ao iniciar o OGhidra:

--pyghidra-project=/path/to/project.gpr

PyGhidra requer um projeto Ghidra válido para iniciar o OGhidra.


Selecionando um Programa

Especifique qual binário dentro do projeto Ghidra deve ser analisado:

--pyghidra-program=<program_name>

exemplo de chamada para selecionar um programa em um projeto Ghidra:

uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-project=/path/to/project.gpr --pyghidra-program=<program_name>

Requisitos:

  • O nome do programa deve corresponder exatamente ao nome mostrado na GUI do projeto Ghidra
  • Esta opção é necessária ao usar um projeto existente
  • A falha em especificar um programa impedirá que o OGhidra seja iniciado

Iniciando um Binário Diretamente

Você também pode fornecer um caminho de binário diretamente:

--pyghidra-binary=/path/to/binary

Quando esta opção é usada, PyGhidra automaticamente:

  1. Cria um novo projeto Ghidra (.gpr)
  2. Importa o binário
  3. Inicia o binário no OGhidra para análise

exemplo de chamada para iniciar um binário diretamente:

uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-binary=/path/to/binary


Fluxos de Trabalho Comuns

Analisar um Binário Suspeito

  1. Carregue o binário no Ghidra e abra no CodeBrowser
  2. Ative o plugin OGhidraMCP (File → Configure)
  3. Inicie o OGhidra: uv run main.py --ui
  4. Defina o modo de tarefa: Selecione "malware" no menu suspenso
  5. Execute a Enumeração Inteligente: Clique em "Rename All Functions" → "Smart Enumeration"
  6. Faça perguntas: "Quais são as funções de alto risco?" ou "Mostre-me comunicação de rede"

Gerar Relatório de Segurança

# Na GUI: Clique no botão "Generate Report"
# O relatório inclui:
- Resumo Executivo
- Inventário de Funções (funções renomeadas com comportamento)
- Análise de Segurança (funções de alto risco, padrões)
- Análise de Imports
- Análise de Strings
- Recomendações

Investigar Função Específica

  1. Navegue até a função no Ghidra
  2. Clique em "Analyze Current Function"
  3. Faça perguntas complementares:
    • "O que essa função faz?"
    • "Isso é vulnerável a estouro de buffer?"
    • "Que outras funções chamam isso?"

Funcionalidades Avançadas

RAG (Geração Aumentada por Recuperação)

OGhidra usa embeddings vetoriais para busca semântica sobre funções analisadas:

# Ativar no .env
RESULT_CACHE_ENABLED=true
TIERED_CONTEXT_ENABLED=true

Benefícios:

  • Lembrar análises anteriores entre sessões
  • Encontrar funções semelhantes semanticamente
  • Reduzir chamadas redundantes ao LLM

Otimização de Contexto

A compressão de contexto em camadas mantém informações relevantes:

CURRENT_LOOP_MAX_CHARS=2000   # Recente: detalhes completos
PREV_LOOP_MAX_CHARS=400       # Anterior: resumos
OLDER_LOOP_MAX_CHARS=100      # Mais antigo: apenas referências

Registro de LLM

Rastreie todas as interações com IA para depuração:

LLM_LOGGING_ENABLED=true
LLM_LOG_FILE=logs/llm_interactions.log
LLM_LOG_FORMAT=json

Solução de Problemas

Problemas de Conexão com o Ghidra

# Verifique se o plugin está carregado
# Abra o codebrowser!

# Verifique se o servidor está em execução
curl http://localhost:8080/methods

Problemas de Conexão com o Ollama

# Verifique se o Ollama está em execução
ollama list

# Verifique a conectividade
curl http://localhost:11434/api/tags

# Reinicie o serviço do Ollama
ollama serve

Respostas Vazias / Estouro de Contexto

# Reduza o orçamento de contexto
CONTEXT_BUDGET=50000

# Ative a compactação
COMPACTION_ENABLED=true
COMPACTION_THRESHOLD=0.75

Desempenho Lento

  1. Use modelos menores: Mude para gemma3:9b
  2. Reduza workers paralelos: Defina max_workers=2 em operações em massa
  3. Desative embeddings vetoriais: RESULT_CACHE_ENABLED=false
  4. Aumente o atraso da requisição: CUSTOM_API_REQUEST_DELAY=2.0

Visão Geral da Arquitetura

┌─────────────────────────────────────────────────────────────┐
│                        OGhidra UI                           │
│                  (GUI / Interactive CLI)                    │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                   Bridge (src/bridge.py)                    │
│  ┌────────────────────────────────────────────────────────┐ │
│  │ • Agentic Loop: Plan → Execute → Review → Replan       │ │
│  │ • Tool Router: Ghidra client, LLM client, CAG manager  │ │
│  │ • Context Manager: Budget allocation, compression      │ │
│  └────────────────────────────────────────────────────────┘ │
└───────────┬────────────────────────┬────────────────────────┘
            │                        │
            ▼                        ▼
┌───────────────────────┐  ┌─────────────────────────┐
│   Ghidra Client       │  │   LLM Clients           │
│ • GhidraMCP Plugin    │  │ • Ollama (local)        │
│ • Binary operations   │  │ • External APIs         │
│ • Decompilation       │  │ • Custom endpoints      │
└───────────────────────┘  └─────────────────────────┘
            │                        │
            └────────────┬───────────┘
                         ▼
┌─────────────────────────────────────────────────────────────┐
│               CAG Manager (Knowledge System)                │
│  ┌────────────────────────────────────────────────────────┐ │
│  │ • Vector Store: Semantic search over functions         │ │
│  │ • Pattern Detector: 12+ malware techniques             │ │
│  │ • Metadata Extractor: Structured function analysis     │ │
│  │ • Session Store: Persistent analysis state             │ │
│  └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

Contribuindo

Aceitamos contribuições! Áreas de interesse:

  • Novos padrões de malware para detecção
  • Integrações de provedores de LLM
  • Melhorias de UI/UX
  • Otimizações de desempenho
  • Documentação e exemplos

Veja CODE_OF_CONDUCT.md para as diretrizes da comunidade.


Citação

Se você usar OGhidra em sua pesquisa, por favor cite:

@software{oghidra2025,
  title = {OGhidra: AI-Powered Reverse Engineering with Ghidra},
  author = {Enoch Wang},
  year = {2025},
  url = {https://github.com/LLNL/OGhidra}
}

Agradecimentos

OGhidra se baseia em excelentes projetos de código aberto:


Licença

OGhidra é distribuído sob os termos da licença BSD 3-Clause com uma alternativa de licença comercial.

Veja LICENSE e NOTICE.md para detalhes.

LLNL-CODE-2013290


Suporte

Categorias