Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ret-sync — ret-sync 是一组插件,用于将调试会话(WinDbg/GDB/LLDB/OllyDbg2/x64dbg)与 IDA/Ghidra/Binary Ninja 反汇编器同步。 | Kitploit
工具/GitHubGitHub/bootleg/ret-sync
动态分析 (沙盒)逆向工程调试器实用工具与框架二进制分析
GitHubbootleg/ret-sync

ret-sync

ret-sync 是一组插件,用于将调试会话(WinDbg/GDB/LLDB/OllyDbg2/x64dbg)与 IDA/Ghidra/Binary Ninja 反汇编器同步。

查看仓库
2.4k307448个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ret-sync

ret-sync 代表逆向工程工具同步(Reverse-Engineering Tools SYNChronization)。它是一组插件,用于将调试会话(WinDbg/GDB/LLDB/OllyDbg/OllyDbg2/x64dbg)与反汇编器(IDA/Ghidra/Binary Ninja)同步。其核心理念很简单:从静态分析和动态分析两个世界中各取所长。

调试器和动态分析为我们提供:

  • 局部视图,具有实时动态上下文(寄存器、内存等)
  • 内置的特殊功能/API(例如:WinDbg 的 !peb、!drvobj、!address 等)

反汇编器和静态分析为我们提供:

  • 模块的宏观视图
  • 代码分析、签名、类型等
  • 精美的图形视图
  • 反编译
  • IDB/GPR 中知识的持久化存储

主要功能:

  • 将图形和反编译视图与调试器状态同步
  • 无需处理 ASLR,地址会自动重定基址
  • 将数据(注释、命令输出)从调试器传递到反汇编器
  • 可同时同步多个 IDB/GPR,便于轻松跟踪多个模块
  • 反汇编器和调试器可位于不同主机/虚拟机上

ret-sync 是 qb-sync 的一个分支,我在 Quarkslab 工作期间开发并维护它。


目录

  • 仓库内容
  • 通用先决条件
  • 二进制发布
  • ret-sync 配置
  • 安装
    • IDA 扩展
    • Ghidra 扩展
    • Binary Ninja 扩展
    • WinDbg 扩展
    • GNU gdb (GDB) 安装
    • LLDB 安装
    • OllyDbg 1.10 安装
    • OllyDbg2 安装
    • x64dbg 安装
  • 用法
    • ret-sync 调试器命令
    • IDA 用法
    • Ghidra 用法
    • Binary Ninja 用法
    • WinDbg 用法
    • GNU gdb (GDB) 用法
    • LLDB 用法
    • OllyDbg 1.10 用法
    • OllyDbg2 用法
    • x64dbg 用法
    • Python 库用法
  • 扩展
  • 待办事项
  • 已知 Bug/限制
  • 许可证
  • 致谢

仓库内容

调试器插件:

  • ext_windbg/sync:WinDbg 扩展源文件,构建后为:sync.dll
  • ext_gdb/sync.py:GDB 插件
  • ext_lldb/sync.py:LLDB 插件
  • ext_olly1:OllyDbg 1.10 插件
  • ext_olly2:OllyDbg v2 插件
  • ext_x64dbg:x64dbg 插件

反汇编器插件:

  • ext_ida/SyncPlugin.py
  • ext_ghidra/dist/ghidra_*_retsync.zip:Ghidra 插件
  • ext_bn/retsync:Binary Ninja 插件

以及库插件:

  • ext_lib/sync.py:独立的 Python 库

通用先决条件

IDA 和 GDB 插件需要有效的 Python 环境。支持 Python 2(>=2.7)和 Python 3。

二进制发布

WinDbg/OllyDbg/OllyDbg2/x64dbg 调试器的预构建二进制文件通过 Azure DevOps 流水线提供:构建状态

选择最新构建,并查看 Related 部分下的构件:6 published。

Ghidra 插件的预构建插件存档位于 ext_ghidra/dist 中。

ret-sync 配置

对于大多数典型设置的用户(调试器和反汇编器位于同一主机,模块名称匹配),ret-sync 应该开箱即用。

尽管如此,在某些情况下可能需要特定配置。为此,扩展和插件会检查用户主目录中一个可选的全局配置文件,名为 .sync。它必须是有效的 .INI 文件。

