使用反病毒缓存加速恶意软件检测的系统和方法

文档序号:6435981阅读:177来源:国知局
专利名称:使用反病毒缓存加速恶意软件检测的系统和方法
技术领域
本发明涉及一种使用反病毒缓存来加速计算机恶意软件检测系统的系统,还涉及一种应用对反病毒数据库文件进行缓存来加速计算机恶意软件检测系统的方法。
背景技术
目前,反病毒数据库包含用于反病毒系统操作的必要信息,该信息必须定期用新病毒的定义和其他信息加以补充以应对新型威胁,包括执行数据对象的格式选择及其解压和解码的可执行代码。反病毒数据库都是非常大型的(几十兆字节)。通过下载该数据库的整个新版本来实现一次完整更新是不切实际的。因此,一种增量方式被用来进行更新,其中反病毒应用程序仅仅下载该数据库的更新,并将其与以前所下载的内容加以结合。以包含不同信息类别的文件的形式来提供该更新,诸如 -病毒和其他威胁的签名编码(signature);
-用于解压和启发式(heuristically)分析数据的算法的可执行代码 -用于解压和启发式分析数据的算法的伪码pseudocode (可解释的字节码); -用于移除被检出威胁的信息等等
每个数据库文件均可包含不同类别的数据。这一格式便于对该数据库进行修正,但并不总是便于操作一个对象扫描模块。一般来说,对于操作一个扫描模块而言,需要将信息按类别分组(全部的签名编码在一处,全部的代码在另一处,等等)。为了更有效地处理该扫描模块,通常会将初始信息转换为不同的格式,例如,对签名编码进行排序以加速搜索。已知的系统使用由大量大小有限的单独更新文件所组成的反病毒数据库。在更新期间,新的文件被添加,或者一个或多个文件由新内容所取代。在将该数据库加载到RAM的过程中,扫描模块相继将这些文件读取到存储器(memory)中,并且将其数据结构转换为便于操作的内部表示形式。该转换发生在RAM中。在第7,461,373号美国专利以及专利申请 EP1655682A2和US20070277167A1中,均披露了类似的用于更新数据库的系统。由于易于对单个文件进行独立修正,因此维持该数据库具有简易性,有助于这些系统的使用。现有系统的一个缺陷在于,每次扫描模块启动时,均要将该反病毒数据库加载到计算机的RAM中,包括数据的按类别重组。具体而言,这一转换是通过将一种格式的数据集合到一个分区(section)来实现。因此,会形成多个分区,每一个分区都包含属于一个类型的数据。这一过程消耗了额外的系统资源,并且降低了扫描模块的操作速度。现有系统在加载反病毒数据库方面的另一个缺陷在于,当多个进程同时使用反病毒数据库时,存储器的使用效率低下。在此情况下,在RAM内要为每一个进程加载一份数据库文件的拷贝。进程越多并且数据库文件越大时,所需的系统存储器越多。因此,能够确定已知系统在加载反病毒数据库方面的两种本质缺陷1、为了将反病毒数据库的表示形式从一种转化为另外一种,计算机的RAM被用于反病毒应用程序的每一次加载,也就是说,在操作扫描模块期间,对计算机存储器资源的需求增加。2、难以实现多个进程联合使用一个反病毒数据库。本发明的目标在于克服上述缺陷,并且提供一种反病毒扫描系统和一种通用的方法,使反病毒应用程序的启动加速。

发明内容
本发明的目的在于分别提供一种用于加速反病毒应用程序启动的系统和相应方法。本发明的一个实施例为一种用于加速反病毒应用程序启动的系统,包括(a)连接到更新模块、转换模块和扫描模块的反病毒应用程序,其中所述反病毒应用程序用于控制所述扫描模块;(b)所述更新模块与反病毒数据库存储模块连接,其中所述更新模块由所述反病毒应用程序所启动,并且所述更新模块用于执行新反病毒数据库的扫描,还用于在存在新反病毒数据库的情况下将新反病毒数据库加载到所述反病毒数据库存储模块中; (c)所述反病毒数据库存储模块包括所述反病毒数据库的被更新的文件;(d)所述转换模块与所述反病毒数据库存储模块以及反病毒库缓存存储模块连接,其中所述转换模块由所述反病毒应用程序启动并用于从所述反病毒数据库形成所述反病毒库缓存;(e)所述反病毒库缓存存储模块与所述扫描模块连接,且包含格式为允许其同时在多个扫描进程中使用的反病毒库缓存文件;(f)所述扫描模块能够被加载到每一扫描进程中,其中所述扫描模块用于使用所述反病毒库缓存来搜索扫描对象中的有害数据。在一优选实施例中,所述系统的反病毒应用程序用于启动各扫描进程来执行对一个或多个扫描对象的反病毒扫描。在一优选实施例中,所述系统的反病毒应用程序用于启动一个新的扫描进程来执行对一个新的扫描对象的反病毒扫描。在一优选实施例中,所述系统应用将所述文件映射到所述存储器的机制,在所述转换模块的帮助下形成反病毒库缓存。在一优选实施例中,所述系统在更新所述反病毒数据库时,在所述转换模块的帮助下修正所述反病毒库缓存存储模块中的所述反病毒库缓存。本发明的技术效果在于通过从反病毒数据库创建一个缓存,该缓存无需任何进一步的转换即可被反病毒应用程序所使用,来实现计算机恶意软件检测系统的加速。


