首页
论坛
专栏
课程

[原创]ret-sync插件:windbg/ollydbg+ida逆向调试神器

2019-7-15 23:04 5891

[原创]ret-sync插件:windbg/ollydbg+ida逆向调试神器

2019-7-15 23:04
5891
ida有不少主流调试器的扩展插件,如windbg/gdb等,可以在静态分析的基础上动态调试二进制文件。可是众多调试器扩展中没有兼顾ollydbg,难免觉得是一项缺憾。

    最近在github上发现一个插件:ret-sync,不仅弥补了ida对ollydbg支持的空白,还额外支持x64dbg/lldb等调试器:

1.虽然作者建议使用vs2017生成插件,但由于vs2017的bug,建议换用其他低版本编译器。笔者发现vs2013亦能生成插件。

2.编译生成的windbg扩展,需要区分x86/x64版本。x86的dll放到C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\winext目录下;相应的,x64的dll放到C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\winext目录下。编译生成的ollydbg1扩展,放到ollydbg1菜单栏Options-Appearance-"UDD path"所指定的路径:

3.笔者使用的是IDA Pro 7.0 。由于IDA7.0内置了python2.7且支持x64位系统,因此,需要额外安装python2.7 x86-64版本,否则遇到诸如<总结IDA遇到的python问题>一文中提到的各种奇葩问题。

4.将ext_ida目录下的所有文件拷贝到IDA的plugins目录中:

使用插件

1.首先在IDA中加载待调试的二进制,保存(Ctrl+W)生成idb文件。本文用Crackmes.cf中Level1的#ParadoxX做示例,加载AC1D.Materie.exe并保存,最终生成AC1D.Materie.idb,如图:


2.IDA中启动rer-sync插件,Edit-Plugins-"ret sync":

此时会弹出ret sync插件的窗口,如果前面的环境搭建正确,IDA的Output窗口会输出:

[sync] form create
Note: FormToPyQtWidget: importing 'sip' module into <module '__main__' from ''>
[sync] default idb name: AC1D.Materie.exe
[*] sync enabled <----------------------------sync插件加载成功
[*] init_broker
[*] cmdline: "C:\Python27\python.exe" -u "D:\Program Files\IDA 
...
[sync] name AC1D.Materie.exe
[sync] module base 0x400000
[sync] hexrays #7.0.0.170914 found
[sync] hexrays version >= 7.2 is needed
[*] broker new state: Starting
[*] broker new state: Running
[*] broker started
...
[*] << broker << dispatcher not found, trying to run it
[*] << broker << dispatcher now runs with pid: 4464
[*] << broker << connected to dispatcher
[*] << broker << listening on port 61085 <-----------sync开始侦听并等待调试器链接
3.看IDA的输出,感觉ret sync在IDA上运行的是个服务端插件;要正常工作,还需要客户端去连接。我们的客户端当然就是运行了ret sync扩展的windbg/ollydbg了。先用ollydbg演示一下。

4.在ollydbg中加载AC1D.Materie.exe
ollydbg加载完毕后,eip可能指向系统模块所在空间。需要设置初始中断的位置为
"Debugging options"-Events-Make first pause at"-"Entry point of main moudle"

为什么要这么设置?根据ret sync的作者解释,只有当调试器的Eip所在的模块与IDA生成的idb同名时,插件才开始工作! 根据od"Memory Map"模块图和CPU窗口可以确定,我的ollydbg目前满足使用插件的条件:

点击plugins-"ret sync plugin"-sync,此时IDA disassemly窗口对应的指令会变黄,同时输出窗口显示:

[*] << broker << dispatcher now runs with pid: 4464
[*] << broker << connected to dispatcher
在Ollydbg中按F7/F8使EIP向下运行,IDA中黄色高亮光标会跟着变化:

嗯,还真是个不错的插件,我喜欢


[公告][征集寄语] 看雪20周年年会(12.28上海) | 感恩有你,一路同行

最新回复 (42)
Sampgirl 2019-7-15 23:15
2
0
感谢分享!
最后于 2019-7-15 23:15 被Sampgirl编辑 ,原因:
zbzb 2019-7-15 23:30
3
0
这个不错,赞一个!
cmputer 2019-7-15 23:32
4
0
有没有编译好的方便我等伸手党
黑洛 1 2019-7-16 02:25
5
0
这个插件的成因其实是因为,IDA自带的动态调试太慢了。
严启真 2019-7-16 08:09
6
0
必须支持一下的插件,感谢分享
superdos 2019-7-16 08:40
7
0
有点复杂
MSA_Li 2019-7-16 09:38
8
0
ida导出个map文件让od加载一下,那个函数名什么的就都和ida里一样了
cmputer 2019-7-16 10:37
9
0
只在win7 x64 + vs2012环境下编了一个x32dbg的版本,我自己能用
上传的附件:
拍拖 2 2019-7-16 11:33
10
0
我之前看好像不支持IDA7.0,现在可以支持了吗?
值得怀疑 2019-7-16 12:35
11
0
OD不能附加?
方向感 2019-7-17 00:25
12
0
od1/2编译版本,vs2013版本,其他没编译成功
最后于 2019-7-17 00:26 被方向感编辑 ,原因:
上传的附件:
beijingren 2019-7-17 03:42
13
0
这个插件可真是方便啊,同时开着调试更清晰了
方向感 2019-7-18 23:52
14
0
谁能提供一个x64dbg版的编译好的插件
幼儿园中班 2019-7-20 01:04
15
0
这个插件确实好用.学习了.感谢大神分享!
hekes 2019-7-20 08:25
16
0
mark
小光前辈 2019-7-20 16:42
17
0
win10+vs2017  x64dbg  ret-sync  32位 64位 

上传的附件:
wx_时光_477781 2019-7-20 23:33
18
0
labeless 比这个好用吧?
hyjxiaobia 2019-7-25 20:27
19
0
wx_时光_477781 labeless 比这个好用吧?
我试试
hyjxiaobia 2019-7-25 20:27
20
0
拍拖 我之前看好像不支持IDA7.0,现在可以支持了吗?
可以啊 
6.x要自己装python模块
xiaofu 8 2019-7-25 23:17
21
0
我用OD和x64dbg测试,ida里面好像就只有个同步到当前行的功能.
方向感 2019-7-26 23:01
22
0
在线用vs2017编译好的所有版本下载连接为:
https://dev.azure.com/bootlegdev/ret-sync-release/_build
killbr 2019-8-15 22:54
23
0
来晚了,确实不错,明天白天做个测试录像。
killbr 2019-8-16 06:54
24
0
[sync] form create

Note: importing 'sip' module into <module '__main__' (built-in)>

Note: importing 'QtWidgets' module into <module '__main__' (built-in)>

[sync] default idb name: CRACKME.EXE

[*] sync enabled

[*] init_broker

[*] cmdline: "C:\Python27\python.exe" -u "C:\Program Files\IDA 7.2\plugins\retsync\broker.py" --idb "CRACKME.EXE"

[sync] name CRACKME.EXE

[sync] module base 0x400000

[sync] hexrays not available

[*] broker new state: Starting

[*] broker new state: Running

[*] broker started

Shortcut F2 is used for two actions:

@IDC:py_hotkeycb_0000021F2B091480

BreakpointToggle

Shortcut for "BreakpointToggle" will be disabled.

Shortcut F2 is used for two actions:

@IDC:py_hotkeycb_0000021F2B091480

hexview:EditOrApplyChanges

Shortcut for "hexview:EditOrApplyChanges" will be disabled.

Shortcut Ctrl+F2 is used for two actions:

@IDC:py_hotkeycb_0000021F2B5B1B88

ProcessExit

Shortcut for "ProcessExit" will be disabled.

Shortcut Ctrl+F1 is used for two actions:

@IDC:py_hotkeycb_0000021F2B5B1C18

ExternalHelp

Shortcut for "ExternalHelp" will be disabled.

Shortcut Alt+F2 is used for two actions:

@IDC:py_hotkeycb_0000021F2B5B1C60

ManualInstruction

Shortcut for "ManualInstruction" will be disabled.

Shortcut F11 is used for two actions:

@IDC:py_hotkeycb_0000021F2B5B1D38

FullScreen

Shortcut for "FullScreen" will be disabled.

Shortcut Ctrl+F1 is used for two actions:

@IDC:py_hotkeycb_0000021F2B5B1D80

@IDC:py_hotkeycb_0000021F2B5B1C18

"@IDC:py_hotkeycb_0000021F2B5B1C18" will be deleted.

[*] << broker << dispatcher not found, trying to run it

[*] << broker << dispatcher now runs with pid: 1444

[*] << broker << connected to dispatcher

[*] << broker << listening on port 64883

[sync] restarting broker

[*] << broker << received kill notice

[*] broker new state: Not running

[*] broker finished

[*] sync disabled


[*] sync enabled

[*] init_broker

[*] cmdline: "C:\Python27\python.exe" -u "C:\Program Files\IDA 7.2\plugins\retsync\broker.py" --idb "CRACKME.EXE"

[sync] name CRACKME.EXE

[sync] module base 0x400000

[sync] hexrays not available

[*] broker new state: Starting

[*] broker new state: Running

[*] broker started

Shortcut Ctrl+F1 is used for two actions:

@IDC:py_hotkeycb_0000021F2B5C3288

@IDC:py_hotkeycb_0000021F2B5C3120

"@IDC:py_hotkeycb_0000021F2B5C3120" will be deleted.

[*] << broker << dispatcher not found, trying to run it

[*] << broker << dispatcher now runs with pid: 5140

[*] << broker << connected to dispatcher

[*] << broker << listening on port 64888

Command "JumpAsk" failed

Command "JumpAsk" failed

Command "JumpAsk" failed

[*] << broker << dispatcher connection error, quitting

[*] broker new state: Not running

[*] broker finished

[sync] idb is disabled

为什么 这个信息呢? .idb文件放哪里? 是给OD用的吗?

最后于 2019-8-16 10:14 被killbr编辑 ,原因:
killbr 2019-8-16 06:57
25
0
是这个吧 https://github.com/bootleg/ret-sync
ninebell 2019-8-16 10:37
26
0
成功了,哈哈哈哈 ~~
xiaofu 8 2019-8-16 10:52
27
0
楼上nice哈哈哈,我也来个

上传的附件:
ninebell 2019-8-16 11:44
28
0
这哥们,这界面,效果牛逼。
为啥我的OllyDBG1.1 and 2.0都不行呢。
xiaofu 8 2019-8-16 11:57
29
0
ninebell 这哥们,这界面,效果牛逼。 为啥我的OllyDBG1.1 and 2.0都不行呢。
Ollydbg我只试了1.0的可以用,其他版本的OD没试过
ninebell 2019-8-16 12:30
30
0
xiaofu Ollydbg我只试了1.0的可以用,其他版本的OD没试过
我在win10X64上,总是显示如下信息:

  bytes   pages size description
--------- ----- ---- --------------------------------------------
   262144    32 8192 allocating memory for b-tree...
    65536     8 8192 allocating memory for virtual array...
   262144    32 8192 allocating memory for name pointers...
-----------------------------------------------------------------
   589824            total memory allocated

Loading processor module C:\Program Files\IDA 7.2\procs\pc.dll for metapc...OK
Loading type libraries...
Autoanalysis subsystem has been initialized.
Database for file 'CRACKME.EXE' has been loaded.
Hex-Rays Decompiler plugin has been loaded (v7.0.0.170914)
  License: 57-C328-9175-B2 bbs.pediy.com (1 user)
  The hotkeys are F5: decompile, Ctrl-F5: decompile all.
  Please check the Edit/Plugins menu for more informaton.
IDAPython Hex-Rays bindings initialized.
--------------------------------------------------------------------------------------
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] 
IDAPython v1.7.0 final (serial 0) (c) The IDAPython Team <idapython@googlegroups.com>
--------------------------------------------------------------------------------------
[sync] form create
Note: importing 'sip' module into <module '__main__' (built-in)>
Note: importing 'QtWidgets' module into <module '__main__' (built-in)>
[sync] default idb name: CRACKME.EXE
[*] sync enabled
[*] init_broker
[*] cmdline: "C:\Python27\python.exe" -u "C:\Program Files\IDA 7.2\plugins\retsync\broker.py" --idb "CRACKME.EXE"
[sync] name CRACKME.EXE
[sync] module base 0x400000
[sync] hexrays not available
[*] broker new state: Starting
[*] broker new state: Running
[*] broker started
Shortcut F2 is used for two actions:
  @IDC:py_hotkeycb_0000023C35F01480
  BreakpointToggle
Shortcut for "BreakpointToggle" will be disabled.
Shortcut F2 is used for two actions:
  @IDC:py_hotkeycb_0000023C35F01480
  hexview:EditOrApplyChanges
Shortcut for "hexview:EditOrApplyChanges" will be disabled.
Shortcut Ctrl+F2 is used for two actions:
  @IDC:py_hotkeycb_0000023C36421B88
  ProcessExit
Shortcut for "ProcessExit" will be disabled.
Shortcut Ctrl+F1 is used for two actions:
  @IDC:py_hotkeycb_0000023C36421C18
  ExternalHelp
Shortcut for "ExternalHelp" will be disabled.
Shortcut Alt+F2 is used for two actions:
  @IDC:py_hotkeycb_0000023C36421C60
  ManualInstruction
Shortcut for "ManualInstruction" will be disabled.
Shortcut F11 is used for two actions:
  @IDC:py_hotkeycb_0000023C36421D38
  FullScreen
Shortcut for "FullScreen" will be disabled.
Shortcut Ctrl+F1 is used for two actions:
  @IDC:py_hotkeycb_0000023C36421D80
  @IDC:py_hotkeycb_0000023C36421C18
"@IDC:py_hotkeycb_0000023C36421C18" will be deleted.
[sync] restarting broker
[*] << broker << dispatcher not found, trying to run it
[*] << broker << dispatcher now runs with pid: 6512
[*] << broker << connected to dispatcher
[*] << broker << listening on port 49598
[*] broker finished
[*] sync disabled

[*] sync enabled
[*] init_broker
[*] cmdline: "C:\Python27\python.exe" -u "C:\Program Files\IDA 7.2\plugins\retsync\broker.py" --idb "CRACKME.EXE"
[sync] name CRACKME.EXE
[sync] module base 0x400000
[sync] hexrays not available
[*] broker new state: Starting
[*] broker new state: Running
[*] broker started
Shortcut Ctrl+F1 is used for two actions:
  @IDC:py_hotkeycb_0000023C36433288
  @IDC:py_hotkeycb_0000023C36433120
"@IDC:py_hotkeycb_0000023C36433120" will be deleted.
[*] << broker << dispatcher not found, trying to run it
[*] << broker << dispatcher now runs with pid: 4672
[*] << broker << connected to dispatcher
[*] << broker << listening on port 49603
[*] << broker << dispatcher connection error, quitting
[*] broker new state: Not running
[*] broker finished
[sync] idb is disabled
[*] sync enabled
[*] init_broker
[*] cmdline: "C:\Python27\python.exe" -u "C:\Program Files\IDA 7.2\plugins\retsync\broker.py" --idb "CRACKME.EXE.idb"
[sync] name CRACKME.EXE
[sync] module base 0x400000
[sync] hexrays not available
[*] broker new state: Starting
[*] broker new state: Running
[*] broker started
Shortcut Ctrl+F1 is used for two actions:
  @IDC:py_hotkeycb_0000023C36433798
  @IDC:py_hotkeycb_0000023C36433630
"@IDC:py_hotkeycb_0000023C36433630" will be deleted.
[sync] restarting broker
[*] broker finished
[*] sync disabled

[*] sync enabled
[*] init_broker
[*] cmdline: "C:\Python27\python.exe" -u "C:\Program Files\IDA 7.2\plugins\retsync\broker.py" --idb "CRACKME.EXE.idb"
[sync] name CRACKME.EXE
[sync] module base 0x400000
[sync] hexrays not available
[*] broker new state: Starting
[*] broker new state: Running
[*] broker started
Shortcut Ctrl+F1 is used for two actions:
  @IDC:py_hotkeycb_0000023C36433D38
  @IDC:py_hotkeycb_0000023C36433BD0
