lovehunterboy
驱动小牛
驱动小牛
  • 注册日期2008-05-29
  • 最后登录2010-04-16
  • 粉丝2
  • 关注0
  • 积分67分
  • 威望463点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1222回复:1

大家好!我又来请教了。关于zwquerykey函数的返回值问题?

楼主#
更多 发布于:2008-08-15 17:42
zwquerykey在msdn上明明说错误只返回下面这三个:STATUS_BUFFER_OVERFLOW 、STATUS_BUFFER_TOO_SMALL 、STATUS_INVALID_PARAMETER 。为什么regmon的例子用这个函数的返回值ntstatus != STATUS_OBJECT_TYPE_MISMATCH来判断是不是键?问得很低级,大牛们请赐教!
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2008-08-20 16:09
regmon中hook的是NtClose,这样截获的不仅仅是reg handle,还有其他各种类型的handle,比如file,evet等等。而regmon只关心reg handle.调用NtQueryKeyi,NtQueryKey内部先会调用ObReferenceObjectByHandle根据handle,获得object,第三个参数object type会传一个CmpKeyObjectType,这样对于不是reg类型的handle,都会直接返回STATUS_OBJECT_TYPE_MISMATCH。这样如果status不等于STATUS_OBJECT_TYPE_MISMATCH,就说明handle是一个reg handle
游客

返回顶部