参考随附的附图,本发明更多的目的、功能和优点将通过本发明实施方式的如下描述得以阐明,其中
图1示意性示出了用于计算机恶意软件检测系统加速的系统。图2示出了用于计算机恶意软件检测系统加速的系统的工作算法。图3示意性示出了形成反病毒库缓存的结构。图4示意性示出了多个进程对该反病毒库缓存的使用。
具体实施例方式通过参考示范性实施例,本发明的目的和功能以及用于实现这些目的和功能的方法将得以阐明。然而,本发明并不受限于以下所公开的示范性实施例;可以通过不同形式来对其加以实现。说明书的实质仅仅是帮助相关领域技术人员综合理解本发明的具体细节。图1示意性示出了用于计算机恶意软件检测系统加速的系统。在一个实施例中,该用于计算机恶意软件检测系统加速的系统包括以下模块
-反病毒应用程序106,该反病毒应用程序106控制对扫描对象进行扫描的进程,以及启动更新反病毒数据库的进程和启动转换反病毒库缓存的进程;
-由反病毒应用程序启动的更新模块107,该更新模块107执行新反病毒数据库的存在扫描,并在扫描结果为存在新反病毒数据库的情况下对其进行加载;
-反病毒数据库存储模块101,其中存储有反病毒数据库,且该反病毒数据库由更新模块从更新服务器加载;
-由反病毒应用程序启动的转换模块102,该转换模块102形成反病毒库缓存; -反病毒库缓存存储模块103,其中存储有由扫描模块所使用的反病毒库缓存; -扫描模块104,该扫描模块104执行对扫描对象105的扫描。形成缓存的初始数据位于反病毒数据库存储模块101中。该反病毒数据库由待更新的文件构成,每一个文件都包含不同类型的信息,例如威胁的签名编码、可执行代码等等。在此表示形式下,反病毒数据库无法被扫描模块直接使用,必须将其转换为内部格式。为了加速反病毒应用程序的启动,必须建立一个具有这样一种格式的反病毒库缓存,使其无需进一步转换即可被反病毒应用程序所访问,从而在反病毒应用程序每一次启动时都能显著地加速其启动时间。在反病毒数据库更新过程中,反病毒应用程序启动更新模块107。该更新模块执行扫描以识别在反病毒数据库的当前版本中是否存在修正,并且在扫描结果为存在新反病毒数据库的情况下加载丢失的或被修正的文件。由转换模块102执行反病毒数据库到反病毒库缓存的转换。该转换模块由反病毒应用程序在模块101中数据库每一次更新后启动,并且执行反病毒数据库到缓存的转换。 形成该反病毒库缓存的具体过程将在下面对图3的讨论中加以描述。在该反病毒库缓存形成后,它被存储在反病毒库缓存存储模块103中,用于一个或多个扫描进程。将仅在反病毒数据库的后续更新中对已建立的反病毒库缓存进行修正。在卸载和重新加载反病毒应用程序期间,该反病毒库缓存无需任何转换即可被重新使用,这加快了反病毒系统的重新加载速度。图2示出了用于计算机恶意软件检测系统加速的系统的工作算法。最开始,在步骤201执行反病毒库缓存与当前反病毒数据库之间的匹配扫描。如果该反病毒库缓存的版本与当前反病毒数据库的版本不匹配,则更新模块107加载该数据库的新版本,在转换模块102的帮助下根据该新版本的内容对缓存进行更新。如果该缓存的版本与存储在模块101中反病毒数据库的当前版本对应,则不进行转换,并执行步骤206中的扫描模块的启动(重新启动)。
已更新的反病毒数据库由包含不同数据类型的文件构成。由于操作扫描模块要求将信息按分区来分组(全部的签名编码在一处,全部的代码在另一处,等等),在加载完数据库之后,在步骤202执行其转化过程和分区的创建。通过分散到分区中,数据的表示形式被创建为便于操作扫描模块的形式。在每个分区中存储一种类型的数据,该数据无需其它转换即可被扫描模块快速使用。在转换模块处理数据库的过程中,形成反病毒库缓存在步骤203将每个分区写入映射于存储器的缓存文件(又名,存储器映射文件)中,在步骤204从包含可执行代码的分区中形成动态库。进一步地,在步骤205以取代反病毒库缓存旧版本的方式来存储形成新反病毒库缓存的全部文件。在步骤206反病毒应用程序启动扫描进程,并且扫描模块加载来自反病毒库缓存的新版本的信息。本系统特有的特殊性在于反病毒库缓存的创建和该缓存在反病毒库缓存存储模块103中的存储。在图3中示意性示出了形成该反病毒库缓存的结构。从位于反病毒数据库存储模块101中的当前反病毒数据库310的文件形成反病毒库缓存。该数据库是文件311的集合,每一个文件可包含不同类型的数据312。在缓存形成的第一阶段中,对该数据库中文件的内容执行重组过程。该重组遵循在分区中包含一种类型的数据的分区形成原则进行。这样,所有威胁的签名编码在一个分区中,和威胁有关的信息在另一个分区中,可执行代码在第三个分区中,诸如此类。因此,获得多个独立的分区。在完成数据的重组过程和分区的创建之后,将分区作为缓存文件加以存储。包括除可执行代码以外的数据的分区形成映射于存储器的文件321和322。具有可执行代码的分区形成独立的动态库323。该文件映射机制使使用文件内容来工作成为可能,就好像这些文件通过文件读取 (file-reading)被加载到存储器中一样。映射到存储器中的文件具有这样一种结构,使得对于扫描模块来说,文件内容无需额外转换即可被多个应用程序同时使用。这使得多个进程同时能够方便快捷地实现对它们的共享使用。该方便性在于在文件到存储器的映射中, 并未为不同的进程对存储器加以复制。因此,在使用这样的文件进行多个进程操作的过程中,系统存储器得到更有效率的使用。但是,该将文件映射到存储器的机制并不能对包括可执行代码的分区进行有效率的处理。在加载可执行代码后,执行重定位进程必须考虑可执行代码的实际加载地址对其进行修正。代码中包含绝对地址的部分被修正。作为映射可执行代码分区到不同进程的结果,该映射地址对每一个进程而言可以不同,并且一般来说,必须为每一个进程分别执行代码重定位。这样,由于必须要为每一个使用代码分区的进程而独立修正代码分区,因此对代码分区的共享使用变得不可能。将可执行代码加载到存储器中的另一个缺陷在于存在由操作系统强加于该代码执行上的约束条件。例如,Windows操作系统仅允许在以包含特定数据结构的动态库形式加载的代码中使用结构化异常处理(Structured Exception Handling, SEH)指令,该特定数据结构即安全SHE过程列表。为了消除所述缺陷,将可执行代码分区转换为目标操作系统所定义的动态库323 格式。动态链接库(Dynamic-link library)是在扫描模块的操作过程中所加载的模块。如果该动态库被加载到地址空间中,则使用该动态库的大量进程可访问一个副本以供使用,这对它们的操作速度具有积极影响。必须考虑到操作系统动态库可被共享使用而对其进行加载。例如,在Windows操作系统中,根据系统选择的地址来加载库,因此无需分别重定位即可将该库映射到不同的进程。在UNIX操作系统家族中,使用PIC (position-independent code,自由定位代码)来完成这一任务。这样,不同进程共享使用可执行代码分区的问题得到解决。本系统形成的该动态库是扫描模块104所使用的数据库缓存的一部分。图4示意性示出了多个进程对该反病毒库缓存的使用。在一次反病毒扫描期间, 反病毒应用程序可创建多个扫描进程并监视它们的执行。每个扫描进程均加载存储在永久存储器(permanent memory)中的扫描模块104,该扫描模块104使用以映射到存储器的文件形式表示的反病毒库缓存,以及动态库。以这样一种格式加以表示的反病毒库缓存使将缓存文件加载到RAM中以及由多个扫描进程同时对其加以使用成为可能。由于所需的转换已经在从反病毒数据库形成缓存的阶段由转换模块102执行,因此不必执行额外的转换。存储器的一部分以由多个进程(进程1-进程M)所使用的缓存数据(分区1-分区 N)来填充。缓存文件(被映射到文件存储器和动态库)使使用其内容以及存储器区域成为可能,这使得全部进程有可能同时成功使用同一个文件,与此同时在系统存储器中仅仅保持数据的一个拷贝。在所述系统的版本之一中,所有包含数据(签名编码、关于威胁的信息,等等)的分区还能够以只读数据分区的形式置于通用动态库中。在此情形下,当其中所包含的数据被更新时,必须重新生成该动态库。扫描模块104本身也可以被更新。新版扫描模块可使用另一种数据库的内部表示形式。在此过程中,形成数据库缓存的转换模块也必须被更新。在加载更新后数据库的过程中,新版转换模块以新的格式形成缓存文件的分区。这样,由于扫描模块对于反病毒库缓存的使用,该系统解决了加速启动反病毒应用程序的任务。该反病毒库缓存由转换模块从反病毒数据库中以扫描模块可用的形式形成。
权利要求
1.一种用于加速反病毒应用程序启动的系统,包括-反病毒数据库存储模块(101),包括待更新的反病毒数据库文件;-更新模块(107),连接到所述反病毒数据库存储模块(101);-扫描模块(104),用于被加载到每一个反病毒扫描进程中;-反病毒应用程序(106),连接到所述更新模块(107)和所述扫描模块(104),其中所述反病毒应用程序(106)用于控制所述扫描模块(104);其中所述更新模块(107)由所述反病毒应用程序(106)所启动,执行对于存在新反病毒数据库的扫描,并在存在新反病毒数据库的情况下将所述新反病毒数据库加载到所述反病毒数据库存储模块(101)中;其特征在于,所述系统包括-反病毒库缓存存储模块(103),连接到所述扫描模块(104),并包含格式为允许其无需任何进一步转换即可同时在至少一个扫描进程中使用的反病毒库缓存文件,其中所述扫描模块(104)用于使用所述反病毒库缓存存储模块(103)搜索扫描对象中的有害数据;以及-转换模块(102),连接到所述反病毒数据库存储模块(101)和所述反病毒库缓存存储模块(103),其中所述反病毒应用程序(106)与所述转换模块(102)连接,且所述转换模块(102)配置为由所述反病毒应用程序(106)启动并可由所述反病毒数据库形成所述反病毒库缓存。
2.如权利要求1所述的系统,其中所述转换模块(102)用于应用将文件(321、322、323) 映射到存储器的机制来形成所述反病毒库缓存。
3.如权利要求2所述的系统,其中所述转换模块(102)用于执行对位于所述反病毒数据库存储模块(101)中的文件内容进行重组的进程,并创建和存储所述反病毒库缓存 (103)文件形式的分区,其中所述包含除了可执行代码以外的数据的分区形成映射于存储器的文件(321、322),同时由包含可执行代码的分区形成单独的动态库(323)。
4.如权利要求1-3任一所述的系统,其中所述反病毒应用程序(106)用于启动至少一个扫描进程来执行对一个或多个扫描对象(105)的反病毒扫描。
5.如权利要求1-3任一所述的系统,其中所述反病毒应用程序(106)用于启动新的扫描进程来执行对新的扫描对象(105)的反病毒扫描。
6.如前述权利要求任一所述的系统,其中所述转换模块(102)用于在更新所述反病毒数据库存储模块(101)中的所述反病毒库的过程中,修正所述反病毒库缓存存储模块 (103)中的所述反病毒库缓存。
7.一种用于加速反病毒应用程序启动的方法,包括以下步骤(a)由更新模块(107)执行对于存在新反病毒数据库的扫描;(b)在存在新反病毒数据库的情况下,将所述新反病毒数据库加载到反病毒数据库存储模块(101)中;随后(c)通过转换模块(102)转换所加载的数据库来形成反病毒库缓存,并创建用于存储一种类型的数据的分区;(d)对组成所述新反病毒库缓存的全部文件加以存储,取代所述反病毒库缓存存储模块(103)中反病毒库缓存的旧版本;(e)凭借扫描模块(104)无需任何进一步转换而从所述反病毒库缓存存储模块(103) 加载信息,借此方式反病毒应用程序(106)启动至少一个扫描进程。
8.如权利要求7所述的方法,其中将每一个分区写入映射于存储器的所述反病毒库缓存的文件中,同时由包含可执行代码的分区形成动态库。
9.如权利要求7或8所述的方法,其中还包括在缺少新反病毒数据库的情况下,基于步骤(a)来执行步骤(e)。
10.如权利要求7-9任一所述的方法,其中在步骤(a)中执行对存储在所述存储模块 (103)中的反病毒库缓存和当前反病毒数据库之间的匹配扫描。
11.如权利要求7-10任一所述的方法,其中在步骤(e)中所述反病毒应用程序(106) 创建多个扫描进程并监视其执行。
12.如权利要求11所述的方法,其中每个扫描进程均加载所述扫描模块(104),所述扫描模块(104)使用以映射到存储器的文件(321、322)形式和存储在永久性存储器中的动态库(323)形式表示的所述反病毒库缓存。
13.如权利要求7-12任一所述的方法,其中在步骤(c)中由所述转换模块(102)以所述扫描模块(104)可用的形式从所述反病毒数据库形成所述反病毒库缓存。
全文摘要
本发明涉及用于计算机恶意软件检测系统加速的系统和方法。该系统从反病毒数据库创建用于扫描模块操作的反病毒库缓存。该缓存包括大量映射到存储器中的独立文件和包含可执行代码的动态库。在反病毒应用程序执行期间,系统无需任何进一步转换,即可将一个或多个反病毒库缓存的数据文件映射到存储器中,从而加速反病毒应用程序的启动。
文档编号G06F21/00GK102402662SQ20111032054
公开日2012年4月4日 申请日期2011年10月20日 优先权日2010年11月1日
发明者巴捷宁·维亚切斯拉夫 申请人:卡巴斯基实验室封闭式股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1