关于消息钩子链的读取问题说明: NtUserSetWindowsHookEx返回的HHOOK怎么换成PHOOK

本文介绍了如何将NtUserSetWindowsHookEx返回的HHOOK转换为PHOOK。关键在于找到win32k SSDT中NtUserUnhookWindowsHookEx的函数入口,调用HMValidateHandle@8地址实现转换。提供了一个汇编代码示例来演示转换过程。
摘要由CSDN通过智能技术生成

不少人问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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值