阅读:1222回复:1
大家好!我又来请教了。关于zwquerykey函数的返回值问题?
zwquerykey在msdn上明明说错误只返回下面这三个:STATUS_BUFFER_OVERFLOW 、STATUS_BUFFER_TOO_SMALL 、STATUS_INVALID_PARAMETER 。为什么regmon的例子用这个函数的返回值ntstatus != STATUS_OBJECT_TYPE_MISMATCH来判断是不是键?问得很低级,大牛们请赐教!
|
|
沙发#
发布于: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
|
|