当前位置: 首页 > ops >正文

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

http://www.xdnf.cn/news/19009.html

相关文章:

  • 【机器学习入门】3.1 关联分析——从“购物篮”到推荐系统的核心逻辑
  • 【CanRun】Python终端[颜色文字]输出
  • 代理IP服务器平台推荐,企业级动态住宅IP资源哪里找?
  • 每周AI看 | 微软开源VibeVoice-1.5B、OpenAI历史性交棒、网易云商出席AICon全球人工智能开发与应用大会
  • windows下安装kafka
  • LoRA三种不同训练流程在配置和保存权重的差异(64)
  • Ubuntu 服务器 KERNEL PANIC 修复实录
  • 开源vs商用美颜sdk:美白滤镜功能在直播中的优劣对比
  • gdb打印长字符产变量信息
  • CST混合求解任务的场路联合仿真(下)
  • ACID分别如何实现
  • 【C/C++】柔性数组
  • 科学融智学引领人机协同教育新范式
  • C# 生成器模式(一个投资跟踪程序)
  • 高效接入:Suno API 与主流编程语言的结合
  • html入门教程
  • Matlab函数转C语言供Keil使用
  • 【论文阅读】Sparse4D v2:Recurrent Temporal Fusion with Sparse Model
  • PDF,HTML,md格式文件在线查看工具
  • TensorFlow 深度学习 | 使用子类 API 实现 Wide Deep 模型
  • 动态规划01背包
  • 当不想安装telnet或nc时,可使用 Linux 系统默认自带的bash原生网络功能或ping(辅助判断)测试连通性
  • 法律审查prompt收集
  • java19学习笔记
  • 【机器学习入门】3.2 ALS算法——从评分矩阵到精准推荐的核心技术
  • Java泛型使用常见报错
  • hive udf函数实现在sql查询网站价格
  • 网站加载慢,linux服务器接口请求响应变慢,怎么排查,一般是什么原因
  • 工业相机的类型及不同类型的应用
  • 一文说清楚ABAP中的‘显示提交(Explicit Commit)’和‘隐式提交(Implicit Commit)’