h_callwndproc:系统将消息发送到指定窗口之前的“钩子”
h_callwndprocrethooks:消息已经在窗口中处理的“钩子”
h_cbthook:基于计算机培训的“钩子”
h_debughook:差错“钩子”
h_foregroundidlehook:前台空闲窗口“钩子”
h_getmessagehook:接收消息投递的“钩子”
h_journalplaybackhook:回放以前通过wh_journalrecord“钩子”记录的输入消息wh_journalrecordhook:输入消息记录“钩子”
h_keyboardhook:键盘消息“钩子”
h_mk:鼠标消息“钩子”
h_msgfilter:对话框、消息框、菜单或滚动条输入消息“钩子”
h_sysmsgfilterhooks:系统消息“钩子”
h_shellhook:外壳“钩子”
系统为每种类型的钩子维护一个钩子链表。钩子链表是一个指向专门定义的钩子处理回调函数处理程序的指针列表。当一个消息传递发生时,系统按次序接替传递消息给相应的钩子链表中处理程序。不同钩子的处理行为不同,与钩子的类型有关。有些钩子只能监视传递的消息,有些可以修改传递的消息,或者通过钩子链表终止消息的传递,保护系统传递的消息传递到钩子链表中的下一个钩子或目标窗口。
使用一个特殊类型的钩子,系统提供了钩子处理程序模板,并且使用setwikex函数安装处理程序到相应的钩子链表中。钩子处理函数的语法必须如下:lresultcallbackhookprde,wparamwparam,lparamlparam);setwikex函数总是安装一个钩子处理程序到钩子链表的开始处。
当不同类型钩子监视到消息传递事件发生时,系统总是调用钩子链表中最新的处理程序。每个钩子处理程序控制是否把该消息传递给下一个钩子处理程序。钩子处理程序通过调callnexthookex函数来传递消息。
通过对钩子工作原理的描述可以看出,钩子的本质是一个用以处理系统消息或特定事件的回调函数。钩子的种类有多种,每一种钩子负责截获并处理相应的消息。钩子机制允许应用程序截获并处理发往指定窗口的消息或特定事件。在特定的消息发出后,却还没有到达目的窗口前,钩子程序拥有对其控制权,此时的钩子函数除了可以对截获的消息进行各种处理外,甚至还可以强行终止消息的继续传递。
对于多个同类型钩子的,通过setwikex函数最近安装的钩子将被放置于钩子链表的开始,最早安装的钩子则放在最后。在钩子监视的消息出现时,操作系统调用链表开始处的第一个钩子函数进行处理,也就是说最后加入的钩子优先获得控制权,像一个堆栈,后进先出。
三、防范类“证券大盗”木马病毒的解决方案
明白了键盘钩子的技术原理,即“证券大盗”这一类木马病毒的工作原理,就不难发现,对付此类病毒的有效措施是以毒攻毒,以键盘钩子对付键盘监视:即在应用程序中需要键盘输入的时候,应用程序自己创建并安装一个键盘监视钩子,并使其处于钩子链的顶端,这样键盘输入的消息将被自己的钩子处理程序截获。只要在钩子处理程序中不再调用callnexthookex函数,即不把消息传递给下面的钩子,“证券大盗”这类木马病毒就对你的输入信息望洋兴叹了。在实际应用中,以键盘钩子预防键盘监视如何实现,msdn中有比较详细的关于钩子使用说明,当然,这种方案有其局限性,它只对采用这种方案的应用程序本身有效,对系统中其他应用程序无效。所以在此基础上,安装安全证书和下载相关安全补丁是相当重要的!
「每章一句」网络游戏的好处在于大学生能够去学习更多的文化知识。
天才一秒记住御宅屋1234(yzw1234.com)
御宅屋自由小说阅读网