IDA-pro-mcp 的核心功能 常用的prompt

发布于:2025-08-31 ⋅ 阅读:(39) ⋅ 点赞:(0)


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 的调试接口跑脚本验证。


网站公告

今日签到

点亮在社区的每一天
去签到