|
ret-sync:IDA Pro 与 x64dbg 实时同步调试插件 [IDA 9.x 适配版]一、插件介绍 ret-sync(Reverse Engineering Tools Synchronization)是一款用于 IDA Pro 与调试器实时同步的开源工具。通过本插件,你可以在 x64dbg 动态调试时,IDA Pro 自动定位到对应代码位置,实现静态分析与动态调试的无缝衔接。 主要特性: ✅ 实时地址同步:调试器单步执行,IDA 自动跳转 ✅ 断点双向同步:IDA 设置断点,调试器自动生效 ✅ 反编译联动:伪代码窗口与汇编指令对应 ✅ 快捷键操作:F2/F7/F8 等快捷键直接控制 适用场景: 恶意代码分析 漏洞挖掘与利用 软件逆向工程 协议逆向分析
二、版本信息组件 版本要求
IDA Pro9.0 / 9.1 / 9.2 / 9.3
Python3.10 / 3.11 / 3.12 / 3.13
x64dbg最新稳定版特别说明: 三、安装配置3.1 安装 Python3.2 设置环境变量图形界面设置: setx PYTHON_PATH "C:\Python313\python.exe"验证设置: echo %PYTHON_PATH%3.3 部署 IDA 插件将附件中的以下文件复制到 IDA 插件目录: 目标目录:IDA安装路径\plugins\
​
复制内容:
├── SyncPlugin.py
└── retsync\
├── __init__.py
├── broker.py
├── dispatcher.py
├── rsconfig.py
├── syncrays.py
└── ...(其他文件)3.4 部署 x64dbg 插件将附件中的插件文件复制到 x64dbg: 32位插件:sync.dp32 → x64dbg\release\x32\plugins\
64位插件:sync.dp64 → x64dbg\release\x64\plugins\四、使用指南4.1 启动同步IDA 端: 4.2 调试操作连接成功后: 4.3 快捷键列表快捷键 功能说明
F2设置/取消软件断点
F3设置一次性断点
F10单步步过(Step Over)
F11单步步入(Step Into)
Ctrl+F1导出当前断点列表
Ctrl+F2设置硬件断点
Ctrl+F3设置一次性硬件断点
Alt+F2地址转换
Alt+F5运行到当前光标位置
Ctrl+Alt+F5运行程序五、常见问题解答Q1:插件加载失败,提示 "AttributeError: 'SyncForm_t' object has no attribute 'broker'"原因:环境变量未正确设置 解决: 确认 PYTHON_PATH 环境变量已设置 重启 IDA 使环境变量生效 检查 Python 路径是否正确
Q2:x64dbg 连接后立即断开原因:编码问题或端口占用 解决: 查看日志文件: type %TEMP%\retsync.broker.log检查文件名是否包含中文或特殊字符 检查端口 9100 是否被占用: netstat -ano | findstr "9100"
Q3:同步地址不正确原因:基地址不匹配(ASLR) 解决: Q4:中文文件名显示乱码原因:编码转换问题 解决: 本版本已支持 GBK 编码自动识别 如仍有问题,建议将文件重命名为纯英文
Q5:提示 "dispatcher not found"原因:dispatcher 启动失败 解决: 检查 Python 环境是否完整 查看错误日志: type %TEMP%\retsync.dispatcher.err
六、技术实现本插件采用三层架构: ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ IDA │────▶│ Broker │◀────│ x64dbg │
│ (Plugin) │ │ (Dispatcher)│ │ (Plugin) │
└─────────────┘ └─────────────┘ └─────────────┘IDA Plugin:Python 插件,处理 IDA 端的同步请求 Broker:Python 进程,负责消息转发和调度 Dispatcher:Python 进程,管理多个客户端连接 x64dbg Plugin:C++ 插件,处理调试器端的消息 通信协议:基于 TCP 的自定义 JSON 协议
七、修复内容相比原版,本版本修复了以下问题: 问题 原因 解决方案
Qt 枚举类型错误PySide6 枚举不是整数使用 .value 获取整数值
QProcess 启动失败API 签名变更统一使用 start(program, args)
UTF-8 解码错误GBK 编码不支持添加多编码解码支持
环境变量丢失子进程未继承显式传递 os.environ.copy()
Python 3.13 兼容distutils 移除使用 shutil.which详细修复过程见附件中的 ret-sync 修复记录.md。 八、致谢与声明致谢:
如果本插件对你有帮助,请回复支持!问题反馈请附上日志文件内容。
|