首页
社区
课程
招聘
[原创]360比赛第5题-我的解法
发表于: 2008-12-19 14:39 40131

[原创]360比赛第5题-我的解法

2008-12-19 14:39
40131

这题得了100分哦。

驱动加载后,直接对对IoCreateFile函数进行PATCH,

PATCH前函数为:

00010522    call    dword_10804    //  先调用原来的nt!IopCreateFile                                           
00010528    mov     [ebp+var_210], eax                                                 
0001052E    mov     eax, [ebp+var_210]                                                 
00010534    test    eax, eax                                                           
00010536    jl      short loc_105AD                                                    
00010538    mov     edx, [esi+8]                                                       
0001053B    cmp     word ptr [edx], 206h                                               
00010540    ja      short loc_105AD                                                    
00010542    cmp     dword ptr [edx+4], 0                                               
00010546    jz      short loc_105AD                                                    
00010548    cmp     word ptr [edx], 0                                                  
0001054C    jz      short loc_105AD                                                    
0001054E    mov     eax, edx                                                           
00010550    movzx   ecx, word ptr [eax]                                                
00010553    mov     esi, [eax+4]                                                       
00010556    mov     eax, ecx                                                           
00010558    shr     ecx, 2                                                             
0001055B    lea     edi, [ebp+var_20C]                                                 
00010561    rep movsd                                                                  
00010563    mov     ecx, eax                                                           
00010565    and     ecx, 3                                                             
00010568    rep movsb                                                                  
0001056A    movzx   eax, word ptr [edx]                                                
0001056D    and     [ebp+eax+var_20C], 0                                               
00010576    lea     eax, [ebp+var_20C]                                                 
0001057C    push    eax             ; wchar_t *                                        
0001057D    call    ds:_wcsupr                                                         
00010583    lea     eax, [ebp+var_20C]                                                 
00010589    mov     [esp+220h+var_220], offset a360game360game ;
 "360GAME\\360GAME.TXT"
00010590    push    eax             ; wchar_t *                                        
00010591    call    ds:wcsstr                                                          
00010597    test    eax, eax                                                           
00010599    pop     ecx                                                                
0001059A    pop     ecx                                                                
0001059B    jz      short loc_105A7                                                    
0001059D    and     dword ptr [ebx], 0                                                 
000105A0    mov     eax, 0C0000022h  

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (17)
雪    币: 233
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
顶一个
2008-12-19 14:41
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我是直接请求文件
c:\360game\\360game.txt,一切搞定。MS没LZ搞那么复杂
2008-12-19 14:44
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
4
这题和1题的方法都很多了,见仁见智,去了花之后就很简单了,关键看想象力
2008-12-19 14:46
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
5
可以用你说的硬链接么?
2008-12-19 18:49
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
6
硬链接不行,此题需要用重解析点,不过无法在非ntfs系统使用
2008-12-19 18:55
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
7
c:\360game\..\360game\360game.txt 这样吧~~呵呵,明白了
2008-12-19 18:59
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
8
不是这个。。。
2008-12-19 19:05
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
9

期待完整解答……
2008-12-19 19:10
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
ZwCreate之类的没有检查参数,而IopCreateFile不接受相对路径。
CreateFile之类的又会把相对路径转换成绝对路径。
2008-12-19 19:11
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这个我的,给大家看看。
上传的附件:
2008-12-19 19:14
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
即使是使用c:\360game\..\360game\360game.txt这样的路径,路径中仍然包含
360GAME\360GAME.TXT,至少得是c:\360game\haha\..\360game.txt
2008-12-19 19:16
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
13
                              ·
2008-12-19 19:18
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
当时查资料的时候是看到可以这样
subst z: c:\360game
然后fopen()都能够打开,但是不知道为什么没成功过。不是很清楚虚拟盘的工作原理。
2008-12-19 19:23
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
15
dosdefinedevice是可以的
原理是ZwCreateSymbolicLinkObject~
2008-12-19 19:43
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
恩啊,是滴,成功了!
想想可能是因为测试之前用其他东西打开了文件。按LZ的说法是句柄被占用了。又会一招!
2008-12-19 20:47
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
路径的想法我也试过,不过在路径构造上的不同导致没成功。。。。重解析点的方法学习了。
2008-12-19 22:02
0
雪    币: 71
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
18
学习了,我当时还想构造超长的路径,可惜也失败了。
2008-12-20 12:00
0
游客
登录 | 注册 方可回帖
返回
//