Ret-Sync+dsync动静同步插件
前言
本文将介绍IDA的一组十分强大的插件集合:ret-sync+dsync,通过这两个插件就可以实现一边
动态调试
一边静态分析
,也就是说可以实现调试器中EIP指到那,IDA就同步显示到那
,真正意义上的动静结合~,并且还支持远程调试,及虚拟机中调试,本地IDA同步。其实这组插件笔者在IDA7.2的时候就用过(dsync只支持7.2以上),但由于当时的IDA7.2并不稳定(用的IDA7.0的F5组件),导致程序老是崩溃。但是令人喜出望外的是,前不久twitter上公开了IDA7.5,因此便再次掏出这套神器,推荐给大家使用。
效果图
使用插件OD双机调试
时动静结合效果动图:
使用插件windbg双机调试
时动静结合效果图:
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
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为例进行配置。
将ext_olly1
目录下的ret-sync.dll放入OD插件目录plugin中。
配置x64dbg
下载链接:
将ext_x64dbg
目录下的对应版本目录下的文件放入x64dbg对应的plugins目录中。
配置windbg
下载链接:
将ext_windbg
目录下相应版本的sync.dll文件放到相应windbg版本的winext
目录下。
使用介绍
打开对应文件的idb,启用插件ret-sync,点击Start
,如图:
然后运行调试器,调试同样的文件。然后选择启用插件,OD启用插件如图:
x64dbg启用插件,如图:
成功启用ret-sync。调试器EIP与IDA实现同步
然后在启用dsync
插件,便能使汇编窗口和伪代码窗口同步。如图:
注: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 | [INTERFACE] |
注:当本地启用调试器调试程序并使用Ret-sync时,需将该文件删除。
然后再将刚刚创建的.sync
放到目标主机的用户根目录,如图:
注:这里虚拟机的链接方式为NAT,虚拟机的IP网段为192.168.153.0,192.168.153.1为本地物理主机的IP地址,虚拟机中的
.sync
文件需要与外面保持一致,及host字段也为物理主机的IP地址。
在物理主机开启IDA中的插件ret-sync
,然后再运行虚拟机中调试器的插件,当IDA和虚拟机连通后(可在IDA Output窗口查看),再启用插件dnspy
来同步IDA的汇编窗口和伪代码窗口,具体操作可看上面的使用介绍。最终就能实现远程调试并同步,如图: