发明内容
鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的用于检测和清除计算机病毒的方法以及相应的装置。
依据本发明的一个方面,提供了一种用于检测和清除计算机病毒的方法,包括:
检测计算机基本输入输出***,在存在病毒的情况下对其进行清除处理;和/或
检测计算机硬盘的主引导记录,在存在病毒的情况下恢复默认的主引导记录;和/或
检测计算机操作***的驱动层,在存在病毒的情况下禁止加载感染病毒的驱动;和
检测计算机操作***的应用层,在存在病毒的情况下对其进行清除处理。
在本发明的实施例中,在所述检测计算机基本输入输出***的步骤中,基于包含计算机基本输入输出***的病毒的特征码的预先定义的第一病毒数据库,检测计算机基本输入输出***中是否存在病毒。
在本发明的实施例中,在所述检测计算机硬盘的主引导记录的步骤中,基于包含计算机硬盘的主引导记录的病毒的特征码的预先定义的第二病毒数据库,检测计算机硬盘的主引导记录中是否存在Bootkit病毒。
在本发明的实施例中,在所述检测计算机操作***的驱动层的步骤中,基于包含计算机操作***的驱动层的病毒的特征码的预先定义的第三病毒数据库,检测计算机操作***的驱动层中是否存在Rootkit病毒。
在本发明的实施例中,在所述检测计算机操作***的应用层的步骤中,基于包含计算机操作***的应用层的病毒的特征码的预先定义的第四病毒数据库,检测计算机操作***的应用层中是否存在病毒。
在本发明的实施例中,检测是否存在病毒的步骤包括:基于病毒的特征码,对待检测的文件进行定位处理和匹配处理,在待检测的文件与病毒的特征码匹配的情况下,判定该待检测的文件感染了该病毒。
在本发明的实施例中,所述基于包含计算机硬盘的主引导记录的病毒的特征码的预先定义的第二病毒数据库、检测计算机硬盘的主引导记录中是否存在Bootkit病毒的步骤包括:基于所述预先定义的第二病毒数据库,利用启发式检测来检测计算机硬盘的主引导记录中是否存在Bootkit病毒。
在本发明的实施例中,所述预先定义的第一病毒数据库、预先定义的第二病毒数据库、预先定义的第三病毒数据库、预先定义的第四病毒数据库存储于所述计算机本地,并且/或者存储于远程的服务器。
在本发明的实施例中,所述在存在病毒的情况下恢复默认的主引导记录步骤中,利用存储于所述计算机本地或者远程的服务器的默认的主引导记录替换感染病毒的主引导记录。
根据本发明的另一方面,提供了一种用于检测和清除计算机病毒的装置,包括:
第一检测和清除模块,用于检测计算机基本输入输出***,在存在病毒的情况下对其进行清除处理;和/或
第二检测和清除模块,用于检测计算机硬盘的主引导记录,在存在病毒的情况下恢复默认的主引导记录;和/或
第三检测和清除模块,用于检测计算机操作***的驱动层,在存在病毒的情况下禁止加载感染病毒的驱动;和
第四检测和清除模块,用于检测计算机操作***的应用层,在存在病毒的情况下对其进行清除处理。
在本发明的实施例中,所述第一检测和清除模块基于包含计算机基本输入输出***的病毒的特征码的预先定义的第一病毒数据库,检测计算机基本输入输出***中是否存在病毒。
在本发明的实施例中,所述第二检测和清除模块基于包含计算机硬盘的主引导记录的病毒的特征码的预先定义的第二病毒数据库,检测计算机硬盘的主引导记录中是否存在Bootkit病毒。
在本发明的实施例中,所述第三检测和清除模块基于包含计算机操作***的驱动层的病毒的特征码的预先定义的第三病毒数据库,检测计算机操作***的驱动层中是否存在Rootkit病毒。
在本发明的实施例中,所述第四检测和清除模块基于包含计算机操作***的应用层的病毒的特征码的预先定义的第四病毒数据库,检测计算机操作***的应用层中是否存在病毒。
在本发明的实施例中,所述第一检测和清除模块、所述第二检测和清除模块、所述第三检测和清除模块、以及所述第四检测和清除模块基于病毒的特征码,对待检测的文件进行定位处理和匹配处理,在待检测的文件与病毒的特征码匹配的情况下,判定该待检测的文件感染了该病毒。
在本发明的实施例中,所述第二检测和清除模块基于所述预先定义的第二病毒数据库,利用启发式检测来检测计算机硬盘的主引导记录中是否存在Bootkit病毒。
在本发明的实施例中,所述预先定义的第一病毒数据库、预先定义的第二病毒数据库、预先定义的第三病毒数据库、预先定义的第四病毒数据库存储于所述计算机本地,并且/或者存储于远程的服务器。
在本发明的实施例中,所述第二检测和清除模块利用存储于所述计算机本地或者远程的服务器的默认的主引导记录替换感染病毒的主引导记录。
根据本发明的又一方面,还提供了一种用于检测和清除计算机病毒的***,包括上述用于检测和清除计算机病毒的装置、以及存储于所述计算机本地并且/或者存储于远程的服务器中的预先定义的病毒数据库,所述预先定义的病毒数据库包括上述预先定义的第一病毒数据库、预先定义的第二病毒数据库、以及预先定义的第三病毒数据库中的一个或者多个,并且包括上述预先定义的第四病毒数据库。
本发明提供了一种用于检测和清除计算机病毒的方法和装置。根据本发明的实施例,采用计算机基本输入输出***→硬盘主引导记录→操作***驱动层→操作***应用层的多层检测和清除方式,从底层开始对病毒进行检测和清除处理,可以确保彻底清除存在于各层中的病毒,克服了现有的病毒查杀方式中存在的无法清除基本输入输出***中的病毒—病毒无限回写硬盘主引导记录、无法清除硬盘主引导记录中的病毒—病毒在计算机重新启动之后复活、无法清除驱动层中的病毒—加载感染病毒的驱动的缺陷,极大地提高了检测和清除计算机病毒的能力,保证了计算机***的安全。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在下文中,将所有类型的计算机病毒(包括一般感染性病毒、Word和Excel宏病毒、引导区病毒、脚本病毒、木马、后门程序、键盘记录器、密码盗取者等等)统称为“计算机病毒”,以方便描述。本领域技术人员应理解,下文中的“计算机病毒”可以是任何形式的计算机病毒。
图1是根据本发明的实施例的用于检测和清除计算机病毒的方法的流程图。如图1所示,在根据本发明的实施例的用于检测和清除计算机病毒的方法100中,一开始,执行步骤S101:检测计算机基本输入输出***,在存在病毒的情况下对其进行清除处理;接着,执行步骤S103:检测计算机硬盘的主引导记录,在存在病毒的情况下恢复默认的主引导记录;然后,执行步骤S105:检测计算机操作***的驱动层,在存在病毒的情况下禁止加载感染病毒的驱动;最后,执行步骤S107:检测计算机操作***的应用层,在存在病毒的情况下对其进行清除处理。
针对不同类型的计算机病毒,根据本发明的实施例的用于检测和清除计算机病毒的方法100可以包含不同的步骤,具体来说,所述方法100可以包括步骤S101、S103、S105中的一个、两个、或者三个,并且包括步骤S107。例如,对于BMW病毒,由于其感染计算机的基本输入输出***、计算机硬盘的主引导记录、计算机操作***的驱动层以及应用层,因此需要执行所述方法100中的全部四个步骤:S101、S103、S105、以及S107,参见图2,其中示出了BMW病毒的感染原理;而对于鬼影系列病毒,由于其感染计算机硬盘的主引导记录、计算机操作***的驱动层以及应用层,因此需要执行所述方法100中的三个步骤S103、S105、以及S107。本领域技术人员可以根据实际需要,选择执行根据本发明的实施例的方法100中的步骤S101、S103、S105中的一个或多个,并且执行步骤S107,以对于特定计算机病毒进行检测和清除。
根据本发明的实施例,可以选择执行步骤S101,其中,检测计算机基本输入输出***,在存在病毒的情况下对其进行清除处理。其中,可选地,可以基于预先定义的第一病毒数据库,检测计算机基本输入输出***中是否存在病毒。所述预先定义的第一病毒数据库可以包含已知的针对计算机基本输入输出***的病毒的特征码。在检测过程中,可以基于上述已知的病毒的特征码,对于基本输入输出***中的文件进行特征码的定位处理和匹配处理,在所检测的文件与已知的病毒的特征码匹配的情况下,将其判定为感染了该病毒,并对于进行清除处理。例如,对于BMW病毒,计算机基本输入输出***中就会存在例如图3中所示的HOOK.ROM文件,需要对其进行清除处理。图3示出了Award基本输入输出***编辑器的界面,在编辑器中,可以在基本输入输出***的ISA ROMs部分发现HOOK.ROM文件的相关信息。
根据本发明的实施例,所述清除处理可以包括以下的一个或多个处理:删除所述含病毒文件,即对于含病毒文件进行直接删除;修改所述含病毒文件的入口点地址,例如修改含病毒的可移植执行文件的入口点地址;向所述含病毒文件的特定区域写入数据块,即对特定区域进行数据块填充;在所述含病毒文件内复制数据块;删除所述含病毒文件的特定文件节,并对所述含病毒文件的格式进行调整,例如删除含病毒的可移植执行文件中制定的文件节,并对该文件的格式进行相应的调整;删除所述含病毒文件头部和/或尾部的特定大小的数据;设置所述含病毒文件的大小。
在对基本输入输出***中的病毒进行清除处理后,就可以阻止该病毒无限回写硬盘主引导记录,避免更换硬盘也无法彻底清除该病毒的现象发生。
接下来,可以选择执行步骤S103,其中,检测计算机硬盘的主引导记录,在存在病毒的情况下恢复默认的主引导记录。根据本发明的实施例,所述主引导记录中的病毒可能是Bootkit病毒,可以基于预先定义的第二病毒数据库,检测计算机硬盘的主引导记录中是否存在Bootkit病毒。在存在病毒的情况下,可以利用存储于所述计算机本地或者远程的服务器的默认的主引导记录替换感染病毒的主引导记录。所述预先定义的第二病毒数据库可以包含已知的针对硬盘的主引导记录的病毒的特征码。举例而言,鬼影6病毒在主引导记录中的特征码如下:
BMW木马在主引导记录中的特征码为:
在检测过程中,可以基于上述已知的病毒的特征码,对于硬盘的主引导记录中的文件进行特征码的定位处理和匹配处理,在所检测的文件与已知的病毒的特征码匹配的情况下,将其判定为感染了该病毒,另外,还可以采用本领域中已知的启发式的病毒检测方法。而所述存储于所述计算机本地或者远程的服务器的默认的主引导记录是未被病毒感染的、“干净的”主引导记录。这样,就可以阻止主引导记录中的病毒在计算机重新启动之后复活。
然后,可以选择执行步骤S 105,其中,检测计算机操作***的驱动层(Ring0),在存在病毒的情况下禁止加载感染病毒的驱动。根据本发明的实施例,驱动层中的病毒可能是Rootkit病毒,可以基于预先定义的第三病毒数据库,检测计算机操作***的驱动层中是否存在Rootkit病毒。
所述预先定义的第三病毒数据库可以包含已知的针对驱动层的病毒的特征码,例如病毒的内存特征。例如,TDL4病毒的内存特征为隐藏其名称信息和路径信息,BMW病毒的内存特征为利用磁盘钩子(disk hook)指向虚假的路径。在检测过程中,可以基于上述已知的病毒的特征码,对于驱动层中的文件进行特征码的定位处理和匹配处理,在所检测的文件与已知的病毒的特征码匹配的情况下,将其判定为感染了该病毒,此时,可以采用驱动灭活技术,利用钩子控制感染病毒的驱动,禁止加载感染病毒的驱动,以防止感染病毒的驱动干扰甚至阻止计算机病毒检测和清除方法的正常执行。
最后,执行步骤S107,其中,检测计算机操作***的应用层(Ring3),在存在病毒的情况下对其进行清除处理。根据本发明的实施例,可以基于预先定义的第四病毒数据库,检测计算机操作***的应用层中是否存在病毒。所述预先定义的第四病毒数据库可以包含已知的针对计算机操作***的应用层的病毒的特征码。在检测过程中,可以基于上述已知的病毒的特征码,对于应用层中的文件进行特征码的定位处理和匹配处理,在所检测的文件与已知的病毒的特征码匹配的情况下,将其判定为感染了该病毒,并对于进行清除处理。根据本发明的实施例,所述清除处理可以包括上面针对步骤S101中的描述中提及的一个或多个处理,在此不再重复描述。
举例而言,可以利用常规特征查杀(包括文件和注册表检查),将待检测文件的程序特征与病毒的MD5(Message-Digest Algorithm 5,信息-摘要算法)特征进行匹配。上述程序特征可以是经由MD5运算得出的MD5验证码、或SHA1码、或CRC(Cyclic Redundancy Check,循环冗余校验)码等可唯一标识原程序的特征码。例如,如果文件的程序特征与所述预先定义的第四病毒数据库的黑/白名单中的已知程序特征相同,则将该程序特征及其程序行为都列入黑/白名单;如果文件的程序行为与黑/白名单中的已知程序行为相同或近似,则将该未知程序行为及其程序特征都列入黑/白名单。被列入黑名单的文件即被判定为感染了病毒。
根据本发明的实施例,上述预先定义的第一病毒数据库、预先定义的第二病毒数据库、预先定义的第三病毒数据库、预先定义的第四病毒数据库可以存储于所述计算机本地,或者可以存储于远程的服务器,也可以即存储于计算机本地、又同时存储于远程服务器中。当上述预先定义的病毒数据库存储于远程服务器中时,可以采用本领域已知的云查询的方式对于计算机病毒进行检测和清除处理。
本发明提供了一种用于检测和清除计算机病毒的方法。根据本发明的实施例,采用计算机基本输入输出***→硬盘主引导记录→操作***驱动层→操作***应用层的多层检测和清除方式,从底层开始对病毒进行检测和清除处理,可以确保彻底清除存在于各层中的病毒,克服了现有的病毒查杀方式中存在的无法清除基本输入输出***中的病毒—病毒无限回写硬盘主引导记录、无法清除硬盘主引导记录中的病毒—病毒在计算机重新启动之后复活、无法清除驱动层中的病毒—加载感染病毒的驱动的缺陷,极大地提高了检测和清除计算机病毒的能力,保证了计算机***的安全。
本发明可以被引入云安全架构,将所有“云安全”客户端与“云安全”服务器实时连接,客户端不断采集上报更新,在服务器端组成一庞大的病毒(恶意程序)数据库,并将主动防御的分析比对操作放在服务器端完成,从而使整个云安全网络成为一主动防御工具;针对具有威胁的程序行为进行收集并保存在服务器的数据库中,在服务器端进行病毒(恶意软件)分析时支持直接使用程序行为进行病毒(恶意程序)判定。
与上述的方法100相对应,本发明还提供了一种用于检测和清除计算机病毒的装置200,参见图4,该装置200包括:
第一检测和清除模块201,用于检测计算机基本输入输出***,在存在病毒的情况下对其进行清除处理,其可以用于执行上述方法100中的步骤S101;和/或
第二检测和清除模块203,用于检测计算机硬盘的主引导记录,在存在病毒的情况下恢复默认的主引导记录,其可以用于执行上述方法100中的步骤S103;和/或
第三检测和清除模块205,用于检测计算机操作***的驱动层,在存在病毒的情况下禁止加载感染病毒的驱动,其可以用于执行上述方法100中的步骤S105;和
第四检测和清除模块207,用于检测计算机操作***的应用层,在存在病毒的情况下对其进行清除处理,其可以用于执行上述方法100中的步骤S107。
与上述方法100的情况类似,根据实际需要,所述装置200可以包括第一检测和清除模块201、第二检测和清除模块203、第三检测和清除模块205中的一个或多个,并且包括第四检测和清除模块207。
在本发明的实施例中,所述第一检测和清除模块201基于包含计算机基本输入输出***的病毒的特征码的预先定义的第一病毒数据库,检测计算机基本输入输出***中是否存在病毒。
在本发明的实施例中,所述第二检测和清除模块203基于包含计算机硬盘的主引导记录的病毒的特征码的预先定义的第二病毒数据库,检测计算机硬盘的主引导记录中是否存在Bootkit病毒。
在本发明的实施例中,所述第三检测和清除模块205基于包含计算机操作***的驱动层的病毒的特征码的预先定义的第三病毒数据库,检测计算机操作***的驱动层中是否存在Rootkit病毒。
在本发明的实施例中,所述第四检测和清除模块207基于包含计算机操作***的应用层的病毒的特征码的预先定义的第四病毒数据库,检测计算机操作***的应用层中是否存在病毒。
在本发明的实施例中,所述第一检测和清除模块201、所述第二检测和清除模块203、所述第三检测和清除模块205、以及所述第四检测和清除模块207基于病毒的特征码,对待检测的文件进行定位处理和匹配处理,在待检测的文件与病毒的特征码匹配的情况下,判定该待检测的文件感染了该病毒。
在本发明的实施例中,所述第二检测和清除模块203基于所述预先定义的第二病毒数据库,利用启发式检测来检测计算机硬盘的主引导记录中是否存在Bootkit病毒。
在本发明的实施例中,所述预先定义的第一病毒数据库、预先定义的第二病毒数据库、预先定义的第三病毒数据库、预先定义的第四病毒数据库存储于所述计算机本地,并且/或者存储于远程的服务器。
在本发明的实施例中,所述第二检测和清除模块203利用存储于所述计算机本地或者远程的服务器的默认的主引导记录替换感染病毒的主引导记录。
由于上述各装置实施例与前述各方法实施例相对应,因此不再对各装置实施例进行详细描述。
根据本发明的又一方面,还提供了一种用于检测和清除计算机病毒的***,包括上述用于检测和清除计算机病毒的装置200、以及存储于所述计算机本地并且/或者存储于远程的服务器中的预先定义的病毒数据库,所述预先定义的病毒数据库包括上述预先定义的第一病毒数据库、预先定义的第二病毒数据库、以及预先定义的第三病毒数据库中的一个或者多个,并且包括上述预先定义的第四病毒数据库。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的装置中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个装置中。可以把实施例中的若干模块组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者模块中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个装置实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。