著录项信息
专利名称 | 一种进程行为控制的方法和装置 |
申请号 | CN201210316977.5 | 申请日期 | 2012-08-30 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-01-23 | 公开/公告号 | CN102890641A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/46 | IPC分类号 | G;0;6;F;9;/;4;6;;;G;0;6;F;2;1;/;5;2查看分类表>
|
申请人 | 北京奇虎科技有限公司;奇智软件(北京)有限公司 | 申请人地址 | 北京市西城区新街口外大街28号D座112室(德胜园区)
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京奇虎科技有限公司,奇智软件(北京)有限公司 | 当前权利人 | 北京奇虎科技有限公司,奇智软件(北京)有限公司 |
发明人 | 董杰;张晓霖 |
代理机构 | 北京润泽恒知识产权代理有限公司 | 代理人 | 赵娟 |
摘要
本发明公开了一种进程行为控制的方法和装置,其中所述方法包括:在检测到键盘输入或按键输入行为时,底层驱动拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;底层驱动将所述与消息钩子关联的进程的信息发送至应用层;底层驱动阻止或允许所述与消息钩子关联进程触发的行为;应用层依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为,并将判断结果通知底层驱动;底层驱动根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作。本发明可以在拦截消息钩子对回调函数的调用时,保证系统的稳定性。
1.一种进程行为控制的方法,包括:
在检测到键盘输入或按键输入行为时,底层驱动拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;
底层驱动将所述与消息钩子关联的进程的信息发送至应用层;
底层驱动阻止或允许所述与消息钩子关联进程触发的行为;
应用层依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为,并将判断结果通知底层驱动;其中,所述应用层判断是否阻止或允许对应进程触发的行为的判断结果,依据向用户显示与消息钩子关联的进程的信息,接收用户选择的阻止或允许该进程触发行为的信息生成;
在所述相应进程的行为再次被触发时,底层驱动根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作;
其中,所述底层驱动阻止或允许所述与消息钩子关联进程触发的行为的步骤包括:
底层驱动按照预设规则阻止或允许所述与消息钩子关联进程触发的行为;
或者,
应用层按照预设的黑白名单规则生成阻止或允许所述与消息钩子关联进程触发的行为的信息,并发送至底层驱动;
底层驱动依据所述信息阻止或允许对应进程触发的行为。
2.如权利要求1所述的方法,所述底层驱动根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作的步骤包括:
底层驱动根据应用层的判断结果记录相关规则,所述相关规则包括:
在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;
在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;
底层驱动根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:
底层驱动根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;
底层驱动根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。
3.一种进程行为控制的装置,包括:
位于底层驱动的拦截模块,用于在检测到键盘输入或按键输入行为时,拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;
位于底层驱动的发送模块,用于将所述与消息钩子关联的进程的信息发送至应用层;
位于底层驱动的第一执行模块,用于阻止或允许所述与消息钩子关联进程触发的行为;
位于应用层的判断模块,用于依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为,并将判断结果通知底层驱动;其中,所述应用层判断是否阻止或允许对应进程触发的行为的判断结果,依据向用户显示与消息钩子关联的进程的信息,接收用户选择的阻止或允许该进程触发行为的信息生成;
位于底层驱动的第二执行模块,用于在所述相应进程的行为再次被触发时,根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作;
其中,所述位于底层驱动的第一执行模块包括:
位于应用层的判断信息生成子模块,用于按照预设的黑白名单规则生成阻止或允许所述与消息钩子关联进程触发的行为的信息,并发送至底层驱动;
位于底层驱动的第一执行子模块,用于依据所述信息阻止或允许对应进程触发的行为;
或者,
所述位于底层驱动的第一执行模块还用于执行如下操作:底层驱动按照预设规则阻止或允许所述与消息钩子关联进程触发的行为。
4.如权利要求3所述的装置,所述位于底层驱动的第二执行模块包括:
位于底层驱动的规则记录子模块,用于根据应用层的判断结果记录相关规则,所述相关规则包括:
在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;
在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;
位于底层驱动的第二执行子模块,用于根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:
底层驱动根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;
底层驱动根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。
5.一种进程行为控制的底层驱动系统,包括:
拦截模块,用于在检测到键盘输入或按键输入行为时,拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;
发送模块,用于将所述与消息钩子关联的进程的信息发送至应用层;
第一执行模块,用于阻止或允许所述与消息钩子关联进程触发的行为;
判断结果接收模块,用于接收应用层的判断结果,所述判断结果为应用层依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为的判断结果;其中,所述应用层判断是否阻止或允许对应进程触发的行为的判断结果,依据向用户显示与消息钩子关联的进程的信息,接收用户选择的阻止或允许该进程触发行为的信息生成;
第二执行模块,用于在所述相应进程的行为再次被触发时,根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作;
其中,所述第一执行模块包括:
信息接收子模块,用于接收应用层按照预设的黑白名单规则生成的阻止或允许所述与消息钩子关联进程触发的行为的信息;
第一执行子模块,用于依据所述信息阻止或允许对应进程触发的行为;
或者,
所述第一执行模块还用于执行如下操作:底层驱动按照预设规则阻止或允许所述与消息钩子关联进程触发的行为。
6.如权利要求5所述的底层驱动系统,所述第二执行模块包括:
规则记录子模块,用于根据应用层的判断结果记录相关规则,所述相关规则包括:
在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;
在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;
第二执行子模块,用于根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:
根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;
根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。
一种进程行为控制的方法和装置\n技术领域\n[0001] 本发明涉及计算机设备安全的领域,具体涉及一种进程行为控制的方法,以及,一种进程行为控制的装置,以及,一种进程行为控制的底层驱动系统。\n背景技术\n[0002] Windows操作系统的广泛应用导致其成为了遭受恶意软件攻击最严重的操作系统,它的安全性问题成为了用户及计算机安全研究人员关注的焦点。\n[0003] 恶意软件是指在计算机系统上执行恶意任务的病毒、蠕虫和特洛伊木马。恶意软件最常用的实现技术是钩子技术,通过使用钩子技术,恶意软件可以改变操作系统正常的执行路径,从而破坏系统或者窃取用户信息。\n[0004] 目前,常用的一种防护做法是通过对在Windows操作系统下的钩子的检测来实现对恶意软件的防护设计。Windows操作系统下的钩子通过调用回调函数来完成对系统的回调,因此,拦截对回调函数的调用就能获取钩子的进程信息,但是,对钩子回调函数的调用的拦截处理不在很容易引起系统的卡死。\n[0005] 因此,本领域技术人员迫切需要解决的技术问题是:在拦截消息钩子对回调函数的调用时,如何保证系统的稳定性。\n发明内容\n[0006] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种进程行为控制的方法和相应的一种进程行为控制的装置,以及相应的一种进程行为控制的底层驱动系统。\n[0007] 依据本发明的一个方面,提供了一种进程行为控制的方法,包括:\n[0008] 在检测到键盘输入或按键输入行为时,底层驱动拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;\n[0009] 底层驱动将所述与消息钩子关联的进程的信息发送至应用层;\n[0010] 底层驱动阻止或允许所述与消息钩子关联进程触发的行为;\n[0011] 应用层依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为,并将判断结果通知底层驱动;\n[0012] 底层驱动根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作。可选地,所述底层驱动阻止或允许所述与消息钩子关联进程触发的行为的步骤包括:\n[0013] 应用层生成阻止或允许所述与消息钩子关联进程触发的行为的信息,并发送至底层驱动;\n[0014] 底层驱动依据所述信息阻止或允许对应进程触发的行为。\n[0015] 可选地,所述底层驱动根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作的步骤包括:\n[0016] 底层驱动根据应用层的判断结果记录相关规则,所述相关规则包括:\n[0017] 在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;\n[0018] 在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;\n[0019] 底层驱动根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:\n[0020] 底层驱动根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;\n[0021] 底层驱动根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。\n[0022] 可选地,所述应用层判断是否阻止或允许对应进程触发的行为的判断结果,依据向用户显示与消息钩子关联的进程的信息,接收用户选择的阻止或允许该进程触发行为的信息生成。\n[0023] 根据本发明的另一方面,提供了一种进程行为控制的装置,包括:\n[0024] 位于底层驱动的拦截模块,用于在检测到键盘输入或按键输入行为时,拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;\n[0025] 位于底层驱动的发送模块,用于将所述与消息钩子关联的进程的信息发送至应用层;\n[0026] 位于底层驱动的第一执行模块,用于阻止或允许所述与消息钩子关联进程触发的行为;\n[0027] 位于应用层的判断模块,用于依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为,并将判断结果通知底层驱动;\n[0028] 位于底层驱动的第二执行模块,用于根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作。\n[0029] 可选地,所述位于底层驱动的第一执行模块包括:\n[0030] 位于应用层的判断信息生成子模块,用于生成阻止或允许所述与消息钩子关联进程触发的行为的信息,并发送至底层驱动;\n[0031] 位于底层驱动的第一执行子模块,用于依据所述信息阻止或允许对应进程触发的行为。\n[0032] 可选地,所述位于底层驱动的第二执行模块包括:\n[0033] 位于底层驱动的规则记录子模块,用于根据应用层的判断结果记录相关规则,所述相关规则包括:\n[0034] 在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;\n[0035] 在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;\n[0036] 位于底层驱动的第二执行子模块,用于根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:\n[0037] 底层驱动根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;\n[0038] 底层驱动根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。\n[0039] 根据本发明的另一方面,提供了一种进程行为控制的底层驱动系统,包括:\n[0040] 拦截模块,用于在检测到键盘输入或按键输入行为时,拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;\n[0041] 发送模块,用于将所述与消息钩子关联的进程的信息发送至应用层;\n[0042] 第一执行模块,用于阻止或允许所述与消息钩子关联进程触发的行为;\n[0043] 判断结果接收模块,用于接收应用层的判断结果,所述判断结果为应用层依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为的判断结果;\n[0044] 第二执行模块,用于根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作。\n[0045] 可选地,所述第一执行模块包括:\n[0046] 信息接收子模块,用于接收应用层生成的阻止或允许所述与消息钩子关联进程触发的行为的信息;\n[0047] 第一执行子模块,用于依据所述信息阻止或允许对应进程触发的行为。\n[0048] 可选地,所述第二执行模块包括:\n[0049] 规则记录子模块,用于根据应用层的判断结果记录相关规则,所述相关规则包括:\n[0050] 在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;\n[0051] 在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;\n[0052] 第二执行子模块,用于根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:\n[0053] 根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;\n[0054] 根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。\n[0055] 根据本发明的一种进程行为控制机制可以正常拦截由消息钩子产生的对回调函数的调用,使应用层可以在判断过程中使用消息机制,避免由此带来的系统暂时或永久卡死的情况,通过对消息钩子所引发的回调函数的调用拦截时进行特殊处理,即在拦截到需要应用层处理的消息时,底层驱动直接放行(或阻止)后再通知应用层处理,或者,通知应用层后应用层如果需要用到系统消息机制,在使用任何消息机制的调用之前先行通知允许还是阻止对应进程触发的行为。然后在经过应用层充分的自动判断或询问用户后再再次通知驱动记录相关规则。这样能保证对恶意软件的准确识别而系统不出现任何意外情况,从而保证了系统的稳定性,以及,用户设备运行的安全性和稳定性。\n[0056] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。\n附图说明\n[0057] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:\n[0058] 图1示出了根据本发明一个实施例的一种进程行为控制的方法实施例1的步骤流程图;\n[0059] 图2示出了根据本发明一个实施例的一种进程行为控制的方法实施例2的步骤流程图;\n[0060] 图3示出了根据本发明一个实施例的一种进程行为控制的装置实施例的结构框图;\n[0061] 图4示出了根据本发明一个实施例的一种进程行为控制的底层驱动系统实施例的结构框图。\n具体实施方式\n[0062] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应在理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。\n[0063] 本发明实施例的核心构思之一在于,对消息钩子所引发的回调函数的调用拦截时进行特殊处理,即在拦截到需要应用层处理的消息时,底层驱动直接放行(或阻止)后再通知应用层处理,或者,通知应用层后应用层如果需要用到系统消息机制,在使用任何消息机制的调用之前先行通知允许还是阻止对应进程触发的行为。然后在经过应用层充分的自动判断或询问用户后再再次通知驱动记录相关规则。这样可以在判断过程中使用消息机制,避免由此带来的系统暂时或永久卡死。\n[0064] 参照图1,示出了根据本发明一个实施例的一种进程行为控制的方法实施例1的步骤流程图,具体可以包括以下步骤:\n[0065] 步骤101:在检测到键盘输入或按键输入行为时,底层驱动拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;\n[0066] 在一个程序空间内,钩子到底是怎样起作用的,这个要从Windows系统的消息机制说起。Windows是一个以消息为导向的系统,通过消息机制来管理交互,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息,消息队列的特点是先进先出,这种机制可以实现一种异步的需求响应过程。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。消息循环目的就是将内核层和应用层结合在一起。内核层的任何变化会在某个单独的应用层程序反应出来,同时应用层的操作也能影响内核层。\n[0067] 钩子是Windows的消息处理机制中提供的一个监视点,可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。\n[0068] 根据钩子处理消息的作用范围不同,Windows所提供的钩子可以分为两种类型:\n一是局部钩子,二是远程钩子。局部钩子仅能够监控属于自身的事件,而远程钩子不仅可以监控自己进程中的事件,还可以用来钩挂其它进程中发生的事件。另外,远程钩子也有两种类型:其一是基于线程的,其二是基于系统的。基于线程的远程钩子是为了捕捉其它进程中某一特定线程的事件而设计的,而系统范围的远程钩子将捕捉系统中所有进程中发生的事件消息钩子。\n[0069] 实际上,所述消息钩子可以包括Journal Record钩子,消息钩子JournalRecord,用来记录发送给系统消息队列的所有消息,只能用作全局钩子。\n[0070] 系统所有的消息钩子对应用层的回调都是利用调用回调函数完成的,回调函数被调用时处于该监测到的键盘输入或按键输入行为的进程中。\n[0071] 本发明描述了处理拦截到的消息钩子产生的对回调函数的调用的过程,所述回调函数可以包括KeUserModeCallback函数,或者,比KeUserModeCallback更底层的其他函数等,本发明对此不作限制。\n[0072] 步骤102:底层驱动将所述与消息钩子关联的进程的信息发送至应用层;\n[0073] 其中,与所述消息钩子关联的进程是指与消息钩子关联的触发当前键盘输入或按键输入行为的进程,所述与消息钩子关联的进程的信息包括消息钩子关联的进程的路径。\n[0074] 步骤103:底层驱动阻止或允许所述与消息钩子关联进程触发的行为;\n[0075] 在Windows操作系统中,消息钩子对回调函数的调用由底层驱动拦截,由于底层驱动拦截到消息钩子对回调函数的调用后,会将与消息钩子关联的进程的信息发送至应用层并等待应用层的判断结果,底层驱动在等待应用层判断是否阻止或允许对应进程触发的行为的过程中,如果进行判断的应用层线程需要使用Windows操作系统的消息机制(比如显示一个窗口或发一个消息给任何窗口),此时,由于消息钩子对回调函数的调用阻塞(使其进入等待或睡眠状态),无法给操作系统一个及时的回调,而系统在没有等到回调前无法进行其他消息的处理,使整个系统的消息处理阻塞,从而导致系统卡死。\n[0076] 为了避免上述情况的发生,底层驱动拦截消息钩子对回调函数的调用后,可以直接阻止或允许所述与消息钩子关联进程触发的行为,这样就不会因为长时间等待应用层的判断结果而使系统中的其他消息无法处理。\n[0077] 作为本实施例的一种优选示例,底层驱动可以按照预设规则阻止或允许所述与消息钩子关联进程触发的行为,所述预设规则为全部阻止或者允许所述与消息钩子关联的进程触发的行为。\n[0078] 步骤104:应用层依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为,并将判断结果通知底层驱动。\n[0079] 由于在步骤103中,底层驱动已先行阻止或允许所述与消息钩子关联进程触发的行为,此时,应用层因没有底层驱动的等待而可以有充分的时间对与消息钩子关联的进程的信息进行判断,判断是否阻止或允许对应进程触发的行为。\n[0080] 作为本实施例的一种优选示例,应用层判断是否阻止或允许对应进程触发的行为的判断结果,可以依据向用户显示与消息钩子关联的进程的信息(例如,显示窗口的形式),接收用户选择的阻止或允许该进程触发行为的信息生成;\n[0081] 在用户选择是阻止该进程触发的行为的信息,应用层判断为阻止对应进程触发的行为,并将阻止对应进程触发的行为的判断结果通知底层驱动;\n[0082] 在用户选择是允许该进程触发的行为的信息,应用层判断为允许对应进程触发的行为,并将允许对应进程触发的行为的判断结果通知底层驱动。\n[0083] 步骤105:底层驱动根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作;\n[0084] 在本发明的一种优选实施例中,所述步骤105可以包括如下子步骤:\n[0085] 子步骤S11:底层驱动根据应用层的判断结果记录相关规则,所述相关规则包括:\n[0086] 在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;\n[0087] 在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;\n[0088] 子步骤S12:底层驱动根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:\n[0089] 底层驱动根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;\n[0090] 底层驱动根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。\n[0091] 需要说明的是,在步骤104中应用层经过充分判断是否阻止或允许对应进程触发的行为后,应用层将判断结果发送至底层驱动,底层驱动根据应用层的判断结果记录相关阻止或允许对应进程触发的行为的规则,所述相关规则一旦被记录,在所述相应进程的行为再次被触发时,底层驱动可以根据该相关规则执行相应的阻止或允许操作。例如:若相关规则为阻止对应进程触发的行为的规则,在用户再键入消息时,底层驱动对该消息进程触发的行为按照规则执行阻止操作;若相关规则为允许对应进程触发的行为的规则,在用户再键入消息时,底层驱动对该消息进程触发的行为按照规则执行允许操作。\n[0092] 在应用层的判断结果或用户判断结果改变时,底层驱动根据判断结果再修改相关规则。\n[0093] 实际上,在底层驱动记录相关规则前,底层驱动阻止或允许对应进程触发的行为可以根据具体情况而定,安全性要求高的程序应先执行阻止操作。\n[0094] 参照图2,示出了根据本发明一个实施例的一种进程行为控制的方法实施例2的步骤流程图,具体可以包括以下步骤:\n[0095] 步骤201:在检测到键盘输入或按键输入行为时,底层驱动拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;步骤\n202:底层驱动将所述与消息钩子关联的进程的信息发送至应用层;\n[0096] 其中,与消息钩子关联的进程的信息包括消息钩子关联的进程的路径。\n[0097] 步骤203:底层驱动阻止或允许所述与消息钩子关联进程触发的行为;\n[0098] 在本发明的一种优选实施例中,步骤203可以包括如下子步骤:\n[0099] 子步骤S21:应用层生成阻止或允许所述与消息钩子关联进程触发的行为的信息,并发送至底层驱动;\n[0100] 子步骤S22:底层驱动依据所述信息阻止或允许对应进程触发的行为。\n[0101] 应用层接收到底层驱动发来的与消息钩子关联的进程的信息后,应用层经过判断发现,需要用到Windows系统消息机制,在使用任何消息机制的调用之前先行通知底层驱动允许或阻止与消息钩子关联的进程触发的行为。\n[0102] 实际上,应用层在使用任何消息机制的调用之前可以按照预设规则先行通知底层驱动允许或阻止与消息钩子关联的进程的触发行为,其中,预设规则可以为对底层驱动发来的与消息钩子关联的进程的行为设置的全部阻止或者全部允许的规则。\n[0103] 作为本发明具体应用的另一种示例,应用层在使用任何消息机制的调用之前可以按照预设的黑白名单规则先行通知底层驱动允许或阻止与消息钩子关联的进程的触发行为,若与消息钩子关联的进程的信息属于预设的白名单,应用层判断为允许对应进程触发的行为。\n[0104] 可以理解,上述应用层在使用任何消息机制的调用之前先行通知底层驱动允许或阻止与消息钩子关联的进程的触发行为的判断方式仅仅用作示例,本领域技术人员依据实际情况采用其它判断方式均是可行的,本发明对此不作限制。\n[0105] 步骤204:应用层依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为,并将判断结果通知底层驱动。\n[0106] 步骤205:底层驱动根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作;\n[0107] 在本发明的一种优选实施例中,所述步骤205可以包括如下子步骤:\n[0108] 子步骤S31:底层驱动根据应用层的判断结果记录相关规则,所述相关规则包括:\n[0109] 在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;\n[0110] 在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;\n[0111] 子步骤S32:底层驱动根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:\n[0112] 底层驱动根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;\n[0113] 底层驱动根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。\n[0114] 本实施例与图1所示实施例相比,两者不同之处在于,图1所示实施例是底层驱动拦截消息钩子对回调函数的调用后,直接阻止或允许所述与消息钩子关联进程触发的行为,而本实施例是底层驱动拦截消息钩子对回调函数的调用后,把信息传递给应用层,让应用层先做判断,然后底层驱动根据应用层的判断结果执行相应的阻止或允许操作。本领域技术人员依据实际情况采用上述任一中方式或者其它判断方式均是可行的,本发明对此不作限制。\n[0115] 对于图2所示的方法实施例而言,由于其与前述方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。\n[0116] 为使本领域技术人员更好地理解本发明,以下通过一个具体应用的实例来对本发明进行说明。\n[0117] 可疑进程通过注册Journal Record消息钩子来监控按键输入,在用户在一个受保护进程中通过键盘输入的时候,底层驱动将会拦截到系统对该钩子回调函数KeUserModeCallback的调用,并将相关信息(可疑进程的路径,在前输入窗口所属进程等)传送给应用层,等待应用层判断是否允许与消息钩子JournalRecord关联的进程的执行。\n[0118] 应用层使用对可疑程序进行检查,发现可疑程序需要通过创建窗口询问用户,这个过程需要用到Windows消息机制,因此下发阻止与消息钩子JournalRecord关联的进程触发的行为的判断结果通知底层驱动,底层驱动中等待中的线程收到通知后阻止消息钩子JournalRecord对回调函数KeUserModeCallback的调用,记录到相关规则中后从KeUserModeCallback回调函数中返回。\n[0119] 然后应用层展示窗口给用户,期间用户又有按键输入,该可疑程序的对键盘的监控都被底层驱动根据规则自动执行阻止操作。\n[0120] 最后用户选择允许此可疑程序监控键盘输入,于是应用层通知底层驱动允许此可疑程序对按键的监控。底层驱动收到应用层的通知后,修改相关规则,以后即可根据规则自动执行对该进程的允许操作。\n[0121] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。\n[0122] 参照图3,示出了根据本发明一个实施例的一种进程行为控制的装置实施例的结构框图,具体可以包括以下模块:\n[0123] 位于底层驱动的拦截模块301,用于在检测到键盘输入或按键输入行为时,拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;\n[0124] 位于底层驱动的发送模块302,用于将所述与消息钩子关联的进程的信息发送至应用层;\n[0125] 其中,与消息钩子关联的进程的信息包括消息钩子关联的进程的路径。\n[0126] 位于底层驱动的第一执行模块303,用于阻止或允许所述与消息钩子关联进程触发的行为;\n[0127] 底层驱动拦截消息钩子对回调函数的调用后,可以直接阻止或允许所述与消息钩子关联进程触发的行为,这样就不用因长时间等待应用层的判断结果而使系统中的其他消息无法处理。\n[0128] 在本发明的另一个优选实施例中,位于底层驱动的第一执行模块303还可以包括如下子模块:\n[0129] 位于应用层的判断信息生成子模块,用于生成阻止或允许所述与消息钩子关联进程触发的行为的信息,并发送至底层驱动;\n[0130] 位于底层驱动的第一执行子模块,用于依据所述信息阻止或允许对应进程触发的行为。\n[0131] 位于应用层的判断模块304,用于依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为,并将判断结果通知底层驱动;\n[0132] 在本发明具体实现的一种示例,所述应用层判断是否阻止或允许对应进程触发的行为的判断结果,依据向用户显示与消息钩子关联的进程的信息,接收用户选择的阻止或允许该进程触发行为的信息生成。\n[0133] 位于底层驱动的第二执行模块305,用于根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作;\n[0134] 在本发明的一种优选实施例中,所述位于底层驱动的第二执行模块205可以包括如下子模块:\n[0135] 位于底层驱动的规则记录子模块,用于根据应用层的判断结果记录相关规则,所述相关规则包括:\n[0136] 在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;\n[0137] 在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;\n[0138] 位于底层驱动的第二执行子模块,用于根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:\n[0139] 底层驱动根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;\n[0140] 底层驱动根据记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。\n[0141] 对于图3所示的装置实施例而言,由于其与前述方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。\n[0142] 参照图4,示出了根据本发明一个实施例的一种进程行为控制的底层驱动系统实施例的结构框图,具体可以包括以下模块:\n[0143] 拦截模块401,用于在检测到键盘输入或按键输入行为时,拦截消息钩子对回调函数的调用;其中,所述消息钩子与触发当前键盘输入或按键输入行为的进程关联;\n[0144] 发送模块402,用于将所述与消息钩子关联的进程的信息发送至应用层;\n[0145] 第一执行模块403,用于阻止或允许所述与消息钩子关联进程触发的行为;\n[0146] 底层驱动拦截消息钩子对回调函数的调用后,可以直接阻止或允许所述与消息钩子关联进程触发的行为,这样就不用因长时间等待应用层的判断结果而使系统中的其他消息无法处理。\n[0147] 在本发明的另一个优选实施例中,第一执行模块403还可以包括如下子模块:\n[0148] 信息接收子模块,用于接收应用层生成的阻止或允许所述与消息钩子关联进程触发的行为的信息;\n[0149] 第一执行子模块,用于依据所述信息阻止或允许对应进程触发的行为。\n[0150] 判断结果接收模块404,用于接收应用层的判断结果,所述判断结果为应用层依据所述与消息钩子关联的进程的信息,判断是否阻止或允许对应进程触发的行为的判断结果。\n[0151] 在本发明具体实现的一种示例,所述应用层判断是否阻止或允许对应进程触发的行为的判断结果,依据向用户显示与消息钩子关联的进程的信息,接收用户选择的阻止或允许该进程触发行为的信息生成。\n[0152] 第二执行模块405,用于根据应用层的判断结果执行相应的阻止或允许对应进程触发的行为的操作;在本发明的一种优选实施例中,所述第二执行模块405可以包括如下子模块:\n[0153] 规则记录子模块,用于根据应用层的判断结果记录相关规则,所述相关规则包括:\n[0154] 在应用层判断为阻止对应进程触发的行为时,底层驱动记录为阻止对应进程触发的行为的规则;\n[0155] 在应用层判断为允许对应进程触发的行为时,底层驱动记录为允许对应进程触发的行为的规则;\n[0156] 第二执行子模块,用于根据所述相关规则执行相应的阻止或允许对应进程触发的行为的操作,所述操作包括:\n[0157] 根据记录为阻止对应进程触发的行为的规则执行阻止对应进程触发的行为的操作;\n[0158] 记录为允许对应进程触发的行为的规则执行允许对应进程触发的行为的操作。\n[0159] 对于图4所示的底层驱动系统实施例而言,由于其与前述方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。\n[0160] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。\n[0161] 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。\n各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应在明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。\n[0162] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。\n[0163] 类似地,应在理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。\n[0164] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。\n[0165] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。\n[0166] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应在理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种进程行为控制的底层驱动系统和一种进程行为控制的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。\n[0167] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适在编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。\n[0168] 以上对本发明所提供的一种拦截函数调用的方法,以及,一种拦截函数调用的装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
法律信息
- 2015-02-11
- 2013-03-06
实质审查的生效
IPC(主分类): G06F 9/46
专利申请号: 201210316977.5
申请日: 2012.08.30
- 2013-01-23
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-11-23
|
2011-07-05
| | |
2
| |
2011-08-10
|
2011-04-18
| | |
3
| |
2011-11-30
|
2010-05-25
| | |
4
| |
2007-01-24
|
2006-07-19
| | |
5
| |
2011-06-01
|
2010-11-18
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |