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

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.dtcms.com/a/356475.html

相关文章:

  • Mybatis的常用标签
  • word去空格去空行_word辅助工具 word批量处理
  • 【C++】类与对象(上)
  • Matlab实现基于CPO-QRCNN-BiGRU-Attention注意力多变量时间序列区间预测
  • FPGA实现1553B BC控制器IP方案
  • 【AOSP】Android Dump 开发与调试指南
  • Replay – AI音乐伴奏分离工具,自动分析音频内容、提取主唱、人声和伴奏等音轨
  • 栈和队列OJ习题
  • 【物联网】关于 GATT (Generic Attribute Profile)基本概念与三种操作(Read / Write / Notify)的理解
  • 如何在mysql中执行创建数据库的脚本文件?
  • Spring Boot 使用 RestTemplate 调用 HTTPS 接口时报错:PKIX path building failed 解决方案
  • Linux下的网络编程SQLITE3详解
  • 神经语言学视角:脑科学与NLP深层分析技术的交叉融合
  • Java的CAS机制:无锁并发控制及其高频面试题
  • OpenCSG月度更新2025.8
  • 1 分钟 Maya 动画渲染要多久?5 天还是 5 小时
  • 基于Java、GeoTools与PostGIS的GeoJSON动态属性注入实战指南
  • 在 Go 项目的 DDD 分层架构中,Echo Web 框架及其 middleware 应该归属到哪一层?
  • mysql安全运维之安全模型与原则-构建坚不可摧的数据库防护体系
  • 自然语言提取PDF表格数据
  • 电影交流|基于SprinBoot+vue的电影交流平台小程序系统(源码+数据库+文档)
  • 在基于 Go 的 DDD 分层架构中,包含多个server的项目目录结构应如何组织?
  • LoraConfig target modules加入embed_tokens(64)
  • 设计模式-行为型模式-命令模式
  • Spring 微服务架构下的单元测试优化实践:从本地连接到真实开发数据库的集成测试
  • Qt节点编辑器设计与实现:动态编辑与任务流可视化(一)
  • WebStorm-在WebStorm中使用Git管理项目
  • 【WPF】WPF 自定义控件实战:从零打造一个可复用的 StatusIconTextButton (含避坑指南)
  • 循环高级(2)
  • 面试八股文之——JVM与并发编程/多线程