不少人问NtUserSetWindowsHookEx返回的HHOOK怎么换成PHOOK,这里说明一下。
主要是找到那个转换函数地址直接调用就是了。
原理:
找到 win32k ssdt的NtUserUnhookWindowsHookEx的函数入口,
直接取@HMValidateHandle@8 的地址
使用方法:
#define GetObjectFromHandle (handle,object)
{
__asm push ecx
__asm push edx
__asm mov ecx,handle
__asm mov dl,5
__asm call @HMValidateHandle@8
__asm mov object,eax
__asm pop edx
__asm pop ecx
}
/
//NtUserUnhookWindowsHookEx的代码
/
.text:A0013B47 ; __stdcall NtUserUnhookWindowsHookEx(x)
.text:A0013B47 _NtUserUnhookWindowsHookEx@4 proc near ; DATA XREF: .data:A016BD34o
.text:A0013B47
.text:A0013B47 arg_0 = dword ptr 8
.text:A0013B47
.text:A0013B47 56 push esi