IDA-pro-mcp 的核心功能 常用的prompt
IDA-pro-mcp 是一个基于 MCP(Model Context Protocol)的服务器,把 IDA Pro 的底层能力包装成 AI 可直接调用的 JSON-RPC 接口,实现“AI 驱动的逆向工程”。主要功能可分为 8 类:
1. 连接与状态
• check_connection() – 检测 IDA 插件/服务器是否在线。
2. 元数据与导航
• get_metadata()、get_current_address()、get_entry_points() – 查看当前 IDB 的基址、架构、入口点等。
3. 函数操作
• get_function_by_name / by_address、list_functions – 读取函数列表或单个函数信息。
• decompile_function、disassemble_function – 输出 C 伪代码或汇编指令。
• rename_function、set_function_prototype – 重命名及修改函数签名。
4. 变量/类型管理
• rename_local_variable、rename_global_variable、set_*_variable_type – 一键改名与类型修复。
• declare_c_type – 通过 C 声明创建结构体、枚举等局部类型。
5. 字符串与全局数据
• list_strings、list_globals – 枚举所有字符串或全局变量,可加分页与过滤。
6. 交叉引用
• get_xrefs_to(address) – 查看谁引用了某地址/函数/变量,快速定位调用链。
7. 注释与标注
• set_comment – 在指定地址插入注释,反汇编与伪代码同步显示。
8. 调试器(需 --unsafe 启动)
• dbg_* 系列:下断点、取寄存器、查看调用栈、单步运行等,方便动态验证。
常用提示词模板(可直接投喂给 Claude / Cline / Roo Code 等 MCP 客户端)
下面给出 4 组高频场景提示词,复制后按需替换“程序名”“函数名”即可使用。
1. 自动化注释 + 重命名
```
你是一位 IDA 专家,目标是在最短时间内提升可读性。
步骤:
1. 用 list_functions 获取所有函数;
2. 对每个未知函数,先用 decompile_function 查看伪代码;
3. 根据语义把 sub_xxxx 重命名为有意义的名字(如 validate_license);
4. 为关键变量/参数 rename_local_variable,并 set_comment 描述用途;
5. 完成后输出 report.md,列出“函数新名->旧名”映射。
```
2. CrackMe 密码逆向
```
任务:分析当前加载的 crackme.exe,找出正确密码。
约束:
- 只能用 ida-pro-mcp 工具;禁止暴力破解。
- 遇到加密/哈希,用交叉引用定位关键函数,再 decompile_function。
- 发现密码后,用 set_comment 在验证函数处标注答案,并回复用户“密码是:xxx”。
```
3. 混淆检测与算法识别(增强版)
```
请执行:
1. 检查是否存在控制流平坦化、字符串加密、反调试 API;
2. 用 list_strings 与 get_xrefs_to 交叉验证可疑常量;
3. 对疑似加密函数,尝试识别算法(如 AES、RC4、TEA);
4. 输出 report.md:
- 混淆类型 + 位置
- 识别到的算法 + 置信度
- 流程图(mermaid 语法)
```
4. 批量类型修复(结构体恢复)
```
背景:固件中存在大量裸指针。
步骤:
1. 用 list_globals 找出所有未声明类型的全局数组;
2. 根据上下文推断结构体布局,用 declare_c_type 创建新类型;
3. 将对应全局变量 set_global_variable_type 为新结构体指针;
4. 对引用这些结构体的函数,同步 set_function_prototype;
5. 完成后输出“结构体声明”与“已修正的变量列表”。
```
使用小贴士
• 调试功能需命令行加 --unsafe 才能启用。
• 当 AI 出现“幻觉”数值时,强制使用 convert_number(text, size) 统一进制。
• 复杂计算(如解密常数)可让 AI 生成 Python 片段,再用 MCP 的调试接口跑脚本验证。