Ret-Sync+dsync动静同步插件配置说明

前言

本文将介绍IDA的一组十分强大的插件集合:ret-sync+dsync,通过这两个插件就可以实现一边动态调试一边静态分析,也就是说可以实现调试器中EIP指到那,IDA就同步显示到那,真正意义上的动静结合~,并且还支持远程调试,及虚拟机中调试,本地IDA同步。

其实这组插件笔者在IDA7.2的时候就用过(dsync只支持7.2以上),但由于当时的IDA7.2并不稳定(用的IDA7.0的F5组件),导致程序老是崩溃。但是令人喜出望外的是,前不久twitter上公开了IDA7.5,因此便再次掏出这套神器,推荐给大家使用。

效果图

使用插件OD双机调试时动静结合效果动图:

ret-sync

使用插件windbg双机调试时动静结合效果图:

image-20210117171136308

IDA 安装

由于插件dsync需要7.2以上的版本,所以要想使用该插件需要更新IDA。

IDA是可以多版本同时存在,并不相互影响,因此可以在保留稳定版7.0,尝试使用IDA7.2和IDA7.5,这里推荐安装IDA7.5

IDA 7.2

IDA 7.2下载链接:https://bbs.pediy.com/thread-252208.htm

  • 解压缩 x64_idapronw_hexx64w_181105.zip ,并安装IDA7.2
  • 解压缩 Extended.V2.7z ,并将解压后的文件放入IDA7.2对应的目录下替换对应文件。

IDA 7.5-推荐

由于前一段时间在Twitter上,有人公布了IDA 7.5,现在想必大家人手一份IDA 7.5。

IDA 7.5吾爱下载:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1345176&extra=page%3D1%26filter%3Dtypeid%26typeid%3D123

注:使用如下插件需将IDA7.5设置好,吾爱有提供绿化工具,可以python不匹配问题以及禁用IDA自动联网等功能,这里笔者推荐大家使用绿化工具。

插件安装

ret-sync和dsync都是Github上开源的项目,可以直接从上面克隆下来。

Ret-sync

Ret-sync分为两部分,一部分是IDA插件(python),另一部分是调试器插件(编译好的DLL);该插件的功能是将调试器中的EIP所指的地址在IDA中同步显示出来。这样就可以将动静结合起来了。

Github项目地址https://github.com/bootleg/ret-sync

编译好的调试器插件可从Azure DevOps下载,链接:https://dev.azure.com/bootlegdev/ret-sync-release/_build/results?buildId=105&view=results

image-20210117194933205

dsync

其实光有Ret-sync就能实现基本的动静结合,但是ret-sync的缺陷是只能同步IDA View也就是汇编窗口,不能同步伪代码窗口,而dsync插件的功能就是将伪代码窗口和汇编窗口同步起来。

当ret-sync+dsync同时使用时,便能实现调试器EIP指到那里,IDA汇编代码和伪代码就指到那里。

Github项目地址https://github.com/patois/dsync

配置插件

配置IDA插件

ret-sync:将ret-sync目录中ext_ida目录下的两个文件,放入IDA主目录下的plugins文件夹中。

dsync:将dsync.py放入IDA主目录下的plugins目录下。

配置OD插件

作者提供了OD1和OD2两个版本所对应的插件文件,这里需要看下你OD的版本,我们常用的吾爱OD是OD1。笔者这里就以OD1为例进行配置。

下载链接:https://dev.azure.com/bootlegdev/dcc5ab7f-f16a-4986-ac25-9331eda171de/_apis/build/builds/105/artifacts?artifactName=ret-sync-release-ollydbg&api-version=6.0&%24format=zip

image-20210117195219909

ext_olly1目录下的ret-sync.dll放入OD插件目录plugin中。

配置x64dbg

下载链接:

x32dbg:https://dev.azure.com/bootlegdev/dcc5ab7f-f16a-4986-ac25-9331eda171de/_apis/build/builds/105/artifacts?artifactName=ret-sync-release-x64dbg-Win32&api-version=6.0&%24format=zip

x64dbg:https://dev.azure.com/bootlegdev/dcc5ab7f-f16a-4986-ac25-9331eda171de/_apis/build/builds/105/artifacts?artifactName=ret-sync-release-x64dbg-x64&api-version=6.0&%24format=zip

ext_x64dbg目录下的对应版本目录下的文件放入x64dbg对应的plugins目录中。

配置windbg

下载链接:

windbg_32:https://dev.azure.com/bootlegdev/dcc5ab7f-f16a-4986-ac25-9331eda171de/_apis/build/builds/105/artifacts?artifactName=ret-sync-release-windbg-Win32&api-version=6.0&%24format=zip

windbg_64:https://dev.azure.com/bootlegdev/dcc5ab7f-f16a-4986-ac25-9331eda171de/_apis/build/builds/105/artifacts?artifactName=ret-sync-release-windbg-x64&api-version=6.0&%24format=zip

ext_windbg目录下相应版本的sync.dll文件放到相应windbg版本的winext目录下。

使用介绍

打开对应文件的idb,启用插件ret-sync,点击Start,如图:

image-20210119002243583

然后运行调试器,调试同样的文件。然后选择启用插件,OD启用插件如图:

image-20210119002253261

x64dbg启用插件,如图:

image-20210121004945461

成功启用ret-sync。调试器EIP与IDA实现同步

image-20210119002308095

然后在启用dsync插件,便能使汇编窗口和伪代码窗口同步。如图:

image-20210119002328015

注:ret-sync插件是基于内存地址进行同步的,因此只有调试器的EIP运行在IDA所打开的PE内存空间中时,才能进行同步,比如进入库函数时,便无法进行同步。

双机调试配置

在本机要调试的文件(idb)目录下,创建名为.sync的文件。其中端口必须为9234,IP设置为与虚拟机在同一网段内的IP地址,注意防火墙设置。即如下实例,虚拟机采用的是NAT连接,Gateway=192.168.153.2,本地物理主机IP=192.168.153.1,该虚拟机的IP一般为192.168.153.(3~255);因此这里填写的是与虚拟机在同一网段内的本地物理主机IP,及192.168.153.1。

1
2
3
[INTERFACE] 
host=192.168.153.1
port=9234

注:当本地启用调试器调试程序并使用Ret-sync时,需将该文件删除。

然后再将刚刚创建的.sync放到目标主机的用户根目录,如图:

image-20210119004145803

注:这里虚拟机的链接方式为NAT,虚拟机的IP网段为192.168.153.0,192.168.153.1为本地物理主机的IP地址,虚拟机中的.sync文件需要与外面保持一致,及host字段也为物理主机的IP地址。

在物理主机开启IDA中的插件ret-sync,然后再运行虚拟机中调试器的插件,当IDA和虚拟机连通后(可在IDA Output窗口查看),再启用插件dnspy来同步IDA的汇编窗口和伪代码窗口,具体操作可看上面的使用介绍。最终就能实现远程调试并同步,如图:

ret-sync