ret-sync 逆向工程工具同步插件修复版
ret-sync:IDA Pro 与 x64dbg 实时同步调试插件 一、插件介绍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最新稳定版
特别说明:
[*]原版 ret-sync 仅支持 IDA 7.x(Qt 5 + PyQt5)
[*]本版本针对 IDA 9.x(Qt 6 + PySide6)进行了完整适配
[*]已解决 Qt 枚举兼容、编码乱码、环境变量等问题
三、安装配置3.1 安装 Python
[*]下载 Python 3.13:https://www.python.org/downloads/release/python-3130/
[*]选择 "Windows installer (64-bit)"
[*]安装选项:
[*]✅ Add Python to PATH
[*]✅ Install pip
[*]推荐安装路径:C:\Python313
3.2 设置环境变量图形界面设置:
[*]Win+R → 输入 sysdm.cpl → 回车
[*]高级 → 环境变量 → 用户变量 → 新建
[*]变量名:PYTHON_PATH
[*]变量值:C:\Python313\python.exe命令行设置:
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 端:
[*]打开目标程序,保存为 .idb 文件(必须保存!)
[*]加载插件:Edit → Plugins → ret sync
[*]或使用快捷键:Alt + Shift + S
[*]在插件窗口中勾选 Enable sync
[*]确认输出窗口显示: broker started
dispatcher now running with pid: xxxxx
connected to dispatcherx64dbg 端:
[*]打开同一个目标程序
[*]在命令栏输入:!sync
[*]确认显示: sync is now enabled with host 127.0.0.1
4.2 调试操作连接成功后:
[*]x64dbg 单步(F7/F8):IDA 自动跳转到对应地址
[*]IDA 按 F2:在当前位置设置断点,x64dbg 同步
[*]IDA 反编译窗口:实时显示当前函数的伪代码
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)解决:
[*]在 IDA 中查看基地址:View → Open subviews → Segments
[*]在 x64dbg 中查看基地址:Memory Map 窗口
[*]如果不一致,在 IDA 中重定位:
[*]Edit → Segments → Rebase program
[*]输入 x64dbg 中的实际基地址
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。八、致谢与声明致谢:
[*]原作者:Alexandre Gazet (@aegistools)
[*]原团队:Quarkslab
[*]项目地址:https://github.com/AntoninLebr/ret-sync版权:
[*]本插件基于 ret-sync 修改
[*]遵循 GNU General Public License v3.0 开源协议
[*]修改部分同样遵循 GPL v3声明:
[*]本工具仅供安全研究和学习使用
[*]请勿用于非法用途
[*]使用者需自行承担风险
如果本插件对你有帮助,请回复支持!问题反馈请附上日志文件内容。
感谢楼主分享好资源 PYG有你更精彩! 谢谢分享 感谢分享
页:
[1]