此外,IDA 和 Ghidra 插件还会先在 IDB 或项目目录(<project>.rep)中查找配置文件,以允许每个 IDB/项目级别的本地设置。如果存在本地配置文件,则忽略全局配置文件。

这些配置文件中声明的值会覆盖默认值。请注意,默认情况下不会创建 .sync 文件。

下面我们详细介绍了三种常见需要配置文件的场景:

  • 远程调试
  • 模块名称不匹配
  • 缺少 PID

远程调试:调试器和反汇编器位于不同主机

[INTERFACE] 部分用于自定义网络相关设置。假设有人想要将 IDA 与虚拟机(或另一台主机)中运行的调试器同步,这是常见的远程内核调试场景。

只需创建两个 .sync 文件:

  • 一个放在安装了 IDA 的机器上的 IDB 目录中:
  • 对于 Ghidra,放在主目录中,例如 "/home/user" 或 "C:\Users\user"。``` [INTERFACE] host=192.168.128.1 port=9234
它告诉 **ret-sync** ``IDA`` 插件在接口 ``192.168.128.1`` 上监听,端口为 ``9234``。显而易见,此接口必须能够从远程主机或虚拟机访问。

* 在调试器执行所在的机器上,位于用户主目录中:```
[INTERFACE]
host=192.168.128.1
port=9234

它告知 ret-sync 调试器插件连接到先前配置为监听此接口的 ret-sync IDA 插件。

注意: 必须在此处指定真实 IP,不能使用 0.0.0.0。这是因为该变量被多个来源同时用于绑定和连接,因此使用 0.0.0.0 会导致奇怪的错误。

IDB 和调试器模块名称不同```

[ALIASES] ntoskrnl_vuln.exe=ntkrnlmp.exe

``[ALIASES]`` 部分用于自定义反汇编器(IDA/Ghidra)用于向调度器/程序管理器注册模块的名称。

默认情况下,反汇编器插件使用输入文件的名称。但用户可能事先重命名了文件,导致其不再匹配调试器所见的实际进程或加载模块的名称。

这里我们简单地告诉调度器匹配名称 `ntkrnlmp.exe`(真实名称)而不是 `ntoskrnl_vuln.exe`(IDB 名称)。

## 使用 Qt Creator 调试前端的 gdb

Qt Creator 调试前端改变了 gdb 命令输出的记录方式。由于这会干扰同步,提供了一个选项,可以使用原始 gdb 输出进行同步,而不是临时文件。在 .sync 配置文件中使用```
[GENERAL]
use_tmp_logging_file=false

如果您希望为目标使用Qt调试前端。

嵌入式设备与缺失的 /proc/<pid>/maps

在某些场景中,例如通过串口调试嵌入式设备或QEMU中的原始固件时,gdb无法感知PID,因此无法访问 /proc/<pid>/maps。

在这些情况下,使用 [INIT] 部分向插件传递自定义上下文。它允许覆盖某些字段,例如PID和内存映射。

.sync 内容提取:``` [INIT] context = { "pid": 200, "mappings": [ [0x400000, 0x7A81158, 0x7681158, "asav941-200.qcow2|lina"] ] }

映射中的每个条目是:``mem_base``, ``mem_end``, ``mem_size``, ``mem_name``。


## 绕过自动地址重定位

在某些场景中,例如调试嵌入式设备或连接到极简调试接口时,绕过反汇编器插件中实现的自动地址重定位功能可能更为方便。

`use_raw_addr` 选项目前仅支持 Ghidra。在 .sync 配置文件中使用:```
[GENERAL]
use_raw_addr=true

安装

IDA 扩展

IDA 前提条件

需要 IDA 9.2 或更高版本。对于旧版本,请从可用的 Tags 中检出 ida9.2 标签之前的项目。

安装 IDA 扩展

对于 IDA 安装,将 Syncplugin.py 和 retsync 文件夹从 ext_ida 复制到 IDA 插件目录,例如:

  • C:\Program Files\IDA Pro 7.4\plugins
  • %APPDATA%\Hex-Rays\IDA Pro\plugins
  • ~/.idapro/plugins

