How to use ret-sync on WINDOWS

作者:k0shl 转载请注明出处 作者博客:http://whereisk0shl.top


0x00 介绍


原作者项目地址:https://github.com/bootleg/ret-sync

我的项目地址:https://github.com/k0keoyo/ret-sync-unset-hotkey

我的项目目前只支持win x86平台,目前的修改只是将IDA的F5功能复活了,在ret-sync中,会将IDA的一些快捷键替换成windbg的,因此会去掉一些好用的功能,比如F5插件。

ret-sync是一个bootleg做的一个非常好玩的工具,也非常的实用,他实现了一个我一直想实现的东西,就是IDA和windbg同步,在windbg进行动态调试的时候,同时可以看到IDA中代码的执行情况,也就是比如当前的eip会反馈到IDA中得到一个对应,同样,可以用IDA打开多个idb,比如一个exe和exe调用到的一些动态链接库dll,将这些一起进行动态调试。

同样,ret-sync现在也支持linux,x86_64等多种环境调试了。

在我的项目中,提供了一个sync.dll,原项目没有编译这个windbg的扩展。下面我来详细介绍一下这个工具的配置及使用过程。


0x01 配置及使用


首先需要在目标的idb文件夹下,也就是存放ida打开要调试内容的文件夹下,添加一个配置文件,这个文件显示连接的IP和端口号。

没有这个文件会显示"idb is disabled"。这个文件是不会默认创建的,需要手动创建,文件名其实只要以.sync结尾就好,这里就起名为conf.sync。

[INTERFACE]
host=127.0.0.1
port=9100

然后打开IDA,通过IDA file -> script file的方法,打开SyncPlugin.py文件,这里需要提一点,在IDA 6.9用的import是PyQT5,在这之前6.8用的是PySide,如果从原作者项目中下载的话,在extida文件夹下的那个SyncPlugin.py是IDA 6.9的,如果用的是6.8及之前的SyncPlugin.py保存在extida里面的另一个文件夹下。

同时要注意,broker和dispatch主要是处理和动态调试器通信的py文件,需要和SyncPlugin.py处于同一个文件夹,还有一点就是需要在环境变量中加上这个SyncPlugin.py所在文件的绝对路径。

这样检查了配置文件之后就能正常连接了。

现在dispatcher和broker检查完毕后就会等待动态调试器连接,这时候需要把sync.dll拷贝到windbg的winext文件夹下,sync.dll可以使用我项目中的,也可以用原作者项目中的,那个有个sln文件,需要在vs2013版本编译。

拷贝完后打开windbg,通过open excution或者attach的方法打开目标调试进程或者文件,然后使用命令加载sync扩展。

.load sync

加载后使用

!sync

连接ida

这样就可以成功连接了,之后就可以进行调试了,通过

!synchelp

可以显示所有命令,在我的项目中的f5在windbg里可以当作g使用,在ida里还是转换伪代码。其他还有很多特别实用的功能。

比如可以跟踪执行流程,这个也是比较好用的。