由AI驱动的IDA Pro逆向工程插件
作者: Jason Tang
IDAssist 是一个 IDA Pro 插件,将基于 LLM 的分析直接集成到 IDA 的界面中,通过可配置的 LLM 提供程序、语义知识图谱、RAG 文档搜索提供 AI 辅助的二进制逆向工程,并支持多种 LLM 提供程序。
IDAssist 使用 Python 和 PySide6 构建,作为 IDA Pro 9.0+ 中的一个可停靠面板运行,并与 LLM 提供程序(OpenAI, Anthropic, Ollama, LiteLLM 等)通信,用于分析函数、建议重命名、回答有关代码的问题,以及构建整个二进制文件的可搜索知识图谱。

函数解释 — 生成反编译函数的详细自然语言解释,并自动进行安全分析,包括风险级别、活动概况、安全标志和 API 检测。
交互式查询聊天 — 询问关于二进制文件的问题,并保留持久化聊天历史。使用上下文宏(#func、#addr、#line、#range)将函数代码、地址或反汇编范围注入到查询中。
自动化操作 — 由AI驱动的函数、变量和类型重命名建议。在带有置信度分数的表格中查看提议的更改,然后选择性地将操作应用到 IDB。
语义知识图谱 — 构建和探索二进制文件的函数、调用关系、数据流和安全特征的知识图谱。包括可视化图形渲染、语义搜索和社区检测。
RAG 文档搜索 — 上传参考文档(.txt、.md、.rst、.pdf),并在 LLM 查询期间将其作为上下文使用。支持通过 Whoosh 索引进行混合文本+向量搜索。
SymGraph 集成 — 推送和拉取函数名称、变量名称、类型和图数据到 SymGraph 协作平台。包含带有冲突解决的多步向导。
设置管理 — 配置多个 LLM 和 MCP 提供程序,管理 SymGraph API 凭据,自定义系统提示词,以及设置数据库路径。
查询选项卡支持自主 ReAct(推理+行动)代理模式。启用后,LLM 规划调查策略,执行工具收集信息,反思发现结果,并综合给出全面答案——所有步骤自动跨多个推理轮次进行。
配置推理努力级别以控制 LLM 在响应前的“思考”程度:
| 级别 | 思考预算 | 最佳用途 |
|---|
IDAssist 可以连接到外部 MCP 服务器,实现工具增强的 LLM 交互,使模型能够在推理过程中以编程方式检查函数、读取反汇编、查询交叉引用和修改 IDB。支持基于 URL 的 MCP 服务器(SSE 或 Streamable HTTP)以及从本地 CLI 命令启动的 stdio 型 MCP 服务器。IDAssist 还提供内置内部工具用于函数调用,无需外部 MCP 服务器。
支持工具调用的 LLM 提供程序可以在对话过程中调用 IDA 分析函数,实现无需手动干预的迭代调查。
对解释和查询响应提供赞/踩反馈。反馈信息本地存储,可用于改进提示词工程和模型选择。
IDAssist 遵循 MVC(模型-视图-控制器)模式:
src/views/) — PySide6 选项卡控件,在用户交互时发出信号src/controllers/) — 将视图信号连接到服务调用,管理状态src/services/) — 业务逻辑、LLM 提供程序、数据库访问、图分析src/services/internal_tools.py) — 用于 LLM 函数调用的 IDA 特定工具定义src/services/graphrag/graphrag_tools.py) — 用于 LLM 交互的语义图读写工具主要设计原则:
execute_on_main_thread() 在主线程执行安装插件(推荐 — IDA 插件管理器):
hcli plugin install idassist
这会自动将插件及其 Python 依赖项安装到 IDA 的环境中。
或手动安装(从发布压缩包):
从 GitHub Releases 下载最新的发布 zip 文件,并将其解压到您的 IDA 插件目录中:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/
Windows:
将 zip 文件解压到 %APPDATA%\Hex-Rays\IDA Pro\plugins\。
然后使用 IDA 自带的 Python(而不是系统 Python)安装依赖项:
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"
将
<IDA_INSTALL_DIR>替换为您的 IDA Pro 安装路径(例如/opt/idapro-9.0或C:\Program Files\IDA Pro 9.0)。您也可以设置 环境变量指向一个包含 子目录的自定义目录。
有关详细安装说明,请参阅开始使用。
IDAssist 支持以下提供程序类型:
| 提供程序 | 模型 | 优势 |
|---|---|---|
| Anthropic | claude-sonnet-4-6 | 强大的代码分析、扩展思考 |
| OpenAI |
语义图选项卡提供二进制文件的知识图谱:
通过列表视图(调用者、被调用者、边、标志)、可视化图(交互式节点图,支持 N 跳扩展)或搜索(7 种查询类型,包括语义搜索、相似函数和调用上下文)来探索图形。
在任意反汇编或伪代码视图中右键单击即可访问:
| 操作 | 快捷键 | 效果 |
|---|---|---|
| 解释函数 | Ctrl+Shift+E |
requirements.txt 中列出的 Python 包详情请参阅 LICENSE 文件。
| 无 | 禁用 | 快速、简单查询 |
| 低 | ~2K tokens | 直接分析 |
| 中 | ~10K tokens | 中等复杂度 |
| 高 | ~25K tokens | 深度分析,复杂代码 |
IDAUSRplugins/打开 IDAssist: 启动 IDA Pro,打开一个二进制文件,然后按 Ctrl+Shift+A(或 Edit > Plugins > IDAssist)。
配置提供程序: 转到设置选项卡,在 LLM 提供程序下点击 添加,然后配置您偏好的提供程序。
分析函数: 导航到任意函数,点击 解释 选项卡,然后按 解释函数。
| 类型 | 认证方法 | 备注 |
|---|
anthropic_platform | API 密钥 | Anthropic API 直接 |
anthropic_oauth | OAuth(浏览器) | 基于浏览器的认证 |
anthropic_claude_cli | 本地 CLI | 使用 claude CLI 二进制文件 |
bedrock | AWS 凭据 | 直接 AWS Bedrock Converse API |
openai_platform | API 密钥 | OpenAI API 直接 |
openai_oauth | OAuth(浏览器) | 基于浏览器的认证 |
ollama | 无(本地) | 自托管模型 |
litellm | 代理 URL | 多提供程序代理 |
gpt-5.3-codex| 快速、良好的通用分析 |
| Ollama | qwen2.5-coder:32b | 本地、无需 API 密钥 |
| 打开解释选项卡并生成解释 |
| 询问选中内容 | Ctrl+Shift+Q | 打开查询选项卡并添加 #func 上下文 |
| 重命名建议 | — | 打开操作选项卡并生成建议 |