首页
社区
课程
招聘
[求助]KPROCESSOR_MODE中KernelMode和UserMode的区别
发表于: 2013-6-6 19:47 5501

[求助]KPROCESSOR_MODE中KernelMode和UserMode的区别

2013-6-6 19:47
5501
RT
新人入门,刚才写的东西需要用ObReferneceObjectByHandle
其中有个参数是 KPROCESSOR_MODE
有UserMode和KernelMode两个参数貌似都可以

翻看WDK里面说 底层驱动必须指定为KernelMode
(Lower-level drivers should specify KernelMode.)

我想知道
1:在什么情况下用KernelMode?什么情况下用UserMode?
  比如说根据线程句柄取线程OBJ 根据文件句柄取文件OBJ

2:WDK里面说的底层驱动指的是什么?

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Kernelmode和usermode在使用中的区别主要是:
1.usernode受权限限制,会做权限检查,比如句柄只有process_query_information权限,obreferenobjectbyhandle时用process_terminate,就会返回失败,kernelmode则不检查所以不受限

2.usermode不能访问内核句柄(创建句柄时指定了obj_kernel_handle属性的),kernelmode则可以

更多具体的区别你可以看看源码中的实现

这个模式要准确使用,该用usermode(比如句柄是从用户态传入的,例如hook ssdt,设备通讯传入ring3句柄等)的时候用usermode,该用kernelmode(比如是内核态创建的)的时候用kernelmode,否则会出现功能不正常或安全问题
2013-6-7 10:51
0
游客
登录 | 注册 方可回帖
返回
//