监控键盘钩子的装置的制作方法
技术领域:
本发明涉及计算机安全领域,特别涉及一种监视和检测键盘钩子的装置。
背景技术:
钩子(HOOK)的本质是一段用以处理系统消息的程序,通过系统调用, 把它挂入系统。钩子的种类很多,每种钩子可以截获并处理相应的消息,每 当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到 对此消息的控制权。此时钩子函数可以对截获的消息进行加工处理,甚至可 以强制结束消息的传递。
如图1所示,目前,利用钩子行为来获取键盘信息的方式有以下三种 1、通过调用Windows操作系统提供的2个SDK (软件开发包)中应用 程序编程接口 (API)函数Set WindowsHookEx来安装钩子函数,这个函数 的原型是
朋OOK SetWindowsHookEx (int idHook,HOOKPROC lpfii,HINSTANCE hMod,DWORDdwThreadld),其中,第一个参数是钩子的类型;第二个参数
是钩子函数的地址;第三个参数是包含钩子函数的模块句柄;第四个参数指
定监视的线程。如果指定确定的线程,即为线程专用钩子;如果指定为空,
即为全局钩子。其中,全局钩子函数必须包含在DLL (动态链接库)中,而 线程专用钩子还可以包含在可执行文件中。得到控制权的钩子函数在完成对 消息的处理后,如果想要该消息继续传递,那么它必须调用另外一个SDK 中的API函数CallNextHookEx来传递它。钩子函数也可以通过直接返回
TRUE来丢弃该消息,并阻止该消息的传递。
2、 在键盘驱动程序的设备栈中插入键盘驱动程序钩子,如图1所示, 键盘驱动位于应用层win32k!RawI叩utThread和硬件i8042之间。 win32k!RawInputThread总是发一个IRP—MJ—READ的IRP到键盘设备栈 的顶端,等待着来自键盘的数据。当i8042有数据要键盘驱动取走的时候, 就会触发中断,这个中断的中断服务例程是键盘驱动中的函数,于是键盘驱 动就可以从i8042读取数据,经过一系列处理最终完成那个等待的IRP, PS/2 键盘驱动的设备栈有3层,最底层设备对象的驱动是ACPI,中间层设备对 象的驱动是i8042prt,最高层设备对象的驱动是Kbdclass,可以通过在设备 栈中插入设备栈钩子。
3、 通过拦截键盘驱动中断挂钩,当用户按键时,键盘接口会得到一 个代表该按键的键盘扫描码,同时产生一个中断请求。键盘中断服务 程序先从键盘接口取得按键的扫描码,然后根据其扫描码判断用户所 按的键并作相应的处理,最后通知中断控制器本次中断结束并实现中 断返回,在此过程中可以拦截中断,插入钩子。
当一个非法程序在系统中安装了键盘钩子后,就可以通过键盘钩 子将键盘输入信息的传递方向改变,转而执行一个非法的、不安全的 操作,例如,当需要在键盘上输入帐户密码,通过键盘钩子,就可以 知道用户输入的密码,再利用其他软件就能够将该密码传递到远程计 算机上,使得他人得知该用户的密码。
发明内容
本发明所要解决的技术问题监控利用上述方法插入键盘钩子,从而保证 键盘输入信息的安全,实时监视来自网络等其它渠道控制键盘钩子的行为, 并检测枚举系统中的钩子个数和类型。
本发明的目的是通过以下技术方案实现的
一种监控键盘钩子的装置,包括监控模块,设有一个监控单元,其设在
操作系统提供的设置键盘钩子函数和/或设在操作系统中键盘驱动程序中,用 于监控设置键盘钩子的动作。
该装置还包括一个拦截显示单元,该监控单元将调用这些函数或驱动程 序的钩子程序信息传给该拦截显示单元,该拦截显示单元显示这些钩子程序 信息。
该装置还包括一个中断向量表监视单元,其监视中断向量表中键盘中断 向量,获取改变该中断向量的钩子程序信息并传递给该拦截显示单元。
其中,所述钩子程序信息包括钩子程序的名称、类型、图标、安装路径。
所述操作系统为Windows操作系统,所述设置键盘钩子函数为 SetWindowHookEx 。
在键盘驱动程序中的函数ZwCreatDevice设置该监控单元。 另外,该装置还包括检测模块,设有一个检测钩子单元和一个钩子显示 单元,该检测钩子单元检测系统钩子链、系统设备栈和键盘中断向量的地址 来检测系统中存在钩子程序,该钩子显示单元显示检测出的钩子程序的信 息。
本发明的积极进步效果在于能够监控插入键盘钩子的行为,使得用户 能够了解有哪些程序试图获取键盘信息,从而避免非法获取键盘信息,造成 用户的损失。
图1为利用钩子行为来获取键盘信息的方式的示意图。 图2为本发明一实施例的结构框图。
具体实施例方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。 如图2所示, 一种监控键盘钩子的装置,包括监控模块l,设有一个监 控单元10,其设在操作系统提供的设置键盘钩子函数和/或设在操作系统中
键盘驱动程序中,用于监控设置键盘钩子的动作。
在Windows系统下,所述设置键盘钩子函数为SetWindowHookEx,还 可以在键盘驱动程序中的函数ZwCreatDevice设置该监控单元10。
该装置还包括一个拦截显示单元20,该监控单元10将调用这些函数或 驱动程序的钩子程序信息传给该拦截显示单元20,该拦截显示单元显示这些 钩子程序信息。其中,所述钩子程序信息包括钩子程序的名称、类型、图标、 安装路径。该拦截显示单元20是一个在显示设备上显示信息的软件,其为 现有技术。
在具体实现时,监控单元10可以是一个嵌入在键盘钩子函数 SetWindowHookEx或ZwCreatDevice中的软件模块或函数,所有调用此函数 的行为都会被该软件模块拦截,从而实现对键盘钩子的监视。
同理,对于其他的操作系统,同样存在调用键盘的API(应用程序结构), 同样可以在这些API函数中设置监控单元来实现对键盘钩子的监视。根据前 面所述的方法,本领域的一般技术人员就可以实现在其他类型的操作系统中 对键盘钩子的监视。
该装置还包括一个中断向量表监视单元30,其监视中断向量表中键盘中 断向量。该中断向量监视单元30常驻在内存中,定时监视系统中断向量表 (IDT)的第9项,即键盘中断向量,看它的地址是否被改变,当某个钩子 程序试图改变该中断向量所指地址时,该中断向量表监视单元30就获取该 钩子程序信息并传递给该拦截显示单元20,所述钩子程序信息其与前面所述 钩子程序信息相同。
另外,该装置还包括检测模块2,设有一个检测钩子单元40和一个钩子 显示单元50,该检测钩子单元40检测系统中所有安装过的钩子程序,检测 方式包括如下三种通过枚举系统钩子链中的所有钩子进行检测;通过枚举 系统设备栈中设备的方式进行检测;通过检查中断向量表中键盘中断的地 址,由该地址追踪到拥有该地址的驱动程序,从而实现检测。上述三种方式 均为现有技术。
该钩子显示单元50把检测出的系统中所有钩子程序的信息显示出来, 钩子程序信息与前面所述钩子程序信息相同。
这样,用户就可以知道有什么程序正试图安装键盘钩子,系统中己经安 装了哪些键盘钩子,从而使得非法程序不能够获取键盘输入信息,保证键盘 输入信息的安全。
权利要求
1、一种监控键盘钩子的装置,其特征在于,其包括监控模块,设有一个监控单元,其设在操作系统提供的设置键盘钩子函数和/或设在操作系统中键盘驱动程序中,用于监控设置键盘钩子的动作。
2、 根据权利要求1所述的监控键盘钩子的装置,其特征在于,该装置 还包括一个拦截显示单元,该监控单元将调用这些函数或驱动程序的钩子程 序信息传给该拦截显示单元,该拦截显示单元显示这些钩子程序信息。
3、 根据权利要求2所述的监控键盘钩子的装置,其特征在于,该装置 还包括一个中断向量表监视单元,其监视中断向量表中键盘中断向量,获取 改变该中断向量的钩子程序信息并传递给该拦截显示单元。
4、 根据权利要求2或3所述的监控键盘钩子的装置,其特征在于,所 述钩子程序信息包括钩子程序的名称、类型、图标、安装路径。
5、 根据权利要求4所述的监控键盘钩子的装置,其特征在于,所述操 作系统为Windows操作系统,所述设置键盘钩子函数为SetWindowHookEx。
6、 根据权利要求5所述的监控键盘钩子的装置,其特征在于,在键盘 驱动程序中的函数ZwCreatDevice设置该监控单元。
7、 根据权利要求6所述的监控键盘钩子的装置,其特征在于,该装置 还包括检测模块,设有一个检测钩子单元和一个钩子显示单元,该检测钩子 单元检测系统钩子链、系统设备栈和键盘中断向量的地址来检测系统中存在 钩子程序,该钩子显示单元显示检测出的钩子程序的信息。
全文摘要
本发明公开了一种监控键盘钩子的装置,包括监控模块,设有一个监控单元,其设在操作系统提供的设置键盘钩子函数和/或设在操作系统中键盘驱动程序中,用于监控设置键盘钩子的动作。本发明能够监控插入键盘钩子的行为,使得用户能够了解有哪些程序试图获取键盘信息,从而避免非法获取键盘信息,造成用户的损失。
文档编号G06F9/46GK101114323SQ20061002953
公开日2008年1月30日 申请日期2006年7月28日 优先权日2006年7月28日
发明者周军刚, 覃云川 申请人:上海山丽信息安全有限公司
文档序号 :
【 6555660 】
技术研发人员:覃云川,周军刚
技术所有人:上海山丽信息安全有限公司
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
技术研发人员:覃云川,周军刚
技术所有人:上海山丽信息安全有限公司
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除