首页
社区
课程
招聘
[求助]ZwOpenProcess NtOpenProcess OpenProcess 它们是什么关系
发表于: 2016-11-16 23:30 8743

[求助]ZwOpenProcess NtOpenProcess OpenProcess 它们是什么关系

2016-11-16 23:30
8743
我的理解应该是ZwOpenProcess是最底层的函数,其次NtOpenProcess,最后OpenProcess

ZwOpenProcess 工作在ring0,OpenProcess在ring3,我猜的不知道对不对

如果是的话,如果我Hook ZwOpenProcess,岂不是天下无敌了?任何进程都无法调试我?

还有就是这些函数的地址应该都是固定的吧,如果hook的话,用ark就能查处来?

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
ring3 kernel32!OpenProcess->ntdll!NtOpenProcess->ring0 nt!KiSystemCall64(nt!KiFastCallEntry)->nt!NtOpenProcess->nt!PsOpenProcess->nt!PspOpenProcess->nt!ObOpenObjectByPointer...

你要hook的话,自己玩玩儿可以,做商业软件就不能随便hook 64位系统内核了,否则等着接受微软制裁吧
2016-11-16 23:39
0
雪    币: 34
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
OpenProcess 是ring3 用户层的程序,@轩辕之风 说的对 ,SSDT直接派发给Nt系函数NtOpenProcess ,做驱动开发的时候,微软建议内核开发者使用Zw系列的函数,因为这些函数多了一些参数检查的代码,zwOpenProcess 底层还是调用NtCreateProcess. 你要是会用windbg的话,可以用那个差看一下。若是你写驱动的话,32位驱动不需要签名也能跑,64位的必须要签名,微软可以授权签名(费用很高),或者用第三方签名试试。
2016-11-17 07:57
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢两位,我明白了
2016-11-17 08:45
0
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
进入内核后,SSDT直接派发给Nt系函数,不走Zw。Zw是提供给驱动开发使用的
2016-11-17 11:36
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
在哪里得到这些调用链?
2016-11-17 14:36
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
7
windbg不用谢我
2016-11-17 14:47
0
游客
登录 | 注册 方可回帖
返回
//