"@IDC:py_hotkeycb_0000023C36433BD0" will be deleted.
[*] << broker << dispatcher not found, trying to run it
[*] << broker << dispatcher now runs with pid: 4216
[*] << broker << connected to dispatcher
[*] << broker << listening on port 49613
[-] Drop the request because idb is not enabled
[*] << broker << dispatcher connection error, quitting
[*] broker new state: Not running
[*] broker finished
[sync] idb is disabled
ninebell 2019-8-16 12:42
31
0
AttributeError: 'SyncForm_t' object has no attribute 'broker'
[-] Drop the request because idb is not enabled
[-] Drop the request because idb is not enabled
这是什么情况呢?
xiaofu 8 2019-8-16 14:17
32
0
ninebell AttributeError: 'SyncForm_t' object has no attribute 'broker' [-] Drop the request because idb is n ...
没遇到过你这个情况....我也是win10 x64
ninebell 2019-8-16 16:26
33
0
xiaofu 没遇到过你这个情况....我也是win10 x64
那你用的是哪个版本OD?
把论坛上下载的1.1  2.0的 OD插件扔到上面说的UDD目录里时,菜单中不能显示出插件来
而照常扔到od\plugin下不知为啥就上面的那情况了(2大神编译的两版本我都试过了)
你是如何操作的?
能不能把你的OD和插件一起打个包传上来供我研究下,谢谢。
最后于 2019-8-16 16:26 被ninebell编辑 ,原因:
jfztaq 2019-8-16 20:59
34
0
我这里也一样报错,提示 broker new state: Not running
ninebell 2019-8-17 10:29
35
0
jfztaq 我这里也一样报错,提示 broker new state: Not running
@你与明日
https://www.lanzous.com/i5m835i
视频做好了
你看下就懂了
测试环境:VMware+Win7x64+IDA 7.2+ OllyDBG 1.1  
这次虚拟机中OD的插件正常了
也就是说上面几位编译的同学用的环境不是Win10,故此使用不了!
ninebell 2019-8-17 13:50
36
0
小光前辈 win10+vs2017&nbsp; x64dbg&nbsp; ret-sync&nbsp; 32位 64位&nbsp;
朋友,能不能编译一个win10x64上可用的OD 1.1 and 2.0的。因为楼上几位的只能用于win7中,win10使用就报错。
ninebell 2019-8-20 17:06
37
0
小光前辈 win10+vs2017&nbsp; x64dbg&nbsp; ret-sync&nbsp; 32位 64位&nbsp;
哥们能不能再编译2个bbs.pediy.com/thread-252634.htm 
win10+vs2017  32位 64位 的OD 1.1/2.0的两个DLL我在www.52pojie.cn/thread-1009802-2-1.html在win10x64上正常使用同步总Drop the request because idb is not enable

这狗日的论坛,发个短信也限制字数只能25,什么东西啊~~
wx_时光_477781 2019-9-16 08:39
38
0
xiaofu 楼上nice哈哈哈,我也来个
你这个配色很好看,能分享一波吗?
风中小筑V 2019-10-10 02:17
39
0
方向感  2019-7-26 23:01
  引用  举报 22 楼  0
在线用vs2017编译好的所有版本下载连接为:
https://dev.azure.com/bootlegdev/ret-sync-release/_build
他这个编译好的od1可以用,od2没测试...我系统版本Microsoft Windows [Version 10.0.18362.175]
https://dev.azure.com/bootlegdev/ret-sync-release/_build/results?buildId=33&view=results
风中小筑V 2019-10-10 02:19
40
0
@ninebell
实都 2019-10-12 10:57
41
0
效果太牛逼 哈哈哈哈
ninebell 2019-10-12 11:17
42
0
风中小筑V 方向感 2019-7-26 23:01 引用 举报 22 楼 0 在线用vs2017编译好的所有版本下载连接为: https://dev.azure.com/bootlegdev/re ...
这个地址等内容 填写多少 ?求参数。
@风中小筑V   
ninebell 2019-10-12 11:26
43
0
Microsoft Windows [版本 10.0.18362.175]
还是出现那个 Drop the request because idb is not enabled
算了,我还是老实用x32dbg+IDA吧,一次就同步上,不再折腾了。
游客
登录 | 注册 方可回帖
返回