
Plugin de Engenharia Reversa com IA para IDA Pro
Plugin de Engenharia Reversa com IA para o IDA Pro
Autor: Jason Tang
O IDAssist é um plugin para IDA Pro que integra análise baseada em LLM diretamente na interface do IDA, fornecendo engenharia reversa de binários assistida por IA por meio de provedores LLM configuráveis, gráficos de conhecimento semântico, pesquisa de documentos RAG e suporte a uma grande diversidade de provedores LLM.
Construído com Python e PySide6, o IDAssist é executado como um painel acoplável dentro do IDA Pro 9.0+ e se comunica com provedores LLM (OpenAI, Anthropic, Ollama, LiteLLM e outros) para analisar funções, sugerir renomeações, responder perguntas sobre código e construir um gráfico de conhecimento pesquisável de um binário inteiro.

Explicação de Funções — Gere explicações detalhadas em linguagem natural de funções descompiladas com análise automática de segurança, incluindo nível de risco, perfil de atividade, flags de segurança e detecção de API.
Chat de Consulta Interativo — Faça perguntas sobre o binário com histórico de chat persistente. Use macros de contexto (#func, #addr, #line, #range) para injetar código de função, endereços ou intervalos de desmontagem nas consultas.
Ações Automatizadas — Sugestões de renomeação assistidas por IA para funções, variáveis e tipos. Revise as alterações propostas em uma tabela com pontuações de confiança e aplique as ações selecionadas de volta ao IDB.
Gráfico de Conhecimento Semântico — Construa e explore um gráfico de conhecimento das funções do binário, relacionamentos de chamada, fluxos de dados e características de segurança. Inclui renderização gráfica visual, pesquisa semântica e detecção de comunidades.
Pesquisa de Documentos RAG — Faça upload de documentos de referência (.txt, .md, .rst, .pdf) e use-os como contexto durante consultas LLM. Suporta pesquisa híbrida texto+vetor via indexação Whoosh.
Integração SymGraph — Envie e receba nomes de funções, nomes de variáveis, tipos e dados de gráfico para a plataforma colaborativa SymGraph. Inclui um assistente de várias etapas com resolução de conflitos para pull.
Gerenciamento de Configurações — Configure vários provedores LLM e MCP, gerencie credenciais da API SymGraph, customize o prompt do sistema e defina caminhos de banco de dados.
A aba Consulta suporta um modo de agente autônomo ReAct (Raciocínio + Ação). Quando ativado, o LLM planeja uma estratégia de investigação, executa ferramentas para coletar informações, reflete sobre as descobertas e sintetiza uma resposta abrangente — tudo automaticamente em várias rodadas de raciocínio.
Configure níveis de esforço de raciocínio para controlar quanto o LLM "pensa" antes de responder:
O IDAssist pode se conectar a servidores MCP externos para interações LLM aumentadas por ferramentas, onde o modelo pode inspecionar funções programaticamente, ler desmontagem, consultar referências cruzadas e modificar o IDB durante o raciocínio. São suportados tanto servidores MCP baseados em URL (SSE ou HTTP Streamable) quanto servidores MCP baseados em stdio iniciados a partir de um comando CLI local. O IDAssist também fornece ferramentas internas integradas para chamada de funções sem exigir um servidor MCP externo.
Provedores LLM com suporte a chamada de ferramentas podem invocar funções de análise do IDA durante a conversa, permitindo investigação iterativa sem intervenção manual.
Forneça feedback positivo/negativo sobre explicações e respostas de consultas. O feedback é armazenado localmente e pode ser usado para melhorar a engenharia de prompts e a seleção de modelos.
O IDAssist segue um padrão MVC (Model-View-Controller):
src/views/) — Widgets de aba PySide6 que emitem sinais na interação do usuáriosrc/controllers/) — Conectam sinais da view a chamadas de serviço, gerenciam estadosrc/services/) — Lógica de negócios, provedores LLM, acesso a banco de dados, análise de gráficossrc/services/internal_tools.py) — Definições de ferramentas específicas do IDA para chamada de funções LLMsrc/services/graphrag/graphrag_tools.py) — Ferramentas de leitura/escrita de gráfico semântico para interação LLMPrincípios de design principais:
execute_on_main_thread()Instale o plugin (recomendado — Gerenciador de Plugins do IDA):
hcli plugin install idassist
Isso instala automaticamente o plugin e suas dependências Python no ambiente do IDA.
Ou instale manualmente (a partir do tarball de lançamento):
Baixe o zip da última versão em GitHub Releases e extraia-o no diretório de plugins do IDA:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/
Windows:
Extraia o zip em %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Em seguida, instale as dependências usando o Python empacotado do IDA (não o Python do sistema):
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt"
Substitua
<IDA_INSTALL_DIR>pelo caminho de instalação do seu IDA Pro (por exemplo,/opt/idapro-9.0ou ).
Para instruções detalhadas de configuração, veja Primeiros Passos.
O IDAssist suporta os seguintes tipos de provedor:
| Provedor | Modelo | Pontos Fortes |
|---|---|---|
| Anthropic | claude-sonnet-4-6 |
A aba Gráfico Semântico fornece um gráfico de conhecimento do binário:
Explore o gráfico via Visualização em Lista (chamadores, chamados, arestas, flags), Gráfico Visual (diagrama de nós interativo com expansão N-hop) ou Pesquisa (7 tipos de consulta, incluindo pesquisa semântica, funções semelhantes e contexto de chamada).
Clique com o botão direito em qualquer visualização de Desmontagem ou Pseudocódigo para acessar:
| Ação | Atalho | Efeito |
|---|---|---|
| Explicar Função |
requirements.txtConsulte o arquivo LICENSE para obter detalhes.
| Nível | Orçamento de Pensamento | Melhor para |
|---|
| Nenhum | Desativado | Consultas rápidas e simples |
| Baixo | ~2K tokens | Análise direta |
| Médio | ~10K tokens | Complexidade moderada |
| Alto | ~25K tokens | Análise profunda, código complexo |
C:\Program Files\IDA Pro 9.0Dica: Você também pode definir a variável de ambiente IDAUSR para um diretório personalizado contendo um subdiretório plugins/.
Abra o IDAssist: Inicie o IDA Pro, abra um binário e pressione Ctrl+Shift+A (ou Edit > Plugins > IDAssist).
Configure um provedor: Vá para a aba Configurações, clique em Adicionar em Provedores LLM e configure seu provedor preferido.
Analise uma função: Navegue até qualquer função, clique na aba Explicar e pressione Explicar Função.
| Tipo | Método de Autenticação | Notas |
|---|
anthropic_platform | API Key | API Anthropic direta |
anthropic_oauth | OAuth (navegador) | Autenticação baseada em navegador |
anthropic_claude_cli | CLI local | Usa o binário claude da CLI |
bedrock | Credenciais AWS | API AWS Bedrock Converse direta |
openai_platform | API Key | API OpenAI direta |
openai_oauth | OAuth (navegador) | Autenticação baseada em navegador |
ollama | Nenhum (local) | Modelos auto-hospedados |
litellm | URL de Proxy | Proxy multi-provedor |
| Análise de código forte, pensamento estendido |
| OpenAI | gpt-5.3-codex | Rápido, boa análise geral |
| Ollama | qwen2.5-coder:32b | Local, não precisa de chave API |
Ctrl+Shift+E |
| Abre a aba Explicar e gera explicação |
| Perguntar Sobre Seleção | Ctrl+Shift+Q | Abre a aba Consulta com contexto #func |
| Sugestões de Renomeação | — | Abre a aba Ações e gera sugestões |