认识钩子 HOOK
消息传递机制
- 我们先来学习一下
Windows 消息传递机制
- 当我们在应用程序进行相关操作时,例如:点击鼠标、按下键盘,操作窗口等,操作系统能够感知这一事件,接着把此消息放到系统消息队列,然后到应用程序的消息序列中,应用程序通过
Getmessage
函数取出消息,然后调用DispatchMessage
函数将这条消息调度给操作系统,操作系统会调用在设计窗口类时指定的应用程序窗口对这一消息进行处理 - 处理过程如下图所示
- 在《VC深入详解》一书中,它将钩子过程比喻为警察为了抓逃犯而设置的检查站,基本原理也确实与此类似
- 就是在应用程序将信息传递给操作系统时(图中的 ③ ),对消息进行捕获和过滤,从而阻止消息发送到指定的窗口过程,最终完成对某些消息的屏蔽功能
钩子基础知识
- HOOK(钩子,挂钩)是一种 Windows 平台下实现类似于中断的机制
- HOOK 机制允许应用程序拦截并处理 Windows 消息或指定事件,当指定的消息发出后,HOOK 程序就可以在消息到达目标窗口之前将其捕获,从而得到对消息的控制权,进而可以对该消息进行处理或修改,加入我们所需的功能
- 钩子按使用范围分,可分为 <