首页
社区
课程
招聘
[原创][看雪论坛.腾讯公司2008软件安全竞赛]我的第四题分析过程及答案
发表于: 2008-10-14 16:32 13590

[原创][看雪论坛.腾讯公司2008软件安全竞赛]我的第四题分析过程及答案

2008-10-14 16:32
13590

首先说明一下为什么虽然Explorer.exe本身并没有直接调用StretchDIBits但还是会因为这个BUG受到影响。
Explorer.exe在显示目录时会调用到shell32.dll中的代码,并间接调用到user32.dll中的代码,在user32.dll区间内会设置SEH处理异常,这也是虽然StretchDIBits出错了,但Explorer.exe会因此进入一个无限循环并不会显示错误消息的原因

StretchDIBits是通过LookupIconIdFromDirectoryEx被调用到的。当参数lpBits的最低两位不都为0时,会跳转到77F2C6BE执行一段额外的处理构造一块新的内存空间重新排列对齐并将lpBits指向的内容复制过去,这是因为在win32k.sys中的NtGdiStretchDIBitsInternal函数中,如果lpBits的最低两位为0时会调用ExRaiseDatatypeMisalignment引发一个异常


.text:77F1B0A6 test byte ptr [ebp+lpBits], 3
.text:77F1B0AA mov [eax+6D0h], edi
.text:77F1B0B0 jnz StretchDIBits_RtlAllocateHeap_77F2C6BE

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (39)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
太强了,我蓝屏了
2008-10-14 16:36
0
雪    币: 221
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
呵呵。。。。
2008-10-14 16:38
0
雪    币: 107
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
向乌龟大师学习
2008-10-14 16:38
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
顶一下,学习@_@
2008-10-14 16:39
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
6
完了,我文本文件的默认图标改成附件图标了。。
2008-10-14 16:41
0
雪    币: 243
活跃值: (11)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
看到由系统给资源icon添加
typedef struct
{
word            idreserved;    // reserved (must be 0)
word            idtype;        // resource type (1 for icons)
word            idcount;       // how many images?
icondirentry    identries[1]; // an entry for each image (idcount of 'em)
} icondir, *lpicondir;

以为lpBits不可控。。。直接把条件1当作过滤条件。。。。

现在才明白shox的玄机
2008-10-14 16:47
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
8
乌龟大师,你欠我的酱猪蹄呢
2008-10-14 16:47
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
9
膜拜shoooo大牛,这个周末杂事很多所以我只分析到这里就没有继续深入了,请问蓝屏是怎么做的
2008-10-14 16:47
0
雪    币: 407
活跃值: (125)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
10
你们都评分了吗,我的怎么还不评分呀
2008-10-14 16:49
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
11
海风大牛是怎么做的啊,先膜拜一下
2008-10-14 16:50
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
12
出个谜语:
海风你轻轻的吹,海浪你轻轻的摇。(猜范伟小品台词一)
2008-10-14 16:52
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
13
先欠着哈,以后补上
2008-10-14 16:53
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
14
2008-10-14 16:53
0
雪    币: 216
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
乌龟大师太强了,**
2008-10-14 16:53
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
16
我的没有评分,这张帖子只是说个人分析和理解,不代表标准答案
2008-10-14 16:55
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
17
乌龟大师应该是在Symantec的吧
2008-10-14 16:59
0
雪    币: 407
活跃值: (125)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
18
test    byte ptr [ebp+lpBits], 3
应该是判断4字节对齐吧
2008-10-14 17:00
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
拜一下牛公司中的牛人。
2008-10-14 17:01
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
20
[quote=EricAzhe;521169]test    byte ptr [ebp+lpBits], 3
应该是判断4字节对齐吧[/quote]

对,是判断最低两位是否不为0,也就是4字节对齐
2008-10-14 17:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
其实好像是有调用StretchDIBits
好像调用过的就放在缓存里了吧。。。
2008-10-14 17:21
0
雪    币: 111
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
除了膜拜还是膜拜。。
2008-10-14 17:25
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
23
这个膜拜一下,文件不下了,免得重启了
2008-10-14 17:31
0
雪    币: 233
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
终于看到答案啦,等待的滋味大家都是知道的
2008-10-14 17:33
0
雪    币: 243
活跃值: (11)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
25
。。。。。。。。。。。。。。。
2008-10-14 17:35
0
游客
登录 | 注册 方可回帖
返回
//