
Use o decompilador IDA PRO HexRays com OpenAI(ChatGPT) para encontrar possíveis vulnerabilidades em binários
Um plugin do IDA PRO para ajudar a encontrar vulnerabilidades em binários.
Use o decompilador HexRays do IDA PRO juntamente com OpenAI(ChatGPT) para encontrar possíveis vulnerabilidades em binários
Aviso: respostas possíveis ao tentar encontrar vulnerabilidades em binários usando uma IA podem levar a falsos positivos, no entanto, funcionou em muitos CTFs em que trabalhei (simples/médios ... alguns difíceis)
Coloque o script Python no local de plugins do IDA Pro.
Clique com o botão direito no código decompilado, selecione "Find possible vulnerability in function"




O BinAIVulHunter é um plugin avançado para IDA Pro que aproveita múltiplos provedores de IA (OpenAI GPT, Google Gemini e Ollama) para realizar análise inteligente de vulnerabilidades, explicação de código e avaliação de segurança de funções decompiladas.
Baixe o plugin:
# Salve BinAIVulHunter.py no diretório de plugins do seu IDA Pro
# Normalmente: C:\Program Files\IDA Pro X.X\plugins\
Instale as dependências básicas:
pip install psutil
Instale as bibliotecas do provedor de IA (escolha uma ou mais):
# Para OpenAI
pip install openai
# Para Google Gemini
pip install google-generativeai
# Para Ollama (IA local)
pip install requests
Reinicie o IDA Pro para carregar o plugin
Obtenha a Chave da API:
Defina a Variável de Ambiente:
# Prompt de comando do Windows
set OPENAI_API_KEY=sk-sua-chave-openai-aqui
# PowerShell
$env:OPENAI_API_KEY="sk-sua-chave-openai-aqui"
# Linux/Mac
export OPENAI_API_KEY="sk-sua-chave-openai-aqui"
Reinicie o IDA Pro
Obtenha a Chave da API:
Defina a Variável de Ambiente:
# Prompt de comando do Windows
set GEMINI_API_KEY=sua-chave-gemini-aqui
# PowerShell
$env:GEMINI_API_KEY="sua-chave-gemini-aqui"
# Linux/Mac
export GEMINI_API_KEY="sua-chave-gemini-aqui"
Reinicie o IDA Pro
Instale o Ollama:
# Linux
curl -fsSL https://ollama.ai/install.sh | sh
# macOS
brew install ollama
Inicie o Serviço do Ollama:
ollama serve
Baixe os Modelos de IA:
# Para análise geral de código
ollama pull llama2
# Para tarefas de codificação (recomendado)
ollama pull codellama
# Outros modelos especializados
ollama pull mistral
ollama pull deepseek-coder
Variáveis de Ambiente Opcionais:
# Servidor Ollama personalizado (se não for localhost:11434)
set OLLAMA_BASE_URL=http://seu-servidor:11434
# Definir modelo padrão
set OLLAMA_MODEL=codellama
Defina seu provedor de IA preferido:
# Usar OpenAI (padrão)
set VULCHAT_PROVIDER=openai
# Usar Google Gemini
set VULCHAT_PROVIDER=gemini
# Usar Ollama (local)
set VULCHAT_PROVIDER=ollama
Edit → VulChatClique com o botão direito na visualização do decompilador para acessar:
Acesse via Edit → VulChat → Control Panel ou Ctrl+Alt+P:
Para análise automatizada e integração com CI/CD:
# Varrer todas as funções em busca de vulnerabilidades
ida64.exe -A -S"BinAIVulHunter.py --scan-all --output results.json" binary.exe
# Decompilar todas as funções com cache
ida64.exe -A -S"BinAIVulHunter.py --decompile-all --cache-dir ./cache" binary.exe
# Configurações personalizadas de lote
ida64.exe -A -S"BinAIVulHunter.py --scan-all --batch-size 5 --function-pause 3 --batch-pause 15" binary.exe
O BinAIVulHunter analisa código com base na taxonomia CWE-699 de Desenvolvimento de Software:
# Navegue até uma função no IDA Pro
# Pressione Ctrl+Alt+V ou clique com o botão direito → "Find Possible Vulnerability"
# Exemplo de saída:
"""
POTENTIAL VULNERABILITIES:
1. Buffer overflow in strcpy operation
CWE: CWE-120 | Severity: High
Mitigation: Replace strcpy with strncpy and validate buffer sizes
2. Integer overflow in arithmetic operation
CWE: CWE-190 | Severity: Medium
Mitigation: Add overflow checks before arithmetic operations
"""
# Varredura em lote por linha de comando
ida64.exe -A -S"BinAIVulHunter.py --scan-all --output vuln_report.json" malware.exe
# Resultados em vuln_report.json:
{
"scan_results": {
"total_functions": 245,
"vulnerable_functions": 12,
"functions": [
{
"name": "sub_401000",
"address": "0x401000",
"vulnerabilities": [
{
"description": "Unsafe string function used",
"cwe_id": "CWE-120",
"severity": "High",
"mitigation": "Use safe string functions"
}
]
}
]
}
}
# Defina variáveis de ambiente
os.environ['VULCHAT_PROVIDER'] = 'ollama'
os.environ['OLLAMA_MODEL'] = 'codellama'
# Ou use o Painel de Controle no IDA Pro:
# Edit → VulChat → Control Panel → Provider Menu → Ollama
Erro "Provider not available":
# Verifique as variáveis de ambiente
echo %OPENAI_API_KEY%
echo %GEMINI_API_KEY%
# Confirme se as chaves de API são válidas
# Reinicie o IDA Pro após definir as variáveis
Falha na conexão com o Ollama:
# Verifique se o Ollama está em execução
curl http://localhost:11434/api/tags
# Inicie o Ollama se necessário
ollama serve
# Confirme se os modelos estão instalados
ollama list
Problemas de memória durante o processamento em lote:
# Reduza o tamanho do lote no Painel de Controle ou no modo headless
--batch-size 1 --function-pause 10
Limites de taxa da API:
# Aumente os tempos de pausa
--function-pause 10 --batch-pause 30
# Ou alterne para o Ollama para processamento local ilimitado
Verifique a janela de saída do IDA Pro para obter logs detalhados:
Aceitamos contribuições! Consulte nossas Diretrizes de Contribuição para obter detalhes.
git clone https://github.com/seuusuario/BinAIVulHunter.git
pip install -e .[dev]
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.
⚠️ Aviso: Esta ferramenta é apenas para fins educacionais e de pesquisa legítima em segurança. Sempre garanta que você tenha autorização adequada antes de analisar qualquer software. A análise gerada por IA deve ser verificada manualmente e não substitui a revisão humana especializada.
| Variável | Descrição | Padrão | Obrigatória |
|---|
OPENAI_API_KEY | Chave da API OpenAI | Nenhum | Para OpenAI |
GEMINI_API_KEY | Chave da API Google Gemini | Nenhum | Para Gemini |
OLLAMA_BASE_URL | URL do servidor Ollama | http://localhost:11434 | Não |
OLLAMA_MODEL | Modelo Ollama padrão | llama2 | Não |
VULCHAT_PROVIDER | Provedor de IA a ser usado | openai | Não |
VULCHAT_MODEL | Nome do modelo específico | Padrão do provedor | Não |
OPENAI_BASE_URL | Endpoint OpenAI personalizado | API oficial | Não |
| Atalho | Ação |
|---|
Ctrl+Alt+V | Encontrar Vulnerabilidades |
Ctrl+Alt+G | Explicar Função |
Ctrl+Alt+R | Renomear Variáveis |
Ctrl+Alt+X | Gerar Entradas de Teste |
Ctrl+Alt+S | Varrer Todas as Funções |
Ctrl+Alt+W | Consulta de Referência CWE |
Ctrl+Alt+P | Painel de Controle |
Ctrl+F5 | Decompilar Todas as Funções |
| Parâmetro | Descrição | Padrão |
|---|
--scan-all | Varrer todas as funções em busca de vulnerabilidades | - |
--decompile-all | Decompilar todas as funções | - |
--batch-size | Funções por lote | 3 |
--function-pause | Pausa entre funções (segundos) | 5 |
--batch-pause | Pausa entre lotes (segundos) | 10 |
--output | Arquivo de saída JSON para resultados | Nenhum |
--cache-dir | Diretório para cache de descompilação | Nenhum |
| Categoria | ID CWE | Exemplos |
|---|
| Erros de Buffer de Memória | CWE-1218 | Estouros de buffer, use-after-free |
| Erros Numéricos | CWE-189 | Estouro de inteiro, divisão por zero |
| Gerenciamento de Recursos | CWE-399 | Vazamentos de memória, vazamentos de manipuladores de arquivo |
| Validação de Dados | CWE-1215 | Validação de entrada, falhas de injeção |
| Autenticação | CWE-1211 | Autenticação fraca, bypass |
| Autorização | CWE-1212 | Escalonamento de privilégios, controle de acesso |
| Problemas Criptográficos | CWE-310 | Criptografia fraca, gerenciamento de chaves |
| Vazamentos de Informação | CWE-199 | Exposição de dados, canais laterais |
| Tratamento de Erros | CWE-389 | Exceções não capturadas, estados de erro |
| Inicialização | CWE-452 | Variáveis não inicializadas, limpeza |
| Provedor | Modelo | Melhor Para | Custo |
|---|
| OpenAI | gpt-4 | Análise abrangente | $$$ |
| OpenAI | gpt-3.5-turbo | Análise geral rápida | $$ |
| Gemini | gemini-pro | Desempenho equilibrado | $$ |
| Ollama | codellama | Análise focada em código | Gratuito |
| Ollama | deepseek-coder | Detecção de vulnerabilidades | Gratuito |
| Ollama | llama2 | Propósito geral | Gratuito |
| Provedor | Velocidade | Precisão | Privacidade | Custo |
|---|
| OpenAI GPT-4 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ |
| Gemini Pro | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Ollama | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |