Um plugin avançado alimentado por LLM para assistência interativa de engenharia reversa no Ghidra.
Descrição
O GhidrAssist integra Grandes Modelos de Linguagem (LLMs) ao Ghidra para fornecer assistência inteligente para exploração de binários e engenharia reversa. Ele suporta qualquer API compatível com OpenAI v1, incluindo modelos locais (Ollama, LM-Studio, Open-WebUI) e provedores de nuvem (OpenAI, Anthropic, Azure).
Principais Recursos
Funcionalidade Principal:
Explicação de Código - Explica funções e instruções tanto em desmontagem quanto em pseudo-C descompilado
Painel de análise de segurança mostrando nível de risco, perfil de atividade e uso de API
Resumos editáveis, protegendo as edições do usuário contra sobrescrita automática
Chat Interativo - Consultas conversacionais de múltiplas etapas com histórico de chat persistente
Consultas Personalizadas - Consultas diretas ao LLM com contexto opcional da função/localização atual
Sistema de Conhecimento Graph-RAG:
Grafo de Conhecimento Semântico - Representação hierárquica da análise de binários
CodeBrowser -> Arquivo -> Configurar -> Diversos -> Habilitar GhidrAssist.
CodeBrowser -> Janela -> GhidraAssistPlugin.
Certifique-se de que os caminhos dos bancos de dados RLHF e RAG sejam apropriados para o seu ambiente.
Aponte o host da API para o seu provedor de API preferido e defina a chave da API.
(Opcional) Na aba Opções de Análise, defina o nível de Esforço de Raciocínio (Nenhum/Baixo/Médio/Alto) para modelos que suportam pensamento estendido.
Abra o GhidrAssist com a opção GhidrAssist no menu Windows e comece a explorar.
Configuração do LLM
O GhidrAssist funciona com qualquer API compatível com OpenAI v1. Os detalhes de configuração são específicos de cada provedor - aqui estão alguns recursos úteis:
Provedores Locais de LLM:
LM Studio - Hospedagem fácil de modelos locais com GUI
Ollama - Gerenciamento de modelos locais via linha de comando
Modelos com Suporte a Pensamento/Raciocínio Estendido:
OpenAI: o1-preview, o1-mini, o3-mini, o4-mini, gpt-5 (use o parâmetro reasoning_effort)
Anthropic: Claude Sonnet 4.5, Claude Opus 4.5, Claude Haiku 4.5, Claude Opus 4.1/4, Claude Sonnet 4 (use o parâmetro thinking.budget_tokens)
Local: openai/gpt-oss-20b via Ollama/LMStudio (suporta níveis de esforço)
Diretrizes de Esforço de Raciocínio:
Baixo: Análise rápida, tokens de pensamento mínimos (~5-10s, menor custo)
Médio: Profundidade de raciocínio equilibrada (~15-30s, custo moderado)
Alto: Análise de segurança profunda (~30-60s, custo 2x, recomendado para caça a vulnerabilidades)
Nota: O modo agêntico requer modelos com fortes capacidades de chamada de funções e raciocínio em múltiplas etapas. Modelos menores podem ter dificuldade com investigações complexas. O pensamento estendido é opcional, mas pode melhorar significativamente a qualidade da análise para tarefas complexas de engenharia reversa.
Usando o GhidrAssistMCP para Análise Baseada em Ferramentas
GhidrAssistMCP fornece ferramentas MCP que permitem ao LLM interagir diretamente com as capacidades de análise do Ghidra.
Configuração
Inicie o Servidor MCP
Configure o GhidrAssist:
Abra Ferramentas → Configurações do GhidrAssist → aba Servidores MCP
Adicione o servidor: http://127.0.0.1:8081 como GhidrAssistMCP com tipo de transporte SSE
Habilite o MCP nas consultas:
Na aba Consulta Personalizada, marque "Use MCP"
Opcionalmente, habilite "Agentic" para o modo de investigação autônoma
Modos de Uso
Consultas MCP Regulares:
Marque a caixa de seleção "Use MCP"
Faça perguntas como "O que a função atual faz?"
O LLM pode chamar ferramentas para obter descompilação, referências cruzadas, etc.
Modo Agêntico (Recomendado):
Marque as caixas de seleção "Use MCP" e "Agentic"
Faça perguntas complexas como "Encontre vulnerabilidades nesta função" ou "Analise o grafo de chamadas"
O agente ReAct irá:
Propor etapas de investigação como uma lista de tarefas
Executar sistematicamente ferramentas para coletar informações
Acompanhar o progresso e acumular descobertas
Sintetizar uma resposta abrangente com evidências
Exemplos de Consultas:
"Que vulnerabilidades de segurança existem nesta função?"
"Rastreie o fluxo de dados da entrada do usuário até esta chamada"
"Encontre todas as funções que modificam a variável global X"
"Analise o tratamento de erros na função atual"
Usando o Grafo Semântico (Graph-RAG)
A aba Grafo Semântico fornece uma interface de grafo de conhecimento para explorar resultados de análise de binários sem exigir chamadas de LLM para cada consulta.
Introdução
Indexe o Binário:
Abra a aba Grafo Semântico
Clique em "ReIndex Binary" para extrair relações estruturais
Clique em "Semantic Analysis" para gerar resumos de LLM (requer API)
O progresso é mostrado na barra de status
Explore o Grafo:
Visualização em Lista: Navegue por todas as funções indexadas com resumos e sinalizadores de segurança
Visualização em Grafo: Visualize relações de chamada com profundidade N-saltos configurável
Visualização de Busca: Busca em texto completo nos resumos e anotações de segurança
Análise de Segurança:
Clique em "Security Analysis" para verificar recursos relevantes de segurança
Os resultados incluem: APIs de rede, E/S de arquivo, uso de criptografia, padrões de string
Níveis de risco (BAIXO/MÉDIO/ALTO) são atribuídos com base nos recursos detectados
Integração com a Aba Explicar
Ao visualizar uma função na aba Explicar:
Se a função estiver indexada, o resumo pré-computado é mostrado instantaneamente
O painel de segurança exibe: nível de risco, perfil de atividade, APIs utilizadas
Clique em "Edit" para modificar resumos (protegidos contra sobrescrita automática)
Use "Refresh" para regenerar o resumo com o LLM
Benefícios
Consultas Rápidas: Resumos pré-computados eliminam a latência do LLM para consultas repetidas
Análise Offline: Navegue pelos dados indexados sem conectividade com a API
Foco em Segurança: Detecção automática de padrões de código relevantes para segurança
Descoberta de Módulos: A detecção de comunidades agrupa funções relacionadas automaticamente