1.概念:钩子是Windows消息处理机制中的一个监视点,应用程序可以在这里安装一个监视子程序,在消息流到达目的窗口前监控它们。监视函数是一个处理消息的回调函数,也称为“钩子函数”
2.类型:
局部钩子:仅挂钩自身进程的事件
远程钩子:可分为基于线程的和系统范围的,远程钩子的钩子函数必须位于共享数据段的动态链接库中(除日志记录钩子和日志回放钩子外)
具体类型见书P405
3.钩子程序的结构——3个功能模块
① 主程序——用来实现界面或者其他功能
② 钩子回调函数——用来接收系统发过来的消息
③ 钩子的安装和卸载模块
一般情况下,远程钩子,第②、③部分放在动态链接库中;局部钩子的这些模块可以处在同一个可执行文件中。
4.相关函数:
安装钩子:SetWindowsHookEx
卸载钩子:UnhookWindowsHookEx
5.钩子回调函数写法:(不同类型钩子,参数和返回值的定义不同)
HookProc proc dwCode,wParam,lParam
invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam
;处理消息的代码
mov eax,返回值
ret
HookProc endp
6.键盘钩子:参数定义、GetKeyboardState、GetKeyState、ToAscii 详见P412