首页
社区
课程
招聘
[求助]驱动中可以直接调用Nt开头的函数吗
发表于: 2010-2-7 18:33 7109

[求助]驱动中可以直接调用Nt开头的函数吗

2010-2-7 18:33
7109
驱动中可以直接调用Nt开头的函数吗 直接调用Nt开头的函数是不是就不在查找SSDT了
如果可以是不是就在驱动中直接写NtOpenProcess();这样就行了吗 还是需要先找到地址?
还有和ZwOpenProcess的异同?这里有些懵啊!
谢谢各位解答了。

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 708
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ntoskrnl.exe导出的函数都可直接调用  ssdt主要是用于支持R3到R0系统调用的
nt!ZwOpenProcess要先模拟从R3到R0的过程后再调用nt!NtOpenProcess
2010-2-7 19:42
0
雪    币: 708
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
具体你可以baidu搜索Nt vs Zw 或自己kd下反汇编
2010-2-7 19:50
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
设置Ethread->PreviousMode为KernelMode,就可以直接调用NtXXX函数了,但是有很多NtXXX函数并没有导出~~
2010-2-7 20:55
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没错, 区别就是ZwXxx查询SSDT调用相应的NtXxx而且设置previous mode 为 kernelMode. 如果你直接调用NtXxx, 如果是用户线程, previous mode 是userMode, 那么NtXxx的Probe检查就过不去
2010-2-7 22:19
0
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
十分感谢各位前辈的解答了 以前一直晕
也就是说在驱动中用ZW*函数还是要去SSDT查找地址的
而Nt*则不用 但调用前需要设置Ethread->PreviousMode为KernelMode  
而有些Nt*没导出 所以直接调用的话需要先定位其地址
2010-2-8 10:59
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
NTXXX是棘突实现
ZWXXX模拟R3 到R0的过程
你在R0 可以直接调用导出的NTXXX但是要先声明
没有导出的只有定位了
2010-2-8 11:09
0
游客
登录 | 注册 方可回帖
返回
//