3.5 KiB
3.5 KiB
IDA Pro 准备指引
IDA Pro 是商业软件,不随本包分发。 你需要自备授权,或使用免费替代方案。
方案 A:已有 IDA Pro 授权(推荐,功能最全)
支持版本
IDA Pro 8.4+ / 9.x(含 Hex-Rays 反编译器)
安装后需要做的
-
确认 Python 运行时存在(IDA 自带):
<IDA安装目录>\python311\python.exe -
安装 ida-pro-mcp 到 IDA 的 Python:
& "<IDA安装目录>\python311\python.exe" -m pip install ida-pro-mcp -
运行
install.ps1—— 它会自动探测 IDA 路径并写入mcp.json。 若探测失败,手工填~/.pi/agent/mcp.json:"ida": { "command": "<IDA安装目录>\\python311\\python.exe", "args": ["<IDA安装目录>\\python311\\Lib\\site-packages\\ida_pro_mcp\\server.py"], "transport": "stdio", "lifecycle": "eager", "requestTimeoutMs": 180000 } -
使用方式:在 pi 里说「用 IDA 分析这个文件」,
ida-reverseSkill 会自动唤醒 IDA 并挂载 MCP (轮询http://127.0.0.1:13337就绪)。
购买渠道
- 官方:https://hex-rays.com/ida-pro
- 免费版 IDA Free(无 Hex-Rays 反编译):https://hex-rays.com/ida-free
方案 B:免费替代(无 IDA 授权时)
核心结论:seep MCP 的 8 个 Radare2 工具已覆盖大部分场景,无需 IDA 也能干活。
| 能力 | IDA MCP | 免费替代 |
|---|---|---|
| 快速侦察(架构/壳/熵/字符串) | — | ✅ seep_r2_info / seep_r2_strings |
| 反汇编(含交叉引用) | ✅ | ✅ seep_r2_disasm |
| 反编译为类 C 伪代码 | ✅ Hex-Rays | ✅ seep_r2_decompile |
| 二进制差分 | — | ✅ seep_r2_diff |
| 汇编 ↔ 机器码 | — | ✅ seep_r2_asm |
| 函数表 / 导入导出 | ✅ | ✅ seep_r2_functions |
| 结构体恢复 | ✅ | ⚠️ Ghidra |
| 类型推断 | ✅ | ⚠️ Ghidra |
推荐组合
基础层:seep MCP(r2 八件套) ← 脚本自动装,开箱可用
增强层:Ghidra(免费,含反编译) ← 需要时下载
可选层:IDA Free(无反编译) ← 需要 GUI 时
Ghidra 安装
# 需先装 JDK 17+
winget install EclipseAdoptium.Temurin.17.JDK
# 下载 Ghidra
# https://github.com/NationalSecurityAgency/ghidra/releases
Tool/kb/tools/skills/mcp/GhidraMCP/提供了 Ghidra 桥接 MCP,可按需注册。
方案 C:只用 Radare2(最轻量)
完全跳过 IDA,只依赖 seep MCP:
# install.ps1 已自动装 radare2 到 tools/radare2/
# 直接用这些工具:
# seep_r2_info / _strings / _functions / _disasm / _decompile / _diff / _asm
对以下任务足够:
- 壳检测与熵分析
- 字符串与端点提取
- 授权判定点定位
- 补丁点确认(配合
seep_r2_asm验字节) - Android SO 分析
不足:
- 复杂 C++ 逆向的类型恢复
- 大规模交叉引用图谱
- 大型二进制的交互式分析
三种方案对比
| 方案 A(IDA Pro) | 方案 B(免费组合) | 方案 C(仅 r2) | |
|---|---|---|---|
| 成本 | 商业授权 | 免费 | 免费 |
| 反编译 | ✅ Hex-Rays(最强) | ⚠️ Ghidra(次之) | ⚠️ r2 伪代码 |
| 结构体恢复 | ✅ | ⚠️ 部分 | ❌ |
| 上手成本 | 低(自动联动) | 中 | 最低 |
| 覆盖场景 | 全部 | 90% | 70% |
建议:先用方案 C 跑通流程,遇到真正需要深度反编译的目标再上方案 A。