CSIT-SG/AETHER

GitHub: CSIT-SG/AETHER

AI 驱动的 IDA Pro 逆向工程副驾驶插件,通过自动化注释、变量重命名和交互式对话辅助恶意软件分析。

Stars: 7 | Forks: 0

# AETHER - AI 驱动的 IDA Pro 逆向工程插件 ![AETHER Banner](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6a199c1e17173749.png)

一款 AI 驱动的逆向工程副驾驶,用于协助 IDA Pro 中繁琐的恶意软件分析。

IDA Pro IDA Pro MCP Version Python 3.11+ Platform

## 目录 - [概述](#overview) - [核心功能](#key-features) - [相比原生 IDA Pro MCP 的改进](#improvements-over-raw-ida-pro-mcp) - [系统要求](#requirements) - [安装](#installation) - [手动安装](#manual-installation) - [如何运行](#how-to-run) - [使用示例](#usage-examples) - [依赖项](#dependencies) - [文档](#documentation) - [局限性](#limitations) - [作者/维护者](#authorsmaintainers) - [许可证](#license) - [致谢](#acknowledgments) - [来源](#sources) ## 概述 **AETHER** 是一款高级 IDA Pro 插件,将大型语言模型 集成到您的逆向工程工作流中。它能自动化处理耗时的任务,如函数注释、变量重命名、结构体创建和上下文分析,让安全分析师能够专注于更深层次的恶意软件分析和威胁评估。 该插件利用 IDA Pro 模型上下文协议 与 LLM 进行通信,同时高效地管理上下文和 token。它专为恶意软件分析、漏洞研究和二进制逆向工程设计。 ## 核心功能 ### 1. **智能注释系统** - 自动为函数和代码段添加有意义的注释 - 重命名变量和函数名以提高代码可读性 - 支持快速注释模式以便进行快速分析 - 注释更改的撤销/重做功能 ### 2. **智能函数上下文收集** - 选择性收集函数调用层级以供 AI 分析 - LLM 智能选择在上下文中分析哪些函数 - 显示函数调用树以理解代码关系 示例调用树: ``` start [0x10f0] └── main [0x1240] ├── sub_11E0 [0x11e0] └── sub_1F90 [0x1f90] ├── sub_1660 [0x1660] │ └── sub_1340 [0x1340] ├── sub_18F0 [0x18f0] └── sub_1C00 [0x1c00] └── sub_1BA0 [0x1ba0] ``` ### 3. **实时分析** - 快速分析模式,提供即时函数洞察 - 使用 LLM 生成的修正进行实时注释 - 流式分析,提供即时反馈 ### 4. **结构体分析** - 自动结构体创建和识别 - 结构体注释和字段命名 - 结构体成员分析和文档化 ### 5. **可定制分析** - 针对特定分析需求的用户自定义 prompt - 多种 LLM 模型选择 - 针对不同分析配置文件的配置管理 - 使用不同参数重试分析 ### 6. **批处理与自动化** - 在批处理模式下分析多个函数 - 自动化上下文选择和收集 - 通过上下文管理实现高效的 token 使用 ### 7. **Copilot - 交互式 AI 助手** - **多轮对话**: 向 LLM 询问澄清问题和后续问题 - **上下文管理**: 选择函数作为上下文以进行智能分析 - **代码摘要**: 获取复杂代码段的简明摘要 - **自然语言查询**: 询问有关函数行为和逻辑的问题 ## 相比原生 IDA Pro MCP 的改进 - **上下文管理**: 智能管理 LLM 上下文窗口以最大化分析质量 - **优化提示**: 专为逆向工程任务设计的专用 prompt - **Token 效率**: 在保持分析质量的同时减少 token 消耗 - **单次工具调用**: 通过高效的工具交互最大限度地减少 API 调用 - **IDA 集成**: 与 IDA Pro UI 和工作流无缝集成 - **撤销/重做支持**: 跟踪并还原 AI 生成的更改 - **多模型支持**: 支持多个 LLM 提供商和模型 ## 系统要求 ### 最低系统要求 - **操作系统**: Windows, Linux, 或 macOS - **Python**: 3.11 或更高版本 - **IDA Pro**: 版本 9.0 或更高 - 已在 IDA Pro 9.1 和 9.2 上测试 ### API 要求 - **LLM API Key**: 默认需要 OpenRouter API Key。 - 提供商灵活性: 虽然预配置为 OpenRouter,但 Aether 支持任何 OpenAI 兼容的 API。 - 您可以通过编辑设置中的 `DEFAULT_CONFIG` 来自定义提供商 - **网络**: 用于 LLM API 调用的互联网连接(或本地 LLM 服务器设置) ### 其他 - **MCP Server**: `ida-pro-mcp` 服务器版本 1.5.0a8(在安装过程中自动安装) ## 安装 ### `ida-pro-mcp` & AETHER 自动安装 (推荐) 目前有 2 种安装方法:在线版和离线版。 两者的主要区别在于,在线版 **下载必要的依赖项**,而离线版 **假定所有依赖项都已安装并检查它们**。 进入 `/scripts` 目录后运行以下命令。 #### Windows ``` # 使用 execution policy bypass(推荐) powershell -executionpolicy bypass -file .\install.ps1 # 或者如果您的 execution policy 已设置为 Unrestricted .\install.ps1 # 用于详细输出和故障排除 powershell -executionpolicy bypass -file .\install.ps1 -Verbose ``` #### Linux / Ubuntu ``` chmod +x install.sh ./install.sh # 用于详细输出和故障排除 ./install.sh -v ``` ### 安装后配置 运行安装脚本后: 1. **启动 MCP Server**,在新的终端/控制台中运行: ida-pro-mcp --transport http://127.0.0.1:8744/sse 2. **打开 IDA Pro** 并加载任意二进制文件 3. **打开 Pseudocode View** (按 `Tab`) 4. **右键单击** 并选择 `AETHER AI-RE > Plugin settings` 5. **输入您的 API 凭据**: - API Key: **您的 LLM 提供商 API 密钥 (例如 OpenAI API key)** - Base URL: API 端点 (例如 `https://api.openai.com/v1`) - Model: 模型名称 (例如 `gpt-4-turbo`, `gpt-3.5-turbo`) 6. **点击 "Test Configuration"** 验证您的设置。它应该如下所示: ![AETHER-save-config-1](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9dad91fc7b173801.png) ![AETHER-save-config-2](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0bcada1caf173811.png) 7. **保存** 您的配置 8. **继续** 使用 Aether 插件。请参阅 [如何运行](#how-to-run) 章节。 **注意**,同时只能运行 **1** 个 IDA 实例。 ## 手动安装 适用于喜欢手动设置的开发人员或高级用户: 1. 克隆此仓库: git clone https://github.com/CSIT-SG/AETHER cd AETHER 2. 安装 IDA Pro MCP (本地 Wheel): 确保 .whl 文件位于您的 packages 目录中,然后运行: pip install ./scripts/packages/ida_pro_mcp-1.5.0a8-py3-none-any.whl 3. 安装 AETHER 依赖项: pip install -r requirements.txt 4. 切换 IDA Python 环境 (如果需要): idapyswitch 5. 验证 IDA Python 和插件环境是否匹配 ## 如何运行 ### 使用 AETHER 功能 在 IDA Pro 中,导航到 Pseudocode View (Tab 键) 并右键单击以访问 AETHER 功能: - **Annotate Function**: 添加 AI 生成的注释和变量名 - **Fast Analysis**: 对当前函数进行快速实时分析 - **Batch Analysis**: 一次分析多个函数 - **Settings**: 配置 API 密钥和分析参数 ## 使用示例 ### 自动注释函数 1. 在 Pseudocode View 中右键单击函数 2. 选择 `AETHER AI-RE > Annotate only this Function` 3. AETHER 将: - 分析函数逻辑 - 生成有意义的变量名 - 添加解释性注释 - 将更改应用到 IDA Pro 4. 如果您想还原更改,请使用 `Undo latest annotation` ### 批量分析调用链 1. 在 Pseudocode View 中右键单击函数 2. 使用 `AETHER AI-RE > Annotate function tree with default selection` 构建调用树 3. AETHER 通过智能上下文管理处理整个调用链 ### 自定义 Prompt 分析 1. 在 Pseudocode View 中右键单击函数 2. 选择 `AETHER AI-RE > AInalyse (advanced options)` 3. 输入您的自定义 prompt (例如 "Find all potential vulnerabilities in this code") 4. AETHER 使用您的自定义指令分析函数 ### 自动结构体创建 1. 在 IDA Pro 的 Pseudocode View 中,单击一个变量并将其高亮显示 2. 右键单击并选择 `AETHER AI-RE > Create struct for highlighted variable` (或按 `Ctrl+Alt+V`) 3. AETHER 将: - 分析变量及其在整个函数中的使用模式 - 识别结构体成员及其偏移量 - 根据代码上下文确定字段类型 - 创建格式正确的 C 结构体定义 - 自动在 IDA Pro 中将结构体类型应用于该变量 4. 如有需要,在 IDA 的 struct view 中查看并优化创建的结构体 **局限性:** - 最适用于具有清晰访问模式的变量 (例如 `var->member` 或 `var[offset]`) - 需要函数内有足够的上下文才能准确推断成员类型 - 可能难以处理复杂的嵌套结构或不透明的变量用法 - 建议对关键逆向工程任务进行人工审查 ### 交互式 AI Copilot 1. 在 Pseudocode View 中右键单击并选择 `AETHER AI-RE > Open AI Chatbot` 2. 一个专用的 Chatbot 面板将打开,带有对话界面 3. **提问** - 输入有关代码的自然语言问题: - "What does this function do?" - "Which functions call this one?" - "What are potential security issues here?" 4. **添加上下文** - 点击 `Add Context` 按钮 (Windows 上为回形针图标,Linux 上为齿轮图标) 以选择函数: - 打开函数选择器对话框 - 选择最多 50 个函数以提供上下文 - LLM 使用上下文提供更明智的答案 5. **使用可用工具** - LLM 可以自动: - 使用 `list_functions` 列出函数 - 使用 `get_function_pseudocode` 获取伪代码 - 使用 `get_data_at_address` 检索地址处的数据 - 使用 `get_xrefs_to` 查找交叉引用 6. **管理对话** - 创建行动计划和任务: - LLM 为复杂分析创建行动计划 - 将任务跟踪为 "Not Started", "In Progress", "Completed", 或 "Failed" - 维护对话历史和短期记忆 7. **保存结果** - 导出对话和发现: - 将摘要保存到本地文件 - 导出分析结果以用于文档 - 从以前的会话构建知识库 **可用的 Chatbot 右键单击选项:** - **Find (Ctrl+F)** - 在 AI 输出中查找字符串 - **Clear chat history** - **Manually Select Available Functions** - 限制 AI 可能使用的工具 (可能会导致 AI 无法按预期工作) - **Stop prompt** - 中途停止对话 **局限性:** - **Context Window** - 最多限制 50 个函数,以防止 LLM 上下文溢出 - **Conversation History** - 较旧的对话可能会被摘要以保持 token 效率 (默认: 摘要前的消息限制为 10 条) - **LLM Accuracy** - 答案取决于 LLM 质量和模型选择 - **Real-time Constraints** - 复杂分析可能需要更长的处理时间 - **Thread Safety** - 某些 IDA API 调用可能会在函数列表或伪代码检索期间导致延迟 - **Dependency on Function Names** - 分析质量随着函数和变量命名的改善而提高 - **Further Development** - 目前无法与 ida-pro-mcp 交互,无法编辑伪代码视图。 **设置及其他**: - **Configuration**: `config.json` 将使用默认配置创建。这也可以在 IDA 中通过 AETHER 进行编辑。 - Windows: `C:\Users\\AppData\Local\AETHER-IDA\config.json` - Linux: `~/.idapro/plugins/ainalyse-config.json` ## 依赖项 ### Python 包 ``` mcp # Model Context Protocol client openai # OpenAI API client psutil # System utilities pydantic>=2.11.7 # Data validation python-dotenv>=1.1.1 # Environment variable management ``` ### 外部工具 - **ida-pro-mcp**: 用于 IDA Pro 集成的 MCP server - **IDA Pro Python SDK**: 在 IDA Pro 9.0+ 中自动可用 ### 可选依赖项 - **OpenAI API**: 用于使用 OpenRouter 提供的各种模型。 - **Custom LLM Servers**: 用于本地 LLM 部署 (Ollama, vLLM 等) ### 详细日志记录 要进行详细的故障排除,请启用详细模式: **Windows:** ``` powershell -executionpolicy bypass -file .\install.ps1 -Verbose ``` **Linux:** ``` ./install.sh -v ``` ## 文档 有关更详细的信息: - 请参阅 [docs/](./docs/) 文件夹以获取更多文档 - 查看 [docs/BUGS.md](./docs/BUGS.md) 以获取已知问题和错误报告 - 查看 [docs/FAQ.md](./docs/FAQ.md) 以获取常见问题和修复方法 - 有关实现细节,请参阅内联代码注释 ## 局限性 -LM 的准确性是可变的 - 注释通常不如函数和变量名可靠 - 正在解决中 - 偶尔会出现格式问题 - 如果当前结果不令人满意,请多次重试以获得不同的结果 ## 作者/维护者 本项目由以下人员编写: - Ang Guang Yao ([@guangyaoa123](https://github.com/guangyaoa123)) - Ang Ian ([@Ang-Ian](https://github.com/Ang-Ian)) - Chan Weng Tim ([@TimTimTimTimTimTimTimTimTimTimTimTimTi](https://github.com/TimTimTimTimTimTimTimTimTimTimTimTimTi)) - Kan Onn Kit ([@PhotonicGluon](https://github.com/PhotonicGluon)) - Leland Tan Jin Jie ([@loland](https://github.com/loland)) - Mervyn Chua ([@MervC-3151](https://github.com/MervC-3151)) - Ng Jun Han ([@GoldenStone02](https://github.com/GoldenStone02)) - Tan Yehan ([@XxHanpowerxX](https://github.com/XxHanpowerxX)) - Theodore Lee Chong Jen ([@TheoLeeCJ](https://github.com/TheoLeeCJ)) - Zeph Teo ([@fritzthecrisp](https://github.com/fritzthecrisp)) ## 许可证 本项目根据 GPLv3 许可证的条款授权。可在 [LICENSE](./LICENSE) 找到。 ## 致谢 本项目的创建和/或升级得益于以下组织和倡议:

Centre for Strategic Infocomm Technologies

CSIT logo

The Digital and Intelligence Service

DIS logo AETHER 的实现得益于数字与情报服务 (DIS) 国防网络司令部 (DCCOM) 下属网络专家的奉献。 ## 来源 - IDA Pro MCP - https://github.com/mrexodia/ida-pro-mcp/tree/main - 插件针对 [`Qwen: Qwen3 Next 80B A3B Instruct`](https://openrouter.ai/qwen/qwen3-next-80b-a3b-instruct) 进行了优化 - 感谢所有提供反馈和注释 IDA 文件的人 **最后更新**: 02/03/2026 **版本**: 2026.1
标签:AETHER, AMSI绕过, Copilot, DAST, DLL 劫持, Hex-Rays, IDA Pro 插件, LLM 应用, MCP 协议, Petitpotam, Python, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 人工智能, 代码注释, 函数识别, 变量重命名, 大语言模型, 威胁检测, 恶意软件分析, 情报收集, 无后门, 漏洞研究, 用户模式Hook绕过, 网空安全, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 静态分析