一个用于帮助在二进制文件中查找漏洞的 IDA PRO 插件。
使用 IDA PRO HexRays 反编译器结合 OpenAI(ChatGPT)在二进制文件中查找可能的漏洞。
免责声明:使用 AI 在二进制文件中查找漏洞时,返回的结果可能会产生误报,但该工具在我参与过的许多 CTF 比赛中都表现良好(简单/中等……部分困难)。
将 Python 脚本放入 IDA Pro 插件目录。
右键单击反编译代码,选择“在函数中查找可能的漏洞”




BinAIVulHunter 是一款高级 IDA Pro 插件,利用多种 AI 提供商(OpenAI GPT、Google Gemini 和 Ollama)对反编译函数执行智能漏洞分析、代码解释和安全评估。
下载插件:
# Save BinAIVulHunter.py to your IDA Pro plugins directory
# Typically: C:\Program Files\IDA Pro X.X\plugins\
安装基础依赖:
pip install psutil
安装 AI 提供商库(选择一个或多个):
# For OpenAI
pip install openai
# For Google Gemini
pip install google-generativeai
# For Ollama (local AI)
pip install requests
重启 IDA Pro 以加载插件
获取 API 密钥:
设置环境变量:
# Windows Command Prompt
set OPENAI_API_KEY=sk-your-openai-key-here
# PowerShell
$env:OPENAI_API_KEY="sk-your-openai-key-here"
# Linux/Mac
export OPENAI_API_KEY="sk-your-openai-key-here"
重启 IDA Pro
获取 API 密钥:
设置环境变量:
# Windows Command Prompt
set GEMINI_API_KEY=your-gemini-key-here
# PowerShell
$env:GEMINI_API_KEY="your-gemini-key-here"
# Linux/Mac
export GEMINI_API_KEY="your-gemini-key-here"
重启 IDA Pro
安装 Ollama:
# Linux
curl -fsSL https://ollama.ai/install.sh | sh
# macOS
brew install ollama
启动 Ollama 服务:
ollama serve
拉取 AI 模型:
# For general code analysis
ollama pull llama2
# For coding tasks (recommended)
ollama pull codellama
# Other specialized models
ollama pull mistral
ollama pull deepseek-coder
可选环境变量:
# Custom Ollama server (if not localhost:11434)
set OLLAMA_BASE_URL=http://your-server:11434
# Set default model
set OLLAMA_MODEL=codellama
设置你首选的 AI 提供商:
# Use OpenAI (default)
set VULCHAT_PROVIDER=openai
# Use Google Gemini
set VULCHAT_PROVIDER=gemini
# Use Ollama (local)
set VULCHAT_PROVIDER=ollama
Edit → VulChat在反编译器视图中右键单击以访问:
通过 Edit → VulChat → Control Panel 或 Ctrl+Alt+P 访问:
用于自动化分析和 CI/CD 集成:
# Scan all functions for vulnerabilities
ida64.exe -A -S"BinAIVulHunter.py --scan-all --output results.json" binary.exe
# Decompile all functions with caching
ida64.exe -A -S"BinAIVulHunter.py --decompile-all --cache-dir ./cache" binary.exe
# Custom batch settings
ida64.exe -A -S"BinAIVulHunter.py --scan-all --batch-size 5 --function-pause 3 --batch-pause 15" binary.exe
BinAIVulHunter 基于 CWE-699 软件开发分类法分析代码:
# Navigate to a function in IDA Pro
# Press Ctrl+Alt+V or right-click → "Find Possible Vulnerability"
# Example output:
"""
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
"""
# Command line batch scan
ida64.exe -A -S"BinAIVulHunter.py --scan-all --output vuln_report.json" malware.exe
# Results in 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"
}
]
}
]
}
}
# Set environment variables
os.environ['VULCHAT_PROVIDER'] = 'ollama'
os.environ['OLLAMA_MODEL'] = 'codellama'
# Or use Control Panel in IDA Pro:
# Edit → VulChat → Control Panel → Provider Menu → Ollama
“提供商不可用”错误:
# Check environment variables
echo %OPENAI_API_KEY%
echo %GEMINI_API_KEY%
# Verify API keys are valid
# Restart IDA Pro after setting variables
Ollama 连接失败:
# Check if Ollama is running
curl http://localhost:11434/api/tags
# Start Ollama if needed
ollama serve
# Verify models are installed
ollama list
批量处理期间的内存问题:
# Reduce batch size in Control Panel or headless mode
--batch-size 1 --function-pause 10
API 速率限制:
# Increase pause times
--function-pause 10 --batch-pause 30
# Or switch to Ollama for unlimited local processing
查看 IDA Pro 的输出窗口以获取详细日志:
我们欢迎贡献!有关详细信息,请参阅我们的贡献指南。
git clone https://github.com/yourusername/BinAIVulHunter.git
pip install -e .[dev]
本项目采用 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。
⚠️ 免责声明:此工具仅用于教育和合法的安全研究目的。在分析任何软件之前,请务必确保你已获得适当授权。AI 生成的分析应经过人工验证,不能替代专家的审查。
| 变量 | 说明 | 默认值 | 是否必需 |
|---|
OPENAI_API_KEY | OpenAI API 密钥 | 无 | 使用 OpenAI 时需要 |
GEMINI_API_KEY | Google Gemini API 密钥 | 无 | 使用 Gemini 时需要 |
OLLAMA_BASE_URL | Ollama 服务器 URL | http://localhost:11434 | 否 |
OLLAMA_MODEL | 默认 Ollama 模型 | llama2 | 否 |
VULCHAT_PROVIDER | 要使用的 AI 提供商 | openai | 否 |
VULCHAT_MODEL | 特定模型名称 | 提供商默认值 | 否 |
OPENAI_BASE_URL | 自定义 OpenAI 端点 | 官方 API | 否 |
| 快捷键 | 操作 |
|---|
Ctrl+Alt+V | 查找漏洞 |
Ctrl+Alt+G | 解释函数 |
Ctrl+Alt+R | 重命名变量 |
Ctrl+Alt+X | 生成测试输入 |
Ctrl+Alt+S | 扫描所有函数 |
Ctrl+Alt+W | CWE 参考查询 |
Ctrl+Alt+P | 控制面板 |
Ctrl+F5 | 反编译所有函数 |
| 参数 | 说明 | 默认值 |
|---|
--scan-all | 扫描所有函数以查找漏洞 | - |
--decompile-all | 反编译所有函数 | - |
--batch-size | 每批处理的函数数量 | 3 |
--function-pause | 函数之间的暂停时间(秒) | 5 |
--batch-pause | 批次之间的暂停时间(秒) | 10 |
--output | 结果的 JSON 输出文件 | 无 |
--cache-dir | 反编译缓存目录 | 无 |
| 类别 | CWE ID | 示例 |
|---|
| 内存缓冲区错误 | CWE-1218 | 缓冲区溢出、释放后使用 |
| 数值错误 | CWE-189 | 整数溢出、除零 |
| 资源管理 | CWE-399 | 内存泄漏、文件句柄泄漏 |
| 数据验证 | CWE-1215 | 输入验证、注入缺陷 |
| 身份验证 | CWE-1211 | 弱身份验证、绕过 |
| 授权 | CWE-1212 | 权限提升、访问控制 |
| 加密问题 | CWE-310 | 弱加密、密钥管理 |
| 信息泄露 | CWE-199 | 数据暴露、侧信道 |
| 错误处理 | CWE-389 | 未捕获异常、错误状态 |
| 初始化 | CWE-452 | 未初始化变量、清理 |
| 提供商 | 模型 | 最适合 | 费用 |
|---|
| OpenAI | gpt-4 | 全面分析 | $$$ |
| OpenAI | gpt-3.5-turbo | 快速常规分析 | $$ |
| Gemini | gemini-pro | 均衡性能 | $$ |
| Ollama | codellama | 代码聚焦分析 | 免费 |
| Ollama | deepseek-coder | 漏洞检测 | 免费 |
| Ollama | llama2 | 通用用途 | 免费 |
| 提供商 | 速度 | 准确性 | 隐私 | 成本 |
|---|
| OpenAI GPT-4 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ |
| Gemini Pro | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Ollama | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |