首页
社区
课程
招聘
[原创]用OllyDBG调试Explorer.exe的两种办法
发表于: 2008-10-18 11:17 24896

[原创]用OllyDBG调试Explorer.exe的两种办法

2008-10-18 11:17
24896

用OllyDBG调试Explorer.exe的两种办法

前言
    腾讯比赛中第一阶段第四题是要利用StretchDIBits函数的漏洞,漏洞还算好找,用IDA打开很快就能看到可疑点,但难的是调试验证。因为Explorer.exe进程在Windows中的特殊性,所以调试起来不太容易,如果采用OD直接Open或Attach的方式,要么是断不下来,要么就是导致系统没有响应。尽管forgot等大牛已经提示过了要修改DesktopProcess,但本人脑瓜较木,一直不明白是啥意思,这团阴影缠绕了我一星期。刚好昨天下午还算空闲,就决心要把这个问题搞定,于是在Google中找啊找,先是用了shoooo大的“可注入Explorer的OD”,可是不知是否我的用法不对,还是不管用,最后终于看到了这篇MS的文档:Debugging with the Shell
http://msdn.microsoft.com/en-us/library/cc144064(VS.85).aspx,经过反复验证确定可行后,想到调试Explorer.exe的方法在网上很难找到,于是便有了下文。

第一种:神奇的CTRL+ALT+SHIFT
      OD菜单:File -> Open,选择Windows目录下的Explorer.exe,打开之后,OD将会自动中断在入口点,这时在系统中会存在2个Explorer.exe进程,如下图:



接下来从“开始”菜单或者“任务管理器”中选择“关机”,系统弹出关机对话框,如下图:



此时很关键了,要在按住CTRL+ALT+SHIFT三个键的同时,点击“取消”按钮,注意:必须是同时才有效,即先按下三个键,然后再点击。屏幕会在短暂的灰屏后重新亮起,原来的Explorer.exe已经被关闭,但是被OD调试的那个还在,如下图:



之后你会发现桌面和任务栏都不见了,但不用担心,这是正常的,你原来打开的所有应用程序都还健康地活着,在OD下需要的断点,然后按F9运行,这时的Explorer就像普通进程一样开始运行,可以被OD任意调试了。
    按下CTRL+ALT+SHIFT三个键表示什么意思呢?我也不知道,在Google上也没找到,要是有谁知道的,请一定要告诉我。

第二种:修改注册表
注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer键下新建一个DWORD值为1,修改之后如下图:



这个值的意思是让Windows中的桌面和任务栏使用一个单独的Explorer.exe进程,而其它的文件浏览等操作则使用另外一个Explorer.exe进程。修改后进行注销再重新登录,使修改生效。之后就和第一种方法一样了,操作OD菜单:File -> Open,选择Windows目录下的Explorer.exe,在OD下需要的断点,按F9运行,用被OD调试的这个Explorer.exe进行文件浏览等,当触发了断点后就会被断下。
    如果用IDA创建了系统DLL的MAP文件,还可以用OD插件LoadMapEx加载到OD中,这样在OD中也能看到MS的调试符号,会把系统对Explorer.exe的调用流程看得更清楚。以Gdi32.dll中的StretchDIBits函数为例,在Explorer.exe中下了StretchDIBits断点后,当该断点被触发时,从我机器上的CallStack窗口可以看到这样的流程:Shell32 -> User32 -> Gdi32.StretchDIBits。如下图:



总结
    这两种方法比较,尽管第一种方法感觉有点酷,不过从稳定性方面考虑,个人还是推荐第二种方法。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (33)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
起床顶新出炉的      精华贴       。。。。。。。。。。。。。。
2008-10-18 11:49
0
雪    币: 111
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
好文 顶一个。。
2008-10-18 13:07
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
××××××××××××××××××
2008-10-18 13:20
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习中!!!
2008-10-18 14:40
0
雪    币: 107
活跃值: (1743)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
6
前几天出了答案也不敢去调explorer,牛人们终于又放出来了
2008-10-18 14:52
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
7
那个漏洞不需要调explorer.exe,调tc就可以了,轻松又省事
因为出错是在shell32.dll里面引起的,并不是explorer.exe先起火的
2008-10-18 15:01
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
8
请教海风大牛,tc是啥?
2008-10-18 15:11
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
9
http://www.google.cn/search?q=total+commander

我上面的话只是针对那条题目,不是针对LZ文章,LZ文章很不错,我以前也不会调试的
2008-10-18 15:12
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=海风月影;522870]http://www.google.cn/search?q=total+commander

我上面的话只是针对那条题目,不是针对LZ文章,LZ文章很不错,我以前也不会调试的[/QUOTE]

感谢海风!

原来是Total Commander ,以前也用过,但是这次却没想到用它。的确如此,我们只要任意一款工具,能够浏览文件能够触发那个漏洞就可以了,而并非要死扛Explorer.exe。
2008-10-18 15:23
0
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
11
看了高手的讨论,获益良多
2008-10-18 16:00
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了,精彩!
2008-10-18 18:29
0
雪    币: 104
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
文章不错~ 学习了~
2008-10-18 21:13
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
14
好方法,收藏了!
2008-10-18 22:07
0
雪    币: 207
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
都是牛人.CTRL+ALT+SHIF 同时按下是啥意思.
很好奇. 期待答案.也谢谢楼主不辞辛苦的截图,以及写下这些文字.  
2008-10-19 06:08
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
超级牛人,什么时候出点加密狗破解的教程
2008-10-19 08:52
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
超级感谢,收藏
2008-10-19 10:33
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
CTRL+ALT+SHIFT是啥意思?
2008-10-19 10:59
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
19
就是同时按下CTRL,ALT,SHIFT。
2008-10-19 11:35
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我是想问它的作用是什么
2008-10-19 23:11
0
雪    币: 666
活跃值: (191)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
21
好文。总有人能有出奇的主意
2008-10-20 00:07
0
雪    币: 222
活跃值: (27)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
不用这么麻烦吧,我用OD打开一个explorer后,在任务管理器中把原先存在的那个explorer进程结束任务就行了吧~~~,我试了的,可以断下的
2008-10-20 15:23
0
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
23
试了下,貌似不太稳定。开始是能断下,但是到后面运行中就死掉了。
2008-10-20 16:13
0
雪    币: 210
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
学习 还是学习
2008-10-20 23:12
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
好方法,学会了!!!
2008-11-21 23:11
0
游客
登录 | 注册 方可回帖
返回
//