运行 IDA 扩展

  1. 打开 IDB
  2. 在 IDA 中运行插件(Alt-Shift-S)或 Edit -> Plugins -> ``ret-sync````` [sync] default idb name: ld.exe [sync] sync enabled [sync] cmdline: "C:\Program Files\Python38\python.exe" -u "C:\Users\user\AppData\Roaming\Hex-Rays\IDA Pro\plugins\retsync\broker.py" --idb "target.exe" [sync] module base 0x100400000 [sync] hexrays #7.3.0.190614 found [sync] broker started [sync] plugin loaded [sync] << broker << dispatcher not found, trying to run it [sync] << broker << dispatcher now runs with pid: 6544 [sync] << broker << connected to dispatcher [sync] << broker << listening on port 63107
### IDA 插件故障排除

要排查 IDA 扩展的问题,文件 `retsync/rsconfig.py` 中提供了两个选项:```
LOG_LEVEL = logging.INFO
LOG_TO_FILE_ENABLE = False

设置 LOG_LEVEL 的值为 logging.DEBUG 可使插件输出更详细的日志。

将 LOG_TO_FILE_ENABLE 设置为 True 会触发将来自 broker.py 和 dispatcher.py 的异常信息记录到专用文件。日志文件生成在 %TMP% 文件夹中,命名模式为 retsync.%s.err 。

Ghidra 扩展

构建 Ghidra 扩展

可以使用 ext_ghidra/dist 文件夹中的预构建版本,或按照说明自行构建。每个扩展构建仅支持插件文件名中指定的 Ghidra 版本。例如,ghidra_9.1_PUBLIC_20191104_retsync.zip 适用于 Ghidra 9.1 公开版。

  1. 安装 Ghidra
  2. 安装 gradle```bash apt install gradle
3. 为你的 Ghidra 安装构建扩展(将 `$GHIDRA_DIR` 替换为你的安装目录)```bash
cd ext_ghidra
gradle -PGHIDRA_INSTALL_DIR=$GHIDRA_DIR

安装 Ghidra 扩展

  1. 在 Ghidra 项目管理器中:File -> Install Extensions...,点击 + 符号并选择 ext_ghidra/dist/ghidra_*_retsync.zip 文件,然后点击 OK。这将把 zip 中的 retsync 文件夹解压到 $GHIDRA_DIR/Extensions/Ghidra/ 中。
  2. 按提示重启 Ghidra
  3. 重新加载 Ghidra 后,在 CodeBrowser 中打开一个模块。它应提示检测到新扩展插件。选择“是”进行配置。然后勾选“RetSyncPlugin”并点击 OK。控制台应显示类似内容:``` [*] retsync init [>] programOpened: tm.sys imageBase: 0x1c0000000
4. 通过 Ghidra CodeBrowser 工具:使用工具栏图标或快捷键启用(``Alt+s``)/禁用(``Alt+Shift+s``)/重启(``Alt+r``)同步。

状态窗口也可从 ``Windows`` -> ``RetSyncPlugin`` 获取。通常建议将其拖放到侧边,以便与 Ghidra 环境窗口集成。


## Binary Ninja 扩展

Binary Ninja 支持为实验性功能,请确保备份您的分析数据库。

### Binary Ninja 前提条件

**ret-sync** 最低需要 Binary Ninja 2.2 版本以及 Python 3(不支持 Python 2)。


### 安装 Binary Ninja 扩展

**ret-sync** 尚未通过 Binary Ninja 的插件管理器分发;需要手动安装。只需将 `ext_bn` 文件夹的内容复制到 Binary Ninja 的 plugins 文件夹,例如:

`%APPDATA%\Binary Ninja\plugins`

重新启动 Binary Ninja 后,控制台窗口应显示以下输出:```
[sync] commands added
Loaded python3 plugin 'retsync'

WinDbg 扩展

构建 WinDbg 扩展

使用 ext_windbg 中提供的 Visual Studio 2017 解决方案。Visual Studio Community Edition 2017 和 2026 已成功测试(中间版本也应该可以正常工作)。

这将构建 x64\release\sync.dll 文件。

安装 WinDbg 扩展

您需要将生成的 sync.dll 文件复制到相应的 Windbg 扩展路径中。

  • WinDbg Classic:

对于早期版本的 Windbg,路径类似于这样(注意 x86/x64 版本),例如

C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\winext\sync.dll

  • Windbg Preview

存储扩展的文件夹似乎基于 PATH,因此您需要将其放在查询的位置之一。

一个示例是放在这里:

C:\Users\user\AppData\Local\Microsoft\WindowsApps\sync.dll

运行 WinDbg 扩展

下载工具