大型模型驱动的IDAPro智能自动化逆向工程单文件MCP服务器
交流与学习:添加微信:r0ysue(注意:加入MCP学习群)
该项目的优势包括:
正常安装并使用IDA pro,运行idapyswitch以指定Python路径。
使用相同路径的Python安装pip,并通过pip安装fastmcp。
pip install fastmcp
| Windows | %appdata%\Hex-Rays\IDA Pro\plugins |
|---|---|
| Linux | ~/.idapro/plugins/ |
| macOS | ~/Library/Application Support/IDA Pro/plugins/ |
安装完成!
>>>r0mcp插件已加载,使用Edit->Plugins->r0mcp启动SSE服务器
>>> 调用了r0mcp.run(),服务器启动
INFO: 启动了服务器进程[6804]
INFO: 等待应用程序启动。
INFO: 应用程序启动完成。
INFO: Uvicorn正在运行于http://0.0.0.0:26868(按CTRL+C退出)
如果提示访问局域网设备,请同时允许局域网连接;防火墙允许26868通过或关闭。如果IDA和大模型助手在同一台计算机上运行,也可以将源代码中的0.0.0.0改为127.0.0.1以实现纯本地连接。
{
"mcpServers": {
"r0idamcp": {
"url": "http://192.168.1.2:26868/sse",
"type": "sse"
}
}
}
192.168.1.2是运行IDA pro的计算机IP地址
如果使用GUI界面配置,应选择添加上述相同的URL的SSE服务器。在成功配置后检查连接状态时,如果在IDA下方的Python窗口中出现以下日志,表示连接成功:
INFO: 192.168.1.3:62966 - "GET /sse HTTP/1.1" 200 OK
现在可以开始大规模模型驱动的自动化逆向工程了!
check_connection确认其是否运行get_metadata(): 获取IDB的元数据get_function_by_name(name)根据名称获取函数get_function_by_address(address)根据地址获取函数get_current_address(): 获取当前选中的地址get_current_function(): 获取当前选中的地址的函数convert_number(text, size): 十进制和十六进制之间的转换list_functions(offset, count)分页列出IDB中的所有函数list_strings(offset, count)分页列出IDB中的所有字符串search_strings(pattern, offset, count): 搜索字符串decompile_function(address)将指定地址的函数反编译为伪代码disassemble_function(start_address)将指定地址的函数反编译为机器码get_xrefs_to(address)列出指定地址的引用位置get_entry_points()列出数据库中的所有入口点set_comment(address, comment)为指定地址添加注释rename_local_variable(function_address, old_name, new_name)重命名函数内的局部变量set_local_variable_type(function_address, variable_name, new_type): 指定局部变量类型rename_global_variable(old_name, new_name): 全局变量重命名set_global_variable_type(variable_name, new_type): 指定全局变量类型rename_function(function_address, new_name): 函数重命名set_function_prototype(function_address, prototype): 指定函数原型declare_c_type(c_declaration)基于C的声明创建或更新局部变量类型为了达到最准确的执行效果,提示语应尽可能使用我的中文翻译(或功能名称),以提高命中率。
快去玩吧,孩子们!如果有任何疑问,请随时在群里提供反馈!我们将根据反馈进行修复或更新功能~