Windows hook技术

hook即钩子技术,它钩取某个特定的事件,然后在默认的事件处理之外,进行一些自定义的处理,感觉这种行为有点类似插桩。。

消息hook

微软为Windows提供了几个消息hook的API,主要是以下三个:

  • SetWindowsHookEx

  • UnhookWindowsHookEx

  • CallNextHookEx

这种hook技术是对Windows消息进行钩取。众所周知,Windows窗口程序是通过消息驱动的,系统维护了一个消息队列,每当窗口发出新的消息时,系统就把这个消息加入消息队列中,对每个窗口的消息都有特定的消息处理程序,来对消息进行响应。消息hook技术就是对这些进行消息进行钩取,它针对某一类消息,钩取消息后去执行自定义的消息处理函数,而非程序原本的处理函数。

SetWindowsHookEx函数是设置钩子,定义如下

HHOOK SetWindowsHookExA(
  int       idHook,
  HOOKPROC  lpfn,
  HINSTANCE hmod,
  DWORD     dwThreadId
);

SetWindowsHookEx函数设置某种消息的控制函数,并指定相关线程。根据钩子的作用范围的不同,可以分为局部钩子和全局钩子,局部钩子仅针对某一线程,而全局钩子则对所有基于消息机制的应用均有效,由于全局钩子需要访问多个进程空间,所以必须作为DLL文件,系统为了成功设置钩子,会将DLL文件加载到对应进程空间中,因此也全局钩子常常作为DLL注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值