伪句柄

一、什么是伪句柄

在使用很多函数的时候,我们都需要获得一个对象的句柄,而某些函数返回的是伪句柄。伪句柄本身不会打开内核对象的句柄表,因此内核对象的使用计数就不会增加。它本身就只指向调用它的主调进程或线程。会因为调用者的不同而改变,比如:调用者A使用一个伪句柄,这个句柄指向调用者A,而调用者A将该句柄传递给调用者X,则这个句柄就指向调用者X。我们可以通过调试的方式查看伪句柄,可以得知,进程的伪句柄总是0xffffffff,而线程的伪句柄总是0xfffffffe。

通过使用DuplicateHandle这个强大的函数,可以将伪句柄转换为真正的句柄。

PseudoHandleToRealHandle

顺便说说DuplicateHandle这个函数。该函数不仅仅可以使伪句柄转换为真正的句柄,还可以创建一个内核对象句柄的副本,并因此更改副本的某些属性,达到保护内核对象的目的。也可以将一个进程的内核对象句柄复制到另外一个进程的内核对象句柄表中。关于该函数更多的信息,可以参见《Windows via C/C++》。

 

 

 

二、为什么使用伪句柄

    MICROSOFT为什么这样处理,其实真正的目的可能是:在本身进程和线程中,对句柄没有必要进行权限的限制,而在把句柄交由别的进程或别的线程操作时可能就不怎么放心,一般要加上权限限制,这样就可以减少意外情况的发生。
    至于伪句柄和真实句柄之间的转换和权限限制,可以参考DumplicateHandle函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值