首页
论坛
课程
招聘
[原创]ret-sync插件:windbg/ollydbg+ida逆向调试神器
2019-7-15 23:04 19672

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

2019-7-15 23:04
19672
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中黄色高亮光标会跟着变化:

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

[培训] 优秀毕业生寄语:恭喜id咸鱼炒白菜拿到远超3W月薪的offer,《安卓高级研修班》火热招生!!!

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

上传的附件:
雪    币: 1042
活跃值: 活跃值 (903)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
~时光荏苒 活跃值 2019-7-20 23:33
18
0
labeless 比这个好用吧?
雪    币: 5207
活跃值: 活跃值 (2351)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
hyjxiaobia 活跃值 2 2019-7-25 20:27
19
0
wx_时光_477781 labeless 比这个好用吧?
我试试
雪    币: 5207
活跃值: 活跃值 (2351)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
hyjxiaobia 活跃值 2 2019-7-25 20:27
20
0
拍拖 我之前看好像不支持IDA7.0,现在可以支持了吗?
可以啊 
6.x要自己装python模块
雪    币: 1502
活跃值: 活跃值 (2358)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
xiaofu 活跃值 8 2019-7-25 23:17
21
0
我用OD和x64dbg测试,ida里面好像就只有个同步到当前行的功能.
雪    币: 687
活跃值: 活跃值 (835)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
方向感 活跃值 2019-7-26 23:01
22
0
在线用vs2017编译好的所有版本下载连接为:
https://dev.azure.com/bootlegdev/ret-sync-release/_build
雪    币: 10118
活跃值: 活跃值 (371)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
killbr 活跃值 2019-8-15 22:54
23
0
来晚了,确实不错,明天白天做个测试录像。
雪    币: 10118
活跃值: 活跃值 (371)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
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编辑 ,原因:
雪    币: 10118
活跃值: 活跃值 (371)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
killbr 活跃值 2019-8-16 06:57
25
0
是这个吧 https://github.com/bootleg/ret-sync
游客
登录 | 注册 方可回帖
返回