首页
社区
课程
招聘
[求助]关于NtCreateFile函数的问题
发表于: 2010-6-8 09:25 11314

[求助]关于NtCreateFile函数的问题

2010-6-8 09:25
11314
通常在程序里,无论是3级还是0级都只能使用ZwCreateFile.但是如果我想直接使用NtCreateFile应该怎么办呢?。

网络上流传的一种说法就是,创建文件的调用流程是如此的
CreateFile -> NtCreateFile -> ssdt  ZwCreateFile -> NtCreateFile -> irp

如果这个流程是对的话,那么在ssdt下面的这个NtCreateFile 的函数地址,我应该如何获得呢?
我想搜索ntdll.dll导出表的方法找到的地址肯定是 ssdt 之前的 NtCreateFile吧

希望高手指教

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 75
活跃值: (723)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
lkd> u ntcreatefile
ntdll!NtCreateFile:
770c4a10 b842000000      mov     eax,42h
770c4a15 ba0003fe7f      mov     edx,offset SharedUserData!SystemCallStub (7ffe0300)
770c4a1a ff12            call    dword ptr [edx]
770c4a1c c22c00          ret     2Ch
770c4a1f 90              nop
ntdll!NtCreateIoCompletion:
770c4a20 b843000000      mov     eax,43h
770c4a25 ba0003fe7f      mov     edx,offset SharedUserData!SystemCallStub (7ffe0300)
770c4a2a ff12            call    dword ptr [edx]
lkd> dd KeServicedescriptortable
817a49c0  816ab700 00000000 00000191 816abd48
817a49d0  00000000 00000000 00000000 00000000
817a49e0  81717493 00000000 01f273ef 00000bb8
817a49f0  00000011 00000100 5385d2ba d717548f
817a4a00  816ab700 00000000 00000191 816abd48
817a4a10  92d65000 00000000 00000339 92d6602c
817a4a20  00000000 00000000 817a4a24 00000240
817a4a30  00000240 8365e718 00000003 00000000
lkd> dd 816ab700 + 42 * 4
816ab808  81886ec2 818a01d5 818341f7 8191a758
816ab818  8184aa4d 818c1b62 8180f725 8184b374
816ab828  818bac55 818c60c6 817cc64f 81831194
816ab838  81813205 81916e5f 81916eaa 81945c23
816ab848  81945be7 817d8e6a 8186cd23 818bd049
816ab858  8184b0a7 81916c66 81874d91 81836183
816ab868  8184c48a 81813674 817d910f 81891e20
816ab878  817dc38b 8189ff78 818ec1ec 818ec8ad
lkd> u 81886ec2
nt!NtCreateFile:
81886ec2 8bff            mov     edi,edi
81886ec4 55              push    ebp
81886ec5 8bec            mov     ebp,esp
81886ec7 51              push    ecx
81886ec8 33c0            xor     eax,eax
81886eca 50              push    eax
81886ecb 6a20            push    20h
81886ecd 50              push    eax
2010-6-8 10:03
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
自己解析磁盘文件获得原始地址就OK了
2010-6-8 12:38
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
skypismire 大侠,你还是只能通过SSDK得到呀,我是想问,SSDT中,的地址是从哪里来的,我听说是从ntosknrs.exe里导出的,但是我看到有很多函数,他的导出表里没有呀,比如删除注册表的API等等
2010-6-8 13:41
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
ssdt里有并不是说ntoskrnl导出了。。。
2010-6-8 17:48
0
游客
登录 | 注册 方可回帖
返回
//