你是否曾经面对一个复杂的二进制文件,希望AI能帮你分析反编译代码、重命名变量、添加注释,甚至自动化整个逆向工程流程?今天要介绍的开源项目IDA自动化反编译工具,正是为了实现这个目标而设计的。它是由资深逆向工程专家mrexodia开发的IDA Pro MCP服务器,让AI能够通过MCP协议与IDA Pro深度集成,实现逆向工程的自动化。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | IDA自动化反编译工具 |
| GitHub地址 | https://github.com/mrexodia/ida-pro-mcp |
| 项目描述 | IDA Pro MCP 服务器,专注自动化逆向工程。借助它,可高效处理逆向任务,简化复杂流程,以自动化方式提升逆向工程效率,为相关工作提供有力支持。 |
| 作者 | mrexodia |
| 开源协议 | MIT License |
| 开源状态 | 公开状态 |
| Languages | Python |
| 支持平台 | Windows / macOS / Linux |
| 最后更新 | 2026-04-23 |
一、项目介绍
IDA自动化反编译工具是一个为IDA Pro逆向工程软件设计的MCP服务器。它让AI能够直接与IDA Pro交互,执行各种逆向工程任务,包括:
- 获取函数信息(按名称或地址)
- 反编译函数
- 反汇编函数
- 获取交叉引用
- 设置注释
- 重命名局部变量和全局变量
- 更改变量和函数类型
- 修改函数原型
- 声明C类型
- 调试器控制(不安全函数)
这个项目的核心理念是“vibe逆向工程”——让AI与逆向工程师协作,AI负责繁琐的分析和记录工作,人类专注于策略性的决策。
二、核心优势
功能全面
提供了30+个工具函数,覆盖了逆向工程的核心需求:
- 函数操作(获取、重命名、修改原型)
- 反编译和反汇编
- 变量操作(重命名、修改类型)
- 交叉引用分析
- 注释管理
- 调试器控制
安装自动化
通过pip install和ida-pro-mcp --install两个命令,即可完成MCP服务器安装和IDA插件安装,无需手动配置。
SSE传输支持
支持SSE(Server-Sent Events)传输,可以运行独立的SSE服务器,远程连接到IDA用户界面。
无头模式支持
支持无头SSE服务器,可以在没有GUI的情况下运行IDA分析。
简单扩展
添加新功能非常容易:只需在mcp-plugin.py中添加一个新的@jsonrpc函数,即可在MCP服务器中使用。
提示工程指导
项目提供了专门的提示工程策略,帮助用户更好地与LLM协作进行逆向工程。
三、适用场景
恶意软件分析
AI可以自动分析恶意样本的反编译代码,识别关键函数,添加注释,加速分析过程。
CTF逆向挑战
在CTF比赛中,AI可以协助分析二进制文件,识别算法,找到flag。
漏洞研究
AI可以帮助分析目标程序的代码,识别潜在的漏洞点,生成分析报告。
遗留代码理解
对于没有源代码的遗留二进制文件,AI可以辅助进行逆向工程,理解程序逻辑。
四、安装教程
系统要求
| 工具 | 用途 | 下载/安装方式 |
|---|---|---|
| Python | 运行环境 | [https://python.org/] (版本要求:3.11 或更高) |
| IDA Pro | 逆向工程软件 | [https://hex-rays.com/ida-pro/] (版本要求:8.3 或更高,推荐9) |
| uv | Python包管理工具 | pip install uv 或官方脚本 |
| MCP客户端 | 如Cline、Roo Code、Claude Desktop等 | 根据客户端官网下载 |
详细安装步骤
第一步:安装IDA Pro MCP包
pip install --upgrade git+https://github.com/mrexodia/ida-pro-mcp第二步:配置MCP服务器并安装IDA插件
ida-pro-mcp --install这一步会自动:
- 安装MCP服务器配置
- 将IDA插件复制到IDA的插件目录
第三步:重启相关应用
重要:完全重启IDA Pro和MCP客户端(如Visual Studio Code、Claude Desktop)。Claude Desktop通常在后台运行,需要从系统托盘图标退出。
第四步:验证安装
在IDA Pro中打开一个IDB文件,应该能在Edit -> Plugins中看到MCP插件。
在MCP客户端中,尝试调用check_connection工具验证连接。
手动安装(可选)
如果自动安装失败,可以手动安装:
MCP服务器手动安装:
在cline_mcp_settings.json中添加:
{
"mcpServers": {
"github.com/mrexodia/ida-pro-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/ida-pro-mcp",
"run",
"server.py",
"--install-plugin"
],
"timeout": 1800,
"disabled": false
}
}
}IDA插件手动安装:
复制src/ida_pro_mcp/mcp-plugin.py到IDA插件目录:
- Windows:
%appdata%\Hex-Rays\IDA Pro\plugins - macOS/Linux:
~/.idapro/plugins
SSE传输配置(可选)
运行SSE服务器连接到IDA用户界面:
uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse运行无头SSE服务器(无需IDA GUI):
uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable五、使用示例
配置完成后,你就可以在MCP客户端中使用自然语言来调用IDA Pro的功能了。
示例1:检查连接和获取元数据
用户指令:“检查IDA Pro插件是否正在运行,并获取当前数据库的元数据”
AI会依次调用check_connection和get_metadata。
示例2:分析特定函数
用户指令:“反编译main函数,分析它的逻辑,并添加注释”
AI会:
- 调用
get_function_by_name获取main函数 - 调用
decompile_function获取反编译代码 - 分析代码逻辑
- 调用
set_comment添加分析注释
示例3:重命名变量和函数
用户指令:“将sub_401000函数重命名为validate_password,并将其中的局部变量v3重命名为password_length”
AI会调用:
rename_function重命名函数rename_local_variable重命名局部变量
示例4:交叉引用分析
用户指令:“找出所有调用printf函数的地方”
AI会调用get_xrefs_to,传入printf的地址,获取所有交叉引用。
示例5:调试器控制(不安全函数,需要--unsafe标志)
用户指令:“在0x401000处设置断点,启动调试器,运行到该断点,然后获取调用栈”
AI会依次调用:
dbg_set_breakpointdbg_start_processdbg_run_todbg_get_call_stack
示例6:使用convert_number避免幻觉
LLM容易在数字进制转换上出错。正确的做法是:
用户指令:“使用convert_number工具将0x7FFF转换为十进制”
而不是让LLM自己计算。
六、常见问题
问题1:安装后IDA Pro中看不到MCP插件
解决方案:
- 确认插件文件已复制到正确的plugins目录
- 完全重启IDA Pro
- 检查Python版本是否与IDA Pro兼容(使用idapyswitch切换)
问题2:MCP客户端无法连接到IDA插件
解决方案:
- 确认IDA Pro中已打开一个IDB文件
- 在IDA Pro中手动启动MCP插件:Edit -> Plugins -> MCP
- 检查防火墙是否阻止了本地通信
问题3:反编译结果不完整
解决方案:
- 某些混淆代码会影响反编译质量
- 建议先使用Lumina或FLIRT工具解析库代码
- 手动清理字符串加密、控制流扁平化等混淆
问题4:不安全函数无法使用
解决方案:不安全函数(调试器相关)需要添加--unsafe标志。在MCP配置中添加该参数。
问题5:数字转换错误
解决方案:LLM在数字进制转换上容易出错。严格按照提示工程策略,使用convert_number工具进行所有数字基数转换。
七、总结
IDA自动化反编译工具是逆向工程领域第一个专门为LLM设计的MCP服务器。它将IDA Pro的强大能力通过MCP协议开放给AI,实现了“vibe逆向工程”——AI与人类逆向工程师协作的新模式。
这个项目的最大价值在于:
- 自动化:AI可以自动执行繁琐的分析和记录工作
- 全面性:覆盖了逆向工程的核心功能(反编译、反汇编、交叉引用、调试等)
- 易扩展:添加新功能非常简单,只需添加一个
@jsonrpc函数 - 提示工程:提供了专门的策略指导,帮助用户更好地与LLM协作
- 多种传输:支持stdio、SSE、无头模式,适应不同场景
如果你是逆向工程师、安全研究员,或者经常需要分析二进制文件,IDA自动化反编译工具将极大地提升你的工作效率。 让AI帮你处理繁琐的代码分析,你只需专注于策略性的决策。
数字转换是LLM的弱点,convert_number是必需品。
配合math-mcp使用,可以处理更复杂的计算。
我用它来分析恶意软件,AI帮我识别了关键API调用。
希望未来能支持批量分析多个二进制文件。
无头模式加上批量处理,可以做大规模分析。