GhidrAssist
Autor: Jason Tang
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
- Hierarquia semântica de 5 níveis: Declaração → Bloco → Função → Módulo → Binário
- Resumos pré-computados por LLM permitem consultas rápidas sem LLM
- Persistência em SQLite com algoritmos de grafo JGraphT
- Busca em texto completo (FTS5) em resumos e anotações de segurança
- Detecção de Comunidades - Descoberta automática de módulos via algoritmo Leiden
- Agrupa funções relacionadas em módulos lógicos
- Estrutura hierárquica de comunidades com resumos
- Exploração visual de grafos com profundidade configurável
- Extração de Recursos de Segurança - Análise de segurança abrangente
- APIs de rede: sockets POSIX, WinSock, DNS, SSL/TLS, WinHTTP, WinINet
- APIs de E/S de arquivo: POSIX, Windows, funções da biblioteca C
- APIs de criptografia: OpenSSL, criptografia do Windows, específicas de plataforma
- Padrões de string: endereços IP, URLs, domínios, caminhos de arquivo, chaves de registro
- Classificação de nível de risco (BAIXO/MÉDIO/ALTO) e perfil de atividade
- Aba de Grafo Semântico - Interface visual de grafo de conhecimento
- Visualização de grafo com exploração de profundidade N-saltos
- Visualização em lista de todas as funções indexadas
- Busca semântica nos resumos
- Reindexação e análise de segurança com um clique
Recursos Avançados:
- Controle de Pensamento/Raciocínio Estendido - Ajusta a profundidade de raciocínio do LLM para compensações entre qualidade e velocidade
- Suporte para OpenAI o1/o3/o4, Claude com pensamento estendido e modelos de raciocínio locais
- Níveis de esforço configuráveis: Baixo (rápido), Médio (equilibrado), Alto (minucioso)
- Persistência por programa - binários diferentes podem usar níveis de raciocínio diferentes
- Implementação agnóstica de provedor (Anthropic, OpenAI, Azure, LiteLLM, LMStudio, Ollama)
- Modo Agêntico ReAct - Investigação autônoma usando raciocínio estruturado (Pensar-Agir-Observar)
- O LLM propõe etapas de investigação com base na sua consulta
- Execução sistemática de ferramentas com acompanhamento de progresso via listas de tarefas
- Preservação do histórico de iterações mostrando todas as etapas de investigação
- Síntese final com resposta abrangente e principais descobertas
- Métricas precisas (iterações, chamadas de ferramentas, duração)
- Integração MCP - Cliente do Protocolo de Contexto de Modelo para análise baseada em ferramentas
- Funciona com GhidrAssistMCP para ferramentas específicas do Ghidra
- Chamada de ferramentas conversacional com execução automática de funções
- Suporte para transporte SSE (Server-Sent Events)
- Chamada de Funções - O LLM pode navegar autonomamente por binários e modificar a análise
- Renomear funções e variáveis
- Navegar para endereços e referências cruzadas
- Executar comandos do Ghidra
- Aba de Ações - Propor e aplicar melhorias de análise em massa
- Detecção de vulnerabilidades de segurança
- Análise de qualidade de código
- Sugestões automatizadas de refatoração
- RAG (Geração Aumentada por Recuperação) - Melhora consultas com documentos contextuais
- Adicionar documentação personalizada, notas de exploração, referências de arquitetura
- Busca em texto completo baseada em Lucene
- Injeção de contexto nas consultas
- Geração de Conjunto de Dados RLHF - Coleta feedback para ajuste fino de modelos
Arquitetura
O plugin usa uma arquitetura modular orientada a serviços:
Serviços Principais:
- Modos de Consulta: Consultas regulares, consultas aprimoradas por MCP ou investigação agêntica completa
- Orquestrador ReAct: Gerencia loops de investigação autônoma com acompanhamento de tarefas e acumulação de descobertas
- Manipulador de Ferramentas Conversacional: Gerencia sessões de chamada de ferramentas em múltiplas etapas
- MCPToolManager: Interfaceia com servidores MCP externos para ferramentas especializadas
Backend Graph-RAG:
- BinaryKnowledgeGraph: Armazenamento híbrido SQLite + JGraphT para conhecimento semântico
- GraphRAGEngine: Motor de consulta sem LLM usando resumos pré-computados
- SemanticExtractor: Sumarização de funções alimentada por LLM com processamento em lote
- SecurityFeatureExtractor: Análise estática para APIs de rede, E/S de arquivo e criptografia
- CommunityDetector: Implementação do algoritmo Leiden para descoberta de módulos
Camada de Dados:
- AnalysisDB: Banco de dados SQLite para histórico de chat, feedback RLHF e grafos de conhecimento
- SchemaMigrationRunner: Migrações de banco de dados versionadas para atualizações transparentes
- RAGEngine: Busca de documentos alimentada por Lucene para injeção de contexto personalizada
Componentes de UI:
- Interface baseada em abas: Explicar, Consulta, Ações, Grafo Semântico, Gerenciamento de RAG, Servidores MCP
- Orquestração de serviços via TabController
Roteiro Futuro:
- Ajuste fino de modelos usando o conjunto de dados RLHF coletado
- Integrações adicionais de ferramentas MCP
- Capacidades agênticas aprimoradas, colaboração multiagente
- Busca por similaridade baseada em embeddings
Capturas de Tela
Screenshot
https://github.com/user-attachments/assets/bd79474a-c82f-4083-b432-96625fef1387
Início Rápido
- Se necessário, copie o arquivo ZIP do release binário para o diretório Ghidra_Install/Extensions/Ghidra.
- Inicie o Ghidra -> Arquivo -> Instalar Extensão -> Habilitar GhidrAssist.
- Carregue um binário e inicie o CodeBrowser.
- 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
- Open-WebUI - Interface web para modelos locais
Provedores de Nuvem: