新的网站设计公司,怎么做网站链接,企业网站模板seo,阜新做网站今天看核心编程#xff0c;看到他说的伪句柄#xff0c;着实有些迷糊#xff0c;上网上查查#xff0c;也说的是云里雾里的#xff0c;所以我就去看看 MICROSOFT的MSDN#xff0c;他们也是遮遮掩掩的#xff0c;没有办法我就只有靠一些调试工具来解决了。 从MSDN上…今天看核心编程看到他说的伪句柄着实有些迷糊上网上查查也说的是云里雾里的所以我就去看看 MICROSOFT的MSDN他们也是遮遮掩掩的没有办法我就只有靠一些调试工具来解决了。 从MSDN上我们知道象GETCURRENTPROCESSGETCURRENTTHREAD都是在KERNEL32中所以我用了 OLLYDBG加载了这DLL文件从中我们可以执行单个文件恩返回值和应用程序中返回的一致象这种情况 如果我想的不错的话由于他在脱离进程的情况下也能返回正确的值那他返回的基本上是立即数呵呵我可 不敢绝对话模糊也是一种美吐一个。 现在我们可以证实我们的想法这样很简单应用OLLYDBG给我们提供的功能直接跳到函数的首地址可以看 到GETCURRENTPROCESS的代码是 OR EAX0XFFFFFFFF C3 呵呵这个我想大家都能看懂我们的伪进程句柄献身数值为-1 那么GETCURRENTTHREAD的代码也没有出什么意料之外的情况 PUSH -2 POP EAX C3 恩不错是这样的我们的EAX里是0XFFFFFFFE 所以伪句柄就是一个特定的 数值对于不同的内核对象是强行规定的没有什么可探讨的可探讨之处在于 MICROSOFT为什么这样处理对性能来说这没有什么可挑剔的哈哈。 其实真正的目的可能是没有办法MICRO总是不愿出来澄清一些东西我也不敢MAKE SURE 在本身进程和线程中对句柄没有必要进行权限的限制而在把句柄交由别的进程或别的线程操作时可能就不怎 么放心一般要加上权限限制这样就可以减少意外情况的发生。 至于伪句柄和真实句柄之间的转换和权限限制可以参考DUMPLICATEHANDLE如果你对以上说明感到怀疑可 以直接用进程和线程的数值代替看看结果。 注意HANDLE的定义 typedef void * HANDLE; HANDLE hproc0xFFFFFFFF; HANDLE hthre0xFFFFFFFE; 网址http://blog.csdn.net/ouyang2008/archive/2006/08/02/1009760.aspx