恶意软件数据的共享储存库的制作方法

文档序号:6596116阅读:227来源:国知局
专利名称:恶意软件数据的共享储存库的制作方法
恶意软件数据的共享储存库
背景技术
各种类型的计算设备是易受到攻击的。这些攻击可以采取禁用计算设备(例如阻止其以任何方式运作、或阻止其执行特定功能),控制计算设备(例如强制其执行计算设备的授权用户不想要其执行的一个或更多操作),从计算设备获取信息(例如从硬盘驱动器获取的信息,或记录用户输入,如口令)的形式,以及众多其它形式。攻击计算设备的一种方式是通过使用恶意的软件,即“恶意软件(malware) ”。恶意软件可以是可用于执行对计算设备的攻击的任何软件。计算机病毒是恶意软件的一种形式。计算机病毒是一段软件代码,其一旦被安装在“受感染的”计算设备上,则可以在不使受感染的计算设备的用户知道的情况下将自己附在文件中(例如存储在磁盘上的文件,或通过电子邮件传输),并且感染访问该文件的其它计算设备。但是,计算机病毒并不是恶意软件的唯一形式,恶意软件可以采取众多其它形式。其它形式的恶意软件包括监视在受感染的计算设备上执行的操作(包括被处理的信息)并且向外部的一方报告该操作/信息的间谍软件;向受感染的计算设备的用户显示未经请求的广告的广告软件;和计算机病毒类似但是能够在没有例如文件等宿主的情况下而向另一个计算设备复制其自身的计算机蠕虫; 通常作为被包含在看上去无害但是包括恶意代码的内容中的恶意软件的特洛伊木马;被设计成为了其自身以及可能为了控制它们的外部的一方(例如攻击者)而获取对计算设备的管理访问的rootkit ;可以用于例如通过检测用户何时合法地访问其金融资源(例如通过用户银行或其它金融机构的web门户)并且随后在后台执行例如发出将资金转账到攻击者的银行账户的指令的非法操作,来实施例如金融和/或身份盗窃的犯罪的金融攻击恶意软件(有时被称为“犯罪软件”)。恶意软件通常在用户访问携带该恶意软件的文件时(一般不知道该文件包含恶意软件)感染计算设备并且执行其攻击,从而触发嵌入在文件中的恶意软件的执行并且允许其实现攻击。由于恶意软件可以嵌入在任何类型的文件中,因此可能以任意各种方式完成对恶意软件的访问,包括执行文件(例如执行可执行二进制代码)、在程序中打开文件来进行读或读/写访问(例如在图像文件查看器中打开图像文件)、或其它文件操作。由于来自恶意软件的感染风险,许多计算设备现在使用旨在在访问恶意软件并且触发攻击前检测恶意软件的软件。该软件通过在用户请求后扫描文件,或者通过在将要执行访问文件的操作时进行检测、干预该操作、并且延迟该操作直到完成扫描以确定恶意软件是否存在为止来检测恶意软件。计算机上的恶意软件扫描软件可以维护多个文件中的每一个文件的文件特征集的本地数据存储以及与给定文件特征集匹配的文件包括或不包括恶意软件的指示。恶意软件扫描软件可以确定待扫描的文件的文件特征,并且随后将所确定的文件特征与预定义的特征集比较。如果特征指示文件包括恶意软件,则恶意软件扫描软件可以通知用户和/或阻止访问该文件。文件特征的本地数据存储可以被周期性地更新以标识由攻击者开发和发布的新恶意软件。这一更新可以由恶意软件扫描软件的供应商完成。发明概述
常规上,恶意软件扫描软件在计算设备本地维护和执行,并且扫描例如文件等将要在该计算设备本地上存储或访问的内容单元。这需要计算设备具有用于维护文件特征集的数据存储的存储空间,用于维护恶意软件扫描软件自身的存储空间,以及快速且高效地执行恶意软件扫描软件以使在扫描期间对用户的干扰最小化的处理能力。申请人:领会到,一些文件可以在众多不同计算设备上具有副本,并且可以在这些计算设备的每一个计算设备处被扫描和使用。因此,扫描特定文件的每个计算设备可为该文件实现相同的结果,从而重复其它计算设备的工作。申请人:领会到,可以通过形成计算设备的社区以在执行对例如恶意软件等未授权软件的扫描时达到更高效率,在该社区中每个计算设备与其它计算设备共享授权扫描(例如恶意软件扫描)的结果。这些其它计算设备中的每一个可以依赖于以前执行的扫描的结果,并且因此免除了其自身对要访问的每个文件都执行扫描的负担。在一些实施例中,改为仅当特定计算设备是访问文件的第一个计算设备时,包括当文件对于该计算设备是唯一的时,该特定计算设备才被要求执行对该文件的扫描。该计算设备然后可以向社区中的其它计算设备提供扫描结果,以便于其它计算设备从由特定计算设备执行的工作中受益。共享授权扫描结果的计算设备的社区还可以在以下方面获益例如由于缺少必要存储和/或处理必要条件而无法实现授权扫描的计算设备可以使用其它计算设备的结果。 不能执行授权扫描的这些计算设备以前由于这一缺陷是易于受到攻击的,但是现在可以通过参加社区而至少具有某些形式的对威胁的保护。此处描述的是用于维护授权确定的共享储存库的各种原理,该共享储存库可以由特定文件(和其它内容单元)以及这些特定文件的签名的授权扫描结果来填充。在一个实施例中,当特定文件将要由客户机计算设备扫描以确定其是否含有未授权的软件时,可以计算并向共享储存库提供该文件的签名。如果如文件的签名位于储存库中所指示的,储存库具有该文件的结果,则可以向发出查询的客户机计算设备提供储存库中的结果,并且客户机计算设备接受共享储存库中的答案。如果结果不在储存库中(即文件没有被扫描过), 则可以扫描该文件,并且将结果放置在储存库中。在一个实施例中,提供了用于确定计算机系统中待访问的特定内容单元是否包含未授权软件的方法。计算机系统包括至少两个客户机计算设备以及授权确定的共享储存库。授权确定的共享储存库可以由该至少两个客户机计算设备中的每一个访问,并且包括授权确定的结果。每个授权确定包括对应的内容单元是否包含未授权的软件的确定。授权确定中的至少一些是由该至少两个客户机计算设备中的一个或更多个来作出的。该方法包括向授权确定的共享储存库提供特定内容单元的唯一标识符,接收共享储存库是否包括该特定内容单元的授权确定的指示,以及,如果共享储存库包括该特定内容单元的授权确定, 则使用共享储存库中的授权确定来通知访问该特定内容单元。在另一个实施例中,提供了以计算机可执行指令编码的至少一个计算机可读介质,该计算机可执行指令在由计算机执行时使得该计算机实现一种方法。该方法用于做出计算机系统中待访问的特定文件是否包含恶意软件的确定。计算机系统包括至少两个客户机计算设备以及恶意软件确定的共享储存库。恶意软件确定的共享储存库可以由该至少两个客户机计算设备中的每一个访问,并且包括恶意软件确定的结果。每个恶意软件确定包括对应的文件是否包含恶意软件的确定。恶意软件确定中的至少一些是由该至少两个客户机计算设备中的一个或更多个来作出的。该方法包括向恶意软件确定结果的共享储存库提供特定文件的唯一标识符,以及接收共享储存库是否包括该特定文件的恶意软件确定的指示。该方法还包括,如果共享储存库包括该特定文件的恶意软件确定,则使用共享储存库中的恶意软件确定以通知访问该特定文件。该方法还包括,如果共享储存库不包括恶意软件确定,则确定该特定文件是否包含恶意软件并且用该确定的结果来更新共享储存库。在又一实施例中,提供了在包括第一客户计算机的计算机系统中使用的第一客户机计算设备,至少一个第二客户机计算设备,以及授权确定的共享储存库。授权确定的共享储存库可以由该至少两个客户机计算设备中的每一个访问,并且包括授权确定的结果。每个授权确定包括对应的内容单元是否包含未授权的软件的确定。恶意软件确定中的至少一些是由该至少两个客户机计算设备中的一个或更多个来作出的。第一客户机计算设备包括适于确定计算机系统中待访问的特定内容单元是否包含未授权软件的至少一个处理器。该至少一个处理器被如下编程来完成这一确定向授权确定的共享储存库提供特定内容单元的唯一标识符,接收共享储存库是否包括该特定内容单元的授权确定的指示,以及如果共享储存库包括该特定内容单元的授权确定,则使用共享储存库中的授权确定以通知对该特定内容单元的访问。前述的是由所附权利要求书限定的本发明的非限制性概述。附图简述附图不旨在是按比例绘制的。在附图中,各附图中所示的每个相同的或几乎相同的组件由相同的标号表示。为了清楚起见,不是每个组件都在每幅附图中标出。在附图中

图1是本发明的一些实施例可以在其中执行的示例性计算机系统的示图;图2是在本发明的一些实施例中用于通过客户机计算设备来执行文件的恶意软件扫描的说明性过程的流程图;图3是在本发明的一些实施例中用于通过维护恶意软件扫描结果的共享储存库的服务器来执行文件的恶意软件扫描的示例性过程的流程图;图4A、4B和4C是在本发明的一些实施例中用于实现可以由客户机计算设备和/ 或服务器实现的文件的恶意软件扫描的替换性的说明性过程的流程图;图5A和5B是用于在客户机计算设备上基于待扫描文件的特征来确定是否查询恶意软件扫描结果的共享储存库的说明性过程的流程图;图6是用于在服务器上基于一个或更多示例性条件来确定是否对恶意软件扫描结果的共享储存库的内容进行转储清除的说明性过程的流程图;图7是用于在服务器上确定与存储在恶意软件扫描结果的共享储存库中的条目相关的任何文件是否是流行文件的说明性过程的流程图;图8A和8B是用于在检测到储存库已经被转储清除时自动地重新填充恶意软件扫描结果的共享储存库的说明性过程的流程图;图9是本发明的一些实施例可以在其中执行的替换计算机系统的示图;图10是在本发明的一些实施例中可以充当客户机计算设备的示例性计算设备的框图;图11是在本发明的一些实施例中可以充当维护恶意软件扫描结果的共享储存库的服务器的示例性计算设备的框图;以及
图12是在本发明的一个实施例中示出可以被存储在恶意软件扫描数据的共享储存库中的一个示例性格式的条目的表格。详细描述申请人:意识和领会到执行文件的恶意软件扫描是在用于维护启用扫描所必需的各种数据集的必需存储空间以及执行扫描所必需的处理资源这两方面都很密集的过程。为了扫描文件以确定该文件是否包括恶意软件,计算设备通常必须安装恶意软件扫描软件, 该恶意软件扫描软件使用该计算设备的存储介质上的存储空间。该计算设备还必须具有可由扫描软件用来确定特定文件是否包括恶意软件的文件特征集(以下定义的这类文件特征集在以下被称为“恶意软件定义”),并且这些文件特征集会使用更多的存储空间。最后, 恶意软件扫描软件必须执行对某些大型文件的密集审阅,并且从而有很大的处理能力需求或可从其它计算机操作抽尽处理资源(诸如处理时间)。申请人:还意识和领会到一些文件可以在众多不同计算设备上具有副本,并且可以在这些计算设备的每一个计算设备处被扫描和使用。例如,与操作系统有关的系统文件、与流行应用程序相关联的应用程序文件、以及存储由用户或应用程序生成的信息的一些数据文件可以存在于多个不同计算设备上。申请人还领会到要求具有文件的副本的每个计算设备都执行相同的扫描是低效的,并且对于计算设备的社区而言,如果该计算设备的社区共享扫描结果从而使每个计算设备能够充分利用先前已经由另一个计算设备确定的扫描结果,则可以达到更高的效率。此外,例如由于其不具有足够的处理能力、存储空间或电池寿命(其它电源)以实现恶意软件扫描,一些计算设备不能够或不是很适合执行恶意软件扫描软件。传统地,恶意软件扫描对这类计算设备不可用。但是,申请人还意识和领会到这类计算设备可以利用先前已经由其它计算设备确定的扫描结果。采用这种方式,可以向一些不能够执行恶意软件扫描的计算设备提供此类扫描的好处。共享恶意软件扫描结果可以按任意合适的方式进行。为了示例的目的,以下展开一些示例性过程,但是与共享恶意软件扫描结果有关的本发明的各方面不限于这些特定的实现,因为其它的实现也是可能的。在本发明的一些实施例中,可以维护恶意软件扫描结果的共享储存库,该共享储存库在该储存库中存储每个文件的至少一个唯一标识符(例如签名)以及指示每个文件是否被确定为包括恶意软件的结果。客户机计算设备在需要确定特定文件是否包含恶意软件时可以提供该特定文件的唯一标识符(例如计算文件签名)。文件签名或其它唯一标识符然后可以被与储存库中的标识符比较以确定另一个计算设备先前是否已经扫描过该特定文件。如果该特定文件的标识符与储存库中的标识符匹配,则与储存库中的标识符相关联的结果可以用作该文件的结果,从而缓解了客户机执行扫描的需要。如果该特定文件的标识符与储存库中的任何标识符都不匹配,则可以按任意合适的方式(例如由提供标识符的客户机,由维护储存库的服务器,或者由计算设备的社区中的另一个客户机)扫描特定文件,其示例在以下描述。然后扫描的结果可以被提供标识符的客户机计算设备使用。在一些实施例中,该结果还可以被放置在储存库中以使其可用于社区中的其它计算设备。但是, 由于储存库可以用其它方式填充,因此并不是本发明的所有实施例都限于这一方面。例如, 在本发明的一个实施例中,特定文件的扫描操作的结果仅当检测到该特定文件已经被社区中的各单独计算设备扫描过阈值次数时才被放置在储存库中,这可以指示该文件更有可能被其它计算设备访问。采用这一方式,由于计算设备可以利用由其它计算设备计算的先前确定的结果, 因此减轻了执行恶意软件扫描的负担。应当理解,这只是依照此处描述的各原理执行的系统可以操作的方式的一个示例,并且这些原理可以按任意各种方式实现。以下描述其它示例,但应当理解,这些实现仅是示例性的,并且本发明的实施例可以按实现任意合适的技术和过程的任意合适方式操作。此外,本发明的所有实施例不需要实现以下描述的所有技术。此外,应当理解,恶意软件是未授权软件的一个示例。此处描述的技术可以用于执行与任何种类或类型的未授权软件有关的扫描和确定。可以基于任意合适的准则来确定任意合适的文件是未授权软件。作为未授权软件的一个示例的恶意软件,在以上已经被描述为包括作为或包括计算机病毒、特洛伊木马、计算机蠕虫、以及如果被访问则能够实现对计算设备的攻击的其它类型的有害文件的文件(或其它内容单元)。申请人领会到在一些环境中,未授权软件还可以包括没有危害但是已经被确定为不会在计算设备上授权访问的文件。一些此类文件在一个环境中被认为是未授权的,但是在另一个环境中可以是授权的。 例如,公司企业网络的公司政策可以规定计算设备不运行计算机游戏软件(例如为了提高使用计算机的员工的生产力)。从而在该网络中(即该环境),游戏软件被认为是未授权软件,并且可以实现授权扫描以确定特定文件是否与计算机游戏相关。可以对除了游戏以外的文件类型,对任意合适文件或文件类型实现类似的测试。作为另一个示例,可以实现确定文件是否由可信的(或不可信的)源提供的授权政策。例如,可以实现授权扫描以确定文件是否从特定的源(例如特定的服务器)取回的,或者文件是否由在该环境中被认为可信的授权机构签名。不是由可信的源提供的文件可以被认为是未授权的。因此,应当理解,本发明的实施例不限于确定特定文件是否包含恶意软件,而是可以被实现成基于任意合适的准则(包括通过环境的一个或更多政策)来确定文件是否是未授权的。尽管各示例在下文中被描述为确定文件是否是或是否包括恶意软件,但应当理解, 除非另有注解,这些示例也可以同样适用于其它类型的未授权软件。为了简化说明,用“文件”来描述以上的示例和以下各示例(例如执行文件的恶意软件扫描,或计算文件的签名)。但是,应当理解,本发明的实施例不限于用文件或用在文件系统中存储信息的任何计算设备来操作。相反,本发明的实施例可以用任意合适类型或以任意合适内容单元组织的各内容类型来操作。例如,可以对数据流或数据库条目、或者其它类型的非文件内容执行此处描述的根据本发明技术的恶意软件扫描。因此,在以下参照 “文件”的示例中,应当理解,除非另有注解,这些示例也可以同样适用于其它类型的内容。在以下参考文件来描述的示例中描述了由本发明的实施例执行的各操作。例如, 在以下的一些技术中,可以计算作为文件的标识符的“文件签名”,包括唯一或在概率上唯一的标识符。但是,应当理解,文件签名仅是可为文件提供的标识符的一个示例,并且可以使用文件的唯一的或不唯一的任意合适的标识符。此外,应当理解,在以下参考文件的“文件签名”描述的示例中,应当理解对于用除了文件以外的内容类型来操作的本发明的实施例,任意合适技术可以用于本发明的这些实施例以标识内容单元。可以在任意合适的环境中实现此处描述的用于共享恶意软件扫描结果的技术,包括在包含任何数量和类型的计算设备的计算机系统上,因为此处描述的本发明的实施例不限于这一方面。图1示出这些技术的一些示例性实现可以在其中执行的说明性计算机系统,但是应当理解本发明的实施例不限于在这一或任何其它特定类型的计算机系统中实现。图1示出包括计算机通信网络100的计算机系统,该计算机通信网络使诸如客户机计算设备102A、102B和102C等计算设备互相连接(此处,除非另有说明,提及“计算设备102”应当被理解为指代计算设备102A、102B和102C中的任何一个)。尽管图1的计算机系统中示出三个计算设备,但是应当理解系统可以包括任意数量的客户机计算设备。此外,尽管以台式个人计算机示出计算设备102,但在替换的系统中它可以是任意合适的计算设备,诸如膝上型个人计算机、个人数字助理、智能电话、服务器(例如web服务器)、机架式计算机、例如路由器或交换机等网络设备、或访问文件(或其它内容单元)并且具有验证该文件不包括恶意软件的需求的任何其它计算设备。维护恶意软件扫描结果的储存库104A的服务器104也被连接至通信网络100。服务器104可以是能够维护可使之通过计算机通信网络100对其它计算设备可用的信息的储存库的任意合适的计算设备,诸如网络附属存储(NAS)设备或具有存储能力的其它类型的计算机。在本发明的一些实施例中,服务器104可以专用于维护储存库104A,而在本发明的其它实施例中,包括以下更详细描述的示例,服务器104可以另外地适于执行与恶意软件扫描有关的功能。此外,尽管在图1中以单个计算设备示出服务器104,但在本发明的一些实施例中,服务器104可以实现为共享处理和/或存储负载的计算设备的协作集合。此外,尽管图1示出储存库104A由单独的计算设备服务器104维护,但是在以下参照图8更详细描述的本发明的替换实施例中,可以在一个或更多客户机计算设备102上维护储存库。根据一些实施例,当计算设备102需要确定特定文件是否包括恶意软件时,计算设备102可以与服务器104交互以确定该文件的扫描结果是否被存储在储存库104A中。以下更详细描述了用于计算设备102A、102B和102C与服务器104之间的这些交互的示例性技术。一般地,恶意软件扫描结果的储存库104A可以由计算设备102访问以确定在计算设备102上被访问的特定文件是否包括恶意软件。如以上简要描述以及以下更详细描述的,计算设备102可以导出文件的文件签名(或其它唯一标识符),并且向服务器104提供该文件签名以确定与该文件相关的结果是否在储存库104A中。文件签名可以是标识文件的与文件有关的任何信息,包括从文件本身导出的信息。因此,如此处所用,术语“文件签名”指的是文件的任何标识符。存储在储存库104A中的信息可以包括一个或更多个文件的文件签名以及与这些文件相关联的恶意软件扫描的结果。可以按任意合适的方式提供扫描结果。在一个实施例中,扫描结果包括从以前由计算设备102完成的扫描中获得的结果,使得结果由用户和计算设备的社区来查询和共享。储存库104A可以被实现为任意合适类型的数据存储。在一些实施例中,储存库104A可以被实现为持有这一信息的数据库,诸如关系数据库,而在其它实施例中,储存库104A可以被实现为文件系统中的平面文件,或数据存储中的任何其它合适的数据结构。
这些计算设备中的每一个都被连接到的通信网络100可以是任意合适的有线和/ 或无线网络,包括更大的有线和/或无线网络的一部分。例如,在一些实施例中,通信网络 100可以是或包括计算设备102的用户家中的局域网(LAN),或者可以是或包括诸如公司等组织的LAN或广域网(WAN),其中计算设备102A、102B和102C的用户与这些网络相关联。 在一些此类实施例中,其中通信网络100是由诸如用户或组织等单个实体控制的单个网络 “范畴”,服务器104可以将对储存库104A的访问限于那些与该实体相关的计算设备。可以完成这一点以确保存储在储存库104A中的结果是可信的,并且不是由恶意一方贡献给储存库以帮助该恶意一方分发恶意软件(例如通过在储存库104A中证明该恶意软件不包括恶意软件)的非法结果。在其它实施例中,通信网络100不是单个网络范畴。相反,通信网络100可以是诸如因特网等公共接入网络。在一些此类实施例中,服务器104可以由商业实体维护,诸如计算设备102A、102B和102C的用户可以订阅以获取对储存库104A的访问的提供恶意软件服务的实体,该商业实体可以维护独占控制,通过该独占控制,由计算设备102提供的扫描结果条目可以被包括在储存库104A中。在其它实施例中,可以改为为了向连接至通信网络 100的计算设备开放访问而维护服务器104,从而使用户社区可以将扫描结果条目贡献给储存库。在一些此类实施例中,其中服务器104由商业实体维护或为了开放访问而维护,计算设备102A、102B和102C可以由不同的人和/或组织拥有和维护,并且在一些实施例中可以彼此不具有超出参加共享储存库104A的社区以外的关系。图1还示出被连接至通信网络100的第二通信网络108。通信网络108可以包括任意合适的有线和/或无线网络。具有恶意软件定义的数据存储106A的服务器106被连接至通信网络108。恶意软件定义可以是由恶意软件扫描软件用来确定特定文件是否包括恶意软件的任意合适的文件特征集。例如,文件特征可以是特定的字节序列,如果该字节序列位于文件中则指示恶意软件被嵌入该文件。在访问文件时采取或将要采取的动作也可以用于表征恶意软件。例如,如果文件在计算设备上写、改变或删除特定文件和/或配置设置,实例化特定的进程,打开使用特定服务器和/或特定端口的网络连接,或采取任何其它的特定动作,则这些动作可以指示该文件包括恶意软件。可以通过维护由文件采取的行动的列表(作为文件特征的一部分)来做出这些确定。然后可以分析文件以确定其是否采取了在文件特征中所列出的动作中的任何动作。此外,文件的源可以被用作文件特征或文件特征的一部分。例如,文件特征可以包括示例性的文件源,诸如主存文件的服务器的名称和 /或因特网协议(IP)地址,或特定文件的可信和/或不可信的授权机构的列表,该列表可以与文件比较以确定文件是否来自可信的源。在本发明的一些实施例中,恶意软件定义可以包括提供指示与文件特征匹配的文件是否包括恶意软件的信息的“黑名单”。在本发明的其它实施例中,恶意软件定义可以包括提供指示与文件特征匹配的文件是否不包括恶意软件的信息的“白名单”。在本发明的其它实施例中,恶意软件定义可以既包括白名单也包括黑名单。服务器106可以向图1所示的计算机系统的诸如计算设备102A、102B和102C和/或服务器104等其它计算设备提供这些恶意软件定义以执行恶意软件扫描。应当理解存储在数据存储106A中的恶意软件定义信息和存储在储存库104A中的恶意软件扫描结果不是同一信息。数据存储106A的恶意软件定义提供可用于确定待扫描的文件是否包含恶意软件的信息。数据存储106A的恶意软件定义中的这些文件特征的每一个都可以适用于众多不同文件。例如,诸如计算机病毒等恶意软件可以被嵌入在不同文件中,诸如描绘人的第一图像文件和描绘风景的第二图像文件等。这些文件在根本上是不同的,因为其总体上包含不同的内容(有关人的图像数据和有关风景的图像数据)。但是,与计算机病毒匹配的文件特征可以通过例如确定与特定的计算机病毒相关的特定字节序列是否存在于这两个文件中以检测这两个文件包含该计算机病毒。因此,作为数据存储 106A的恶意软件定义的一部分的独立文件特征或文件特征集可以与多个不同文件匹配,并且可以用于确定给定文件是否包括恶意软件。另一方面,储存库104A存储可以标识特定文件的文件签名,以及该特定文件先前是否被使用诸如存储在数据存储106A中的那些恶意软件定义来扫描以及在该扫描期间是否发现该特定文件包含恶意软件的指示。文件签名不能被其自身用来确定特定文件是否包含恶意软件。相反,文件签名仅是文件的标识符。尽管在图1被示为单独的网络,但是应当理解在一些实施例中,通信网络108可以是与通信网络100相同的网络的一部分。这种情况发生在当通信网络100不是单个网络范畴时,诸如在通信网络100包括因特网的情况下。但是,在通信网络100是诸如家庭网或企业网等单个网络范畴的实施例中,通信网络108可以是单个网络范畴以外的单独的网络, 诸如公共接入网络(例如因特网)。在本发明的一些实施例中,图1的计算设备102可以在其上实现各种软件工具以实现各个任务。一个此类工具可以是执行对特定文件的扫描以确定其是否包括恶意软件的恶意软件扫描工具。可以按任意合适的方式实现这一恶意软件扫描工具。图2示出依照本发明的一个实施例的可以在恶意软件扫描工具中实现的说明性过程200。但是,应当理解过程200仅是可以被实现以实现此处描述的技术的示例性类型的过程,并且其它的过程是可能的。此外,尽管可以参考图1的计算机系统来描述过程200,但是应当理解过程200不限于在图1的示例性计算机系统中操作,并且其可以在任意合适的计算机系统中操作。过程200在方框202处开始,其中恶意软件扫描工具检测到将执行计算机操作以访问文件。访问文件的计算机操作可以是与文件有关的任意合适的计算机操作,包括执行文件、打开文件以进行读和/或写访问,或任何其它操作。此外,访问文件的操作可以是恶意软件扫描工具扫描文件的特定命令。该特定命令可以基于来自用户、操作系统或计算设备102上的任何其它指令源的输入。在方框204处,恶意软件扫描工具导出在方框202处检测到的文件的文件签名。如以上简要所述,文件签名可以是文件的任意合适的标识符,包括唯一或在概率上唯一的标识符(即具有可忽略或几乎可忽略的概率是另一个标识符的副本)。标识符还可以是“足够”唯一的,因为如果对于给定的环境或上下文而言标识符足够可能是唯一的,则该标识符可以被认为是唯一的。文件签名可以包括与文件有关的任何数据,包括不变的数据。文件签名可以是与文件有关的特征信息,诸如例如文件名、文件源、文件大小或其它属性等一个或更多文件属性的集合。另外地或替换地,文件签名可以是从文件导出的信息,诸如基于文件的内容计算的散列值。可以使用任意合适的散列算法(例如MD5或其它)来生成散列值,散列算法被设计为对相同的内容生成相同的值但是如果内容不同则生成不同的值。另外地或替换地,文件签名可以是文件中的信息,诸如在文件中特定位置的文件内容。如上所述,标识文件的任意合适信息,包括唯一或以其他方式标识文件的信息,都可以被用作签名。应当理解如此处使用,“唯一”标识符包括唯一的标识符以及在概率上唯一和足够唯一的标识符。尽管传统的恶意软件扫描软件使用恶意软件定义来在本地扫描文件,或者向外部计算设备提供文件本身以执行对文件的扫描,但是在方框206处恶意软件扫描工具查询服务器104以确定储存库104A是否存储与文件有关的任何信息。被传输至服务器104的查询可以包括与文件和/或扫描有关的任意合适的信息,包括在方框204处导出的文件签名、 由恶意软件扫描工具维护的恶意软件定义的版本号(如有)、由恶意软件扫描工具维护的恶意软件扫描软件的版本号(如有)、和/或任何其它合适的信息。存储在储存库104A中的与文件有关的信息可以包括先前实现的对文件的扫描操作的并且以任意合适方式提供给储存库104A的结果。在一个实施例中,扫描结果可以包括由计算设备102中的一个或更多个执行的扫描的结果。例如,如果实现过程200的计算设备是计算设备102A,则储存库104A可以存储由计算设备102A或者由计算设备102B或 102C中任一个对文件执行的扫描操作的结果,并且如果结果存在,则向储存库104A查询该结果。可以按任意合适的方式实现方框206的查询,并且在查询期间可以在计算设备102 和服务器104之间交换任意合适的信息。一旦服务器104响应了查询,在方框208处恶意软件扫描工具确定该响应是否指示储存库具有与文件有关的任何信息。如果是,并且信息包括文件的以前扫描操作的结果, 则在方框210处恶意软件扫描工具从响应于查询的来自服务器104的响应(即指示存在该文件的条目的该响应还包括该文件的扫描结果),或通过从服务器104请求结果,或以任何其它合适的方式来获取结果,并且使用该结果作为文件是否包括恶意软件的问题的答案。 然后过程200结束,并且可以用任意合适的方式使用该过程的结果。例如,如果结果指示文件包括恶意软件,则可以通过任何合适的用户界面向用户提供该结果,和/或阻止访问该文件的操作。但是,如果结果指示文件不包括恶意软件,则允许该操作。如果在方框208处来自服务器104的响应指示储存库104不具有与文件有关的任何信息,或指示扫描操作的结果不在其具有的与文件有关的信息中,则在方框212处获得文件的扫描结果。可以用任意合适的方式获得结果,包括依照以下结合图4A、4B和4C描述的任何技术。例如,在恶意软件扫描工具包括扫描文件的完整功能的实施例中,计算设备 102上的恶意软件扫描工具可以使用存储在计算设备102本地的恶意软件定义来自己扫描文件。在其它实施例中,计算设备从别处接收扫描结果。在方框214处,一旦以任意合适的方式导出了扫描结果,则可以向服务器104提供结果从而使其被放置在储存库104A中以由其它计算设备102在确定特定文件是否包括恶意软件时使用,并且过程200结束。在本发明的一些实施例中,在获得过程200的结果(文件是否包括恶意软件)后,可以用任意合适的方式使用该结果。例如,结果可以通过任何合适的用户界面向用户提供,或者存储在结果的本地存储中。在一些实施例中,向用户提供结果可以包括避免向用户显示一个或更多个通知。例如,在应用程序可被配置为向用户通知访问文件造成的潜在风险(例如通知用户存在与访问通过电子邮件接收到的可执行文件相关联的恶意软件风险的电子邮件客户端)的情况下,该应用程序可适于使用在方框210 和212中的一个所获得的结果来确定是否显示通知。以这种方式,在以这种方式使用结果的本发明实施例中,如果发现文件不包括恶意软件,则不向用户示出有关潜在风险的通知。 作为另一个示例,在本发明的一些实施例中,如果扫描结果指示文件包括恶意软件,则可以向用户通知该恶意软件和/或访问文件的操作可被禁止或延迟直到用户无视禁止访问的决定为止。在一些实施例中,如果扫描结果指示文件包括恶意软件,则可以用任意合适的方式“清理”文件,诸如通过从文件中删除恶意软件或通过用已知清洁的文件副本来替换文件。这可以用任意合适的方式完成,包括依照由恶意软件定义提供的信息。例如,在一些实施例中,如果确定文件不包括恶意软件,则可以向储存库104A提供文件的标识信息,从而如果文件的其它副本被确定为包括恶意软件,则可以在清理过程期间提供文件的清洁版本以替换“感染的”版本。向储存库104A提供的这一标识信息可以是与文件有关的任意合适的信息,包括文件属性(例如标题、次要和/或主要版本号等)、文件的一部分(例如在文件中特定位置处的一系列字节)、由文件的供应商/提供者提供的标识文件和/或文件源的文件数字签名、和/或与文件有关的任何其它信息。在一些实施例中,标识信息可以是在“清洁”文件受到恶意软件感染时仍保持静止的信息,以便可以标识底层文件(即受到恶意软件感染而同意文件被清理的文件)。但是,应当理解本发明的实施例不限于使用特定类型的信息来标识要清理的文件,因为本发明的实施例不限于这一方面。在一些实施例中,当向储存库104A提供这一标识信息时,储存库104A可以作为响应提供该文件的来自储存库和/或来自计算机系统中的另一个客户计算机102的“已知良好”的版本。这些已知良好的文件可以是被确定为不包含恶意软件的底层文件的副本,并且可以用于通过使用好的副本替换包含恶意软件的文件来“清理”该包含恶意软件的文件。 可以用任意合适的方式维护与文件的已知良好副本有关的信息。例如,储存库104A可以维护与文件的已知良好副本有关的信息,诸如哪些计算设备具有这些文件的副本,或者可以自己维护文件的已知良好副本的数据存储。在一些实施例中,已知良好文件的数据存储可以用诸如与操作系统有关的文件等一些类型的文件来填充,并且可以由与这些文件相关联的计算设备和/或供应商(例如,操作系统的供应商)来填充,但是应当理解,任意合适的信息可以被存储在数据存储中,并且可以用任意合适的方式提供。可以用任意合适的方式使用向储存库104A提供的标识信息来确定要用作替换的已知良好的文件,诸如通过将标识信息与储存库104A中或其它计算设备上的已知良好文件的属性比较。如果已知良好的副本在储存库104A中或另一个计算设备上存在,并且被标识,则已知良好文件的副本随后可以被提供给请求它的计算设备,并且被用来替换受感染的文件(即被确定为包含恶意软件的文件)。以这种方式,在本发明的一些实施例中,如果确定文件包含恶意软件,则可以通过充分利用社区来提供文件的清洁副本来移除恶意软件,并且可以使计算设备能够使用含有恶意软件的文件。但是,应当理解,不是所有的实施例都可以使用过程200的结果,或者可以不使用指示文件不包括恶意软件的结果,因为本发明的实施例不限于以任何特定的方式使用扫描结果。如以上所述,例如过程200等过程可被用于在确定特定文件是否包括恶意软件时降低计算设备上的负担。通过使计算设备能够查询先前确定的扫描结果的储存库,并且依赖这些先前确定的结果,计算设备避免了每次访问文件时都必须计算其自己的扫描结果,并且降低了用于确定文件是否包括恶意软件的处理负担。图1的服务器104还可以在其上实现的各种软件工具来实现各个任务,并且一个此类工具可以是接收和处理对储存库104A的寻求确定特定文件是否包括恶意软件的查询的储存库工具。可以用任意合适的方式实现这一储存库工具。图3示出依照本发明的一个实施例的可以在储存库工具中实现的说明性过程 300。但是,应当理解,过程300仅是可以被实现以实现此处描述的技术的示例性类型的过程,并且其它的过程是可能的。此外,尽管可以参考图1的计算机系统来描述过程300,但是应当理解过程300不限于在图1的示例性计算机系统中操作,并且其可以在任意合适的计算机系统中操作。过程300在方框302处开始,其中储存库工具从计算设备(诸如计算设备102)接收具有特定文件的文件签名的查询,该查询寻求确定储存库104A是否包含与该特定文件有关的信息。在方框304处,使用查询中提供的文件签名开始搜索储存库。可以用任何特定的方式实现这一搜索。例如,如果储存库104A包括列出多个文件签名的表,则可以将查询中提供的文件签名与该多个文件签名以任意合适的方式比较(例如使用诸如二分搜索技术的搜索算法)以确定是否存在匹配。由于文件签名是可用于唯一标识特定文件的信息,因此如果存在查询中提供的文件签名与存储在储存库104A中的文件签名的匹配,则存储在储存库104A中的信息是与由发出该查询的计算设备102访问的特定文件有关的信息。 如果存在匹配,则确定在储存库104A中与文件签名相关联地存储的信息是否包括对该文件的以前扫描操作的结果。例如,如果方框302的查询是来自计算设备102A的,则存储在储存库104A中的结果可以是由计算设备102A或诸如设备102B等另一个计算设备以前执行的扫描操作的结果。如果在方框308处确定储存库104A包括对该文件的以前扫描操作的结果,则在方框310处由储存库工具向客户机提供该结果。可以直接提供结果来对查询进行响应,或者储存库工具可以作出其具有结果的响应并且用该结果对来自发出原始查询的计算设备102 的后续查询作出响应。然后过程300结束。但是,如果在方框308处确定储存库104A不包括对文件的以前扫描操作的结果, 则在方框312处储存库工具可以向发出方框302的查询的计算设备102作出其不具有结果的响应。然后可以用任意合适的方式扫描文件,包括通过以下结合图4A、4B和4C描述的任何示例性过程。例如,在客户机计算设备的恶意软件扫描工具包括扫描文件的完整功能的实施例中,计算设备102上的恶意软件扫描工具可以使用计算设备102本地存储的恶意软件定义来自己扫描文件。在替换的实施例中,如以下所述,可以由服务器104或其它计算设备执行扫描。在方框314处,一旦以任意合适的方式导出了扫描的结果,则储存库工具接收结果并且将其存储在储存库104A中,以便该结果可由任何计算设备102在确定特定文件是否包括恶意软件时使用。然后过程300结束。如果在图2的方框208处或在图3的方框308处确定储存库104A不包括文件的以前扫描操作的结果,则可以用任意合适的方式扫描文件。在一些实施例中,如以下所述, 如何和在哪里执行扫描可以取决于发出查询的计算设备102是如何实现的,连同系统的其它属性和特征。此外,在系统包括多个计算设备102,诸如图1的示例性计算系统的计算设备102A、102B和102C的情况下,这些计算设备每一个都可以用不同的方式实现,并且从而可以用不同的方式实现扫描操作。例如,计算设备102A可以被实现为台式计算机并且能够在本地执行恶意软件扫描,而计算设备102B可以被实现为个人数字助理(PDA)并且不具有在本地实现扫描的处理能力或存储资源,并且可以改为依靠计算机系统中的其它计算设备实现扫描以确定特定文件是否包括恶意软件。因此,可为不同的计算设备和/或不同的计算机系统实现不同的过程以实现特定文件的扫描。图4A、4B和4C示出可以用于执行对不具有存储在储存库104A中的结果的文件的扫描的三个不同的示例性过程。应当理解,这些过程仅是可以实现扫描文件的说明性类型的过程,并且其它过程是可能的。此外,应当理解尽管以下描述这些过程为相互替换的,在本发明的一些实施例中可以在特定计算设备或计算机系统中实现这些过程中的两个或更多个,并且可以基于执行过程时的条件来在它们之间做出选择。例如,可以基于在实现扫描过程时计算设备102可用的资源,包括由计算设备102执行的其它过程放置在处理器或者计算设备102的存储资源上的负载,来做出决定。图4A示出在储存库104A不具有特定文件的以前扫描操作的结果时用于实现对该文件的扫描的一个示例性过程。图4A的过程400A可以由具有包括扫描文件的完整功能的恶意软件扫描工具的计算设备102实现。过程400A在方框402处开始,其中客户机计算设备102从服务器104接收指示储存库104A不包括以前扫描操作的结果的否定响应。在方框404处,计算设备102的恶意软件扫描工具使用扫描恶意软件文件的任何合适技术来在本地执行扫描。例如,恶意软件扫描工具可以使用恶意软件定义(诸如在图1的数据存储106A中存储的那些)以确定文件是否包含恶意软件。在方框406处,计算设备102在本地使用结果,并且可任选地向储存库 104A提供方框404的扫描操作的结果。然后过程400A结束。图4B示出在储存库104A不具有特定文件的以前扫描操作的结果时用于实现对该文件的扫描的另一个示例性过程400B。图4B的过程400B可以由服务器104在向服务器 104发出原始查询的计算设备102 (例如图3中方框302的查询)不具有包括扫描文件的完整功能的恶意软件扫描工具时实现。这是因为计算设备102不具有实现扫描文件的资源, 或者因为任何其它原因。过程400B在方框412处开始,其中服务器104确定储存库104A没有存储文件的以前扫描操作的结果。在方框414处,服务器104向客户机计算设备102作出结果不在储存库104A中的响应,并且(当客户机被配置为响应于接收到还没有结果存在的指示来提供待扫描的内容时,在系统中显式地或隐式地)请求计算设备102向服务器提供文件。在方框416处,服务器104接收文件并且使用服务器104上的恶意软件扫描软件来在本地扫描文件。可以使用扫描恶意软件文件的任何合适技术来执行这一扫描。例如,恶意软件扫描工具可以使用恶意软件定义(诸如在图1的数据存储106A中存储的那些)来以确定文件是否包含恶意软件。在方框418处,扫描操作的结果被存储在储存库104A中,并且向客户机计算设备102提供结果。然后过程400B结束,并且可以从服务器104删除在方框416处接收的文件的内容。图4C示出在储存库104A不具有特定文件的以前扫描操作的结果时用于实现对该文件的扫描的另一个示例性过程400C。可以由服务器104在服务器104和计算设备102都不能扫描文件时实现,或者为了任何其它目的(例如为了通过从服务器卸载一些或全部的扫描来在多个计算机中分发扫描负载)。如果服务器104和计算设备102都不具有能够扫描文件的恶意软件扫描软件,如果服务器104和计算设备102都不具有扫描文件的可用资源,或者因为任何其它的原因或原因的组合(例如计算设备102没有资源并且服务器104 没有软件),则可以做出服务器104和计算设备102都不应执行扫描的确定。或者,如以上所述,确定可以基于被设计为分发扫描的负担和对执行恶意软件扫描的负载进行平衡的技术,这可以用任意合适的方式实现。图4C的过程400C在方框422处开始,其中服务器104确定储存库104A没有存储文件的以前扫描操作的结果。在方框414处,服务器104标识能够扫描文件的另一个客户机计算设备102。例如,如果计算设备102A原始地请求扫描并且不能够自己扫描文件,则计算设备102B可以被标识为能够扫描文件。在方框4 处,服务器104向原始客户机计算设备102A(即原始查询的源)响应,通知客户机计算设备102A储存库104A不具有以前扫描操作的结果,并且请求原始客户机计算设备102A间接地通过服务器或直接地向在方框似4 处被标识为能够实现扫描的客户机计算设备(即设备102B)提供文件。原始客户机计算设备102A然后可以用任意合适的方式向所标识的客户机计算设备102B和/或服务器提供文件。所标识的客户机计算设备102B的恶意软件扫描工具然后可以用任意合适的方式扫描文件,并且在方框4 处发出请求的客户机(例如计算设备102A)和/或服务器104接收这一扫描的结果。当服务器104接收到扫描结果时,它可以将结果存储在储存库104A中。 此外,当结果没有直接向原始客户机计算设备102A(即原始查询的源)提供时,服务器可以提供该结果。在方框4M处,可以用任意合适的方式来执行对能够扫描文件的客户机计算设备的标识。例如,服务器104可以存储标识具有在本地扫描文件的能力的客户机计算设备的信息。服务器104在检测到在方框4M处标识计算设备的需要后,可以然后从具有这一能力的计算设备的列表中选择计算设备。该选择可以随机地做出,可以使用循环技术做出,可以基于对当时每个计算设备可用资源的知识而做出,或者可以基于任意合适的负载平衡技术。例如,服务器104可以具有由当前放置在每个计算设备上的负载所使用的处理和/或存储资源的知识,并且可以选择具有最多可用资源的计算设备。当基于可用资源做出选择时,则可以使用任意合适的选择技术以做出选择。在其它实施例中,方框4M的标识可以基于文件自身的特征,或者基于在选择时通信网络100上的通信量。例如,如果服务器104知道文件较大或者通信网络100当时是拥塞的,则服务器104可以标识在地理上接近原始客户机计算设备102A的计算设备102B以限制计算设备之间的文件传输时间以及限制对网络的影响。如以上所述,本发明的实施例不限于以任何特定的方式选择用于执行扫描的计算设备。从上述内容应当理解,在一些实施例中,计算设备102的恶意软件扫描工具适于在本地执行对文件的扫描和/或向服务器104查询以确定储存库104A是否存储有扫描结果。在本发明的一些实施例中,这一恶意软件扫描工具可以确定是查询服务器104还是在本地执行扫描。可以用任意合适的方式基于任意合适的因素做出这一确定。图5A和
出可以由恶意软件扫描工具实现以做出这一确定的两个此类过程。但是,应当理解,本发明的实施例不限于实现这些过程、基于这些因素的过程、或者用于做出这一确定的任何特定过程。图5A的过程500A在方框502处开始,其中计算设备102的恶意软件扫描工具检测到访问文件的操作。如以上结合图2的方框202所述,这可以用任意合适的方式为任意合适的操作完成。在方框504处,恶意软件扫描工具可以检查文件以确定是首先查询服务器104,还是在本地扫描文件而不查询服务器104。在图5A的说明性示例中,如果文件被检测为大小低于特定阈值,例如1千字节(KB)或1兆字节(MB),或者任何其它合适的阈值, 则在方框506处可以在本地扫描文件而不查询服务器104。这可以完成是因为扫描文件所需的资源不大,使得从查询服务器104获得的效率提高也不大,并且会被与服务器104通信的性能影响所抵消。但是,如果在504方框处确定文件大于阈值大小,则在方框508处可以用以上结合图2的方框206所述的相同方式在方框508处查询服务器104。在方框506或 508之后,过程500A结束。图5B示出可以另外或替换地用于确定是否查询服务器104的另一个过程500B。 过程500B在方框522处开始,其中计算设备102的恶意软件扫描工具检测到访问文件的操作。如以上结合图2的方框202所述,这可以用任意合适的方式为任意合适的操作完成。在方框5M至5 处,恶意软件扫描工具然后可以基于待查询或扫描的文件的类型来确定是首先执行查询还是在本地扫描文件而不查询服务器104。可以做出方框5M至528的决定以确定文件是否可能具有存储在储存库104A中的结果。如果结果不可能被存储在储存库104A中,则恶意软件扫描工具可以放弃查询并且在本地扫描文件。在方框5M处,确定文件是否是系统文件。系统文件可以是与恶意软件扫描工具在其上执行的计算设备102的核心组件有关的任何文件,诸如与计算设备102的操作系统(例如微软Windows系列的操作系统,可以从华盛顿州雷德蒙市的微软公司购买) 相关联的文件。其它计算设备可能具有与计算设备102相同或相似的系统文件(诸如相同或相似的操作系统),并且因此其它计算设备先前可能已经扫描过系统文件并且将结果放置在储存库104A中。因此,如果在方框5M处确定文件是系统文件,则可以在方框530处查询服务器104。但是,如果在方框5 处确定文件不是系统文件,则在方框5 处确定文件是否与软件应用程序相关。应用程序可以是被安装在计算设备102上使该计算设备能够实现特定功能的任何软件应用程序。诸如可以从微软公司购买的Microsoft Word的文字处理程序是这样的应用程序的一个示例。其它计算设备102可能已经在其上安装过与计算设备102 相同或相似的应用程序,尤其是在该应用程序是流行的并且正在被广泛使用的情况下,并且因此其它计算设备可能已经以前扫描过该文件并且已将结果放置在储存库104A中。因此,如果在方框5 处确定文件是应用程序文件,则可以在方框530处查询服务器104。尽管没有在图5B中示出,在实现与过程500B相似的过程的本发明的一些实施例中,方框5 的决定还可以包括确定该软件应用程序文件是否与“流行的”软件应用程序相关联。如果该文件不与流行的应用程序相关联,则结果不太可能会被存储在储存库104A中,并且因此在本地扫描该文件而不是首先查询服务器104。可以用任意方式完成确定应用程序是否是 “流行的”(例如通过咨询一个列表)。如果在方框5 处确定文件不与软件应用程序相关联,则在方框5 处确定文件是否是数据文件。数据文件可以是包括数据内容的任何文件,数据内容诸如由计算设备的用户或由计算设备上执行的过程生成的与应用程序或系统进程相关联的数据内容。存储文本、图像、电影、音频、或其它类型的生成内容的文件可以是数据文件。数据文件可能不是在不同计算设备之间被广泛使用的,诸如当数据文件是由恶意软件扫描工具在其上执行的计算设备102的用户生成时。因此,如果数据文件不是被广泛使用的,则其它计算设备不太可能访问过该特定文件,并且因此以前扫描操作的结果不太可能在储存库104A中。如果文件是数据文件,则在方框532处,可以由恶意软件扫描工具在本地扫描文件。尽管没有在图5B 中示出,但是在实现与过程500B相似的过程的本发明的一些实施例中,方框528的决定还可以包括确定数据文件是否是“流行的”数据文件。如果数据文件是流行的,诸如由例如计算设备102A、102B和102C的用户等不同用户在其上合作的文件,则结果更可能被存储在储存库104A中,并且因此首先查询服务器104。可以用任何方式完成确定数据文件是否是“流行的”(例如通过咨询已知流行的数据文件的列表,或者通过查询流行数据文件的用户)。如果在方框5 处确定文件不是数据文件,并且因此不是所枚举的各类型的文件之一,则在方框530处,在没有与结果是否可能在储存库104A中有关的信息的情况下,过程可以默认首先查询服务器104以尝试实现由对服务器104进行查询而产生的效率增益。但是,在本发明的替换实施例中,对于未知类型文件的默认选择可以是在本地执行扫描。一旦在方框532处在本地扫描了文件,或者在方框530处查询了服务器,则过程 500B结束。在实现与过程500A和/或500B相似的过程的本发明的一些实施例中,一旦通过在方框506和532之一的本地扫描获得了扫描操作的结果,则可以用任意合适的方式向储存库104A提供结果,诸如通过将结果通信传递给服务器104。应当理解,尽管图5A和5B的过程500A和500B被描述为相互替换的,但是在本发明的实施例中可以实现使用诸如文件类型和文件大小等多于一个因素的过程,以确定是查询服务器104还是在本地执行扫描。还应当理解,并不是本发明的所有实施例都限于执行一过程以确定是查询服务器 104还是在本地执行扫描,因为在本发明一些实施例中计算设备102的恶意软件扫描工具总是查询服务器104。以上已经描述了用于对恶意软件扫描结果的储存库104A作出贡献并使用该储存库104A的技术。在本发明的一些实施例中,储存库104A —旦被创建就可以持续增长并且被永久使用。但是,在本发明的其它实施例中,储存库104A可以周期性地被完全或部分地擦除/转储清除并且重建。这可以因为任意合适的原因而完成,以下结合图6描述其示例。图6示出可以由储存库工具实现以及由服务器104实现以对储存库104A进行周期性地部分或全部地转储清除的示例性过程600。但是,应当理解,实现对储存库104A的周期性地转储清除的本发明的实施例不限于实现图6所示的特定过程600,也不限于实现评价在示例性过程600中考虑的相同参数的过程。基于任意合适的因素的任意合适的过程可以用于确定是否以及何时转储清除储存库104A。过程600在方框602处开始,在此之前储存库104A已经被创建,并且可能由计算设备102作出了贡献并被它使用。因此,储存库104A可以具有与文件相关联并且指示这些文件是否已经被确定为包括恶意软件(即结果)的一个或更多个条目。在方框602处,确定储存库104A中的结果所基于的恶意软件定义和/或恶意软件扫描软件是否已经被更新。例如,如果诸如图1中数据存储106A中所存储的恶意软件定义等恶意软件定义已经被更新,则与之前相比,这些恶意软件定义现在可以将更多的文件标识为恶意软件。从而,以前在旧定义下已经被确定为不包括恶意软件的文件可能会在新的定义下被确定为包括恶意软件。这可能是因为创建恶意软件定义的供应商最近发现感染以前被确定为不包括恶意软件的文件的计算机病毒或其它恶意软件,并且更新了恶意软件定义以反映该发现。因此,使用旧定义确定的结果将不再是可靠的,并且不应被使用。同样地,如果由恶意软件扫描工具实现以执行扫描的恶意软件扫描软件已经被更新为以不同方式扫描文件(例如,来校正用于扫描文件的方法中的缺陷或计算机软件隐错),则使用旧软件被确定为不包括恶意软件的文件可能现在被确定为包括恶意软件。因此,使用旧软件确定的结果将不再是可靠的,并且不应被使用。因此,如果在方框602处确定恶意软件定义和/或恶意软件扫描软件已经被更新, 则在方框608处服务器104的储存库工具可以全部地或者在本发明的一些实施例中部分地对储存库194A进行转储清除。仅部分地对部分储存库104A进行转储清除的本发明的实施例可以转储清除储存库104A的任意合适部分,同时维护任意其它合适的部分,并且这一确定可以基于任意合适的因素。例如,在本发明的一些实施例中,可以基于由恶意软件扫描软件使用的恶意软件定义的类型来做出这一确定。如以上结合图1所述,恶意软件定义可以包括文件特征的“白名单”和/或“黑名单”。文件特征的白名单可以用于确定与文件特征匹配的文件不包括恶意软件,而文件特征的黑名单可以用于确定与文件特征匹配的文件包括恶意软件。当储存库104A将被部分转储清除时,在这些定义已经被扩展(即添加更多定义)而不是收缩(即删除定义)的假设下,可以确定转储清除哪一部分。因此,如果文件特征的黑名单以前指示一文件是恶意软件,则文件特征的新的黑名单可能仍将指示该文件包括恶意软件。这样,当恶意软件定义是文件特征的黑名单时,储存库104A中的指示文件包括恶意软件的结果仍将是可靠的,并且可以被留在储存库104A中。类似地,当恶意软件定义是被确认是好的文件特征的白名单时,储存库104A中的指示文件不包括恶意软件的结果仍将是可靠的,并且可以被留在储存库104A中。以这种方式,在转储清除之后储存库 104A仍可以存储可以由计算设备102用于确定文件包括或不包括恶意软件的一些信息。可以用任意合适的方式实现方框608处的对储存库的转储清除。在本发明的一些实施例中,当条目被从储存库104A中转储清除时,可以从储存库104A中移除与该条目相关联的所有信息。在本发明的其它实施例中,与一条目相关联的一些信息可以被保留在储存库104A中。可以保留任意合适的信息,以下结合图7A和7B描述其示例。如果在方框602处确定恶意软件定义和/或恶意软件扫描软件尚未被更新,则在方框604处确定自储存库104A上次被转储清除以来是否已经经过了阈值数量的时间。如果经过了阈值时间,则在方框608处储存库可以完全或部分地被转储清除。这一阈值时间可以用于确保储存库104A不会变得太大以至于变得没有搜索效率(例如,条目的数目足够大以至于为搜索特定条目平均消耗太长的时间,从而不会从平均搜索中获得效率增长,并且相反文件应当被扫描)。与以上对在对恶意软件定义或扫描软件的更新之后的部分转储清除的描述一样,在方框608处转储清除储存库104A可以在确定已经经过了阈值时间之后被全部或部分地执行。例如,可以在阈值时间之后转储清除储存库104A中的所有条目,或者仅转储清除在过去的阈值时间创建的条目从而保留最近建立的条目,或者仅转储清除在过去的阈值时间最早访问的条目从而保留更为经常或更新近地查询的文件。任意合适的时间都可以被用作阈值时间。在本发明的一个实施例中,阈值时间可以是一星期,但是可以使用其它时间段。如果在方框604处确定阈值时间还没有过去,则在方框606处,确定主存储存库 104A的服务器104是否已经被关机,诸如在关机或重启期间。如果服务器104被关机,则攻击者可能已经在关机期间篡改了在储存库104A中存储的信息,诸如通过从服务器104中移除存储储存库104A的存储介质以及使用另一个计算设备来操纵它们。为了避免这一可能性,如果在方框606处确定服务器104被关机,则在方框608处转储清除储存库104A。但是,如果在方框608处确定服务器104没有被关机,则过程600返回至方框602 处以继续监视是否已经满足这些条件中的任一个。在全部或部分地转储清除了储存库104A之后,可以通过向储存库104A中添加更多条目来重建储存库104A,以确保计算设备102通过能够使用储存库中的结果来看到效率增长。在本发明的一些实施例中,服务器104和储存库104A可以采取被动的方式来重构, 并且等待计算设备102贡献文件的恶意软件扫描的结果。但是,在本发明的其它实施例中,服务器104和储存库104A可以采取更主动的方式来重建储存库104A。在一个实施例中,服务器104可以请求计算设备102A、102B和102C 中的每个重新扫描该计算设备以前已经扫描过的所有文件并且向储存库重新提交结果。在本发明的其它实施例中,服务器104可以仅为被指示为流行的文件请求这一自动扫描。图8A和8B示出可以由服务器104的储存库工具实现以用于在转储清除之后自动重新填充储存库104A的两个示例性过程。在这些过程中,仅自动扫描被检测为流行的文件,并且结果被提交至储存库104A。流行文件可以是已经在储存库104A中被查询过阈值次数的文件。这一阈值次数可以仅基于文件已经被查询的次数,例如被查询超过十次的所有文件都是流行的,或者可以基于任意合适的另外或替换的因素。例如,流行性的检测还可以具有时间分量,例如在一天中的某个时候被查询超过十次的文件是流行的,或者在前一天被查询超过十次的文件是流行的。可以做出任意合适的确定以决定哪些文件是流行的以及特定文件是否是流行的。当文件被检测为是流行的时,则该文件可以在储存库104A中由储存库工具标记为流行的,并且可以在转储清除之后使用这一信息。过程800A和800B示出其中可以在转储清除之后使用与流行文件有关的信息来重新填充储存库的两个示例性方法,但其它方法也是可能的。可以用任意合适的方式确定和存储与流行文件相关的这一信息。例如,在本发明的一些实施例中,可以响应于向储存库104A提出的确定储存库104A是否包括与文件有关的条目的查询来做出文件是否流行的确定。图7示出可以用于基于由储存库104A接收的查询来确定文件是否流行的过程700,但是应当理解这一过程仅是说明性的,并且其它过程是可能的。图7的过程700在方框702处开始,其中服务器104的储存库工具接收对储存库 104A中的与特定文件有关的条目的查询,并且相应地作出响应,包括用以上所述的任何方式来作出响应。在方框704处,储存库工具使用任意合适的技术检测文件是否是流行的。 例如,储存库工具可以维护从计算设备接收的每个查询的记录以及与该查询有关的文件(即,被查询的文件)。如果该记录指示文件已经被查询过阈值次数(例如十次),则可以在方框706处将文件标记为流行的,并且过程700结束。图8A示出可以利用与流行文件有关的信息(包括由诸如图7的过程700等过程创建和存储的信息)以在转储清除之后重新填充储存库的说明性过程800A。过程800A在方框802处开始,其中从向储存库104A查询被标记为流行的文件的计算设备之一处检索该文件,并且将该文件存储在可由服务器104访问的位置处。例如,文件可以被存储在本地, 或者被存储在服务器104可访问的网络数据存储上。在方框804处,当储存库工具检测到储存库104A已经被转储清除时,可以自动扫描流行文件(存储在可由储存库工具访问的位置处)并且结果被放置在储存库104A中。可以用任意合适的方式执行方框804的扫描。在一些实施例中,服务器104可以使用存储在服务器104可访问的位置处的文件副本来自己扫描所有流行文件。在其它实施例中,可以分发扫描所有流行文件的任务,从而向其它计算设备102提供待扫描的至少一些文件,并且向储存库104A提供结果。一旦流行文件已经被扫描并且结果已经被放置在储存库104A 中,过程800A结束。以这种方式自动地扫描文件确保了与预期会被查询的文件(因为它们是流行文件)相关联的结果被尽快放置在储存库中,从而使其在被查询时就位于储存库中。图8B示出在本发明的一些实施例中可以由储存库工具实现的用于在转储清除之后重新填充储存库104A的替换过程800B。过程800B在方框822处开始,其中当文件被标记为流行时(诸如在图7的方框706处),储存库104A中的条目也可以被更新以标识对该文件的查询的至少一个源,并且从而标识具有该文件的副本的至少一个计算设备102。标识查询的至少一个源的信息可以是标识计算设备的任意合适的信息,包括因特网协议(IP) 地址或诸如域名等计算机名。在方框拟4处,当储存库工具检测到储存库104A已经被转储清除时,可以自动地扫描流行文件并且将结果放置在储存库104A中。可以用任意合适的方式执行方框824的扫描。例如,储存库工具然后可以向所标识的对文件的查询的源中的一个或更多个发出扫描文件并将结果放置在储存库中的指令。作为查询的源的计算设备102然后可以扫描文件并将结果放置在储存库104A中。一旦已经扫描过流行文件并且结果已经被放置在储存库 104A中,过程800B结束。以这种方式自动地扫描文件确保了与预期会被查询的文件(因为它们是流行文件)相关联的结果被尽快放置在储存库中,从而使其在被查询时就位于储存库中。应当理解图8A和8B的过程800A和800B仅是能够在本发明的实施例中实现的使用与流行文件有关的信息在转储清除之后重建储存库的说明性类型的过程。重建储存库的本发明的实施例不限于以任何特定的方式重建储存库,也不限于基于文件的流行性重建储存库。还应当理解,不是所有本发明的实施例都在转储清除之后自动地重建储存库,因为本发明的实施例不限于采用这种方式。参照图1的示例性计算机系统已经描述了上述的用于实现此处描述的原理以通过使计算设备能够利用由其它计算设备以前确定的结果来提高恶意软件扫描效率的示例性技术和过程。但是,如上所述,本发明的实施例不限于在图1的示例性计算系统中操作, 并且可以在任意合适的计算机系统中实现。
图9示出作为图1所示的计算机系统的替换的一个此类计算机系统。用相同的标号标记出图9中的与图1中的元素相同或相似的元素。如图9所示,并非计算机系统包括由服务器104维护的储存库104A,储存库以分布式的方式被主存为计算设备102A、102B和 102C中的每一个处的储存库900A、900B和900C。储存库900A、900B和900C中的每一个都可以持有储存库的一部分,或者可以持有使用任意合适的同步或复制技术与其它储存库副本保持同步的储存库的完整副本。可以用任意合适的方式执行对储存库900A、900B和900C 的查询,包括通过查询计算设备102本地的储存库副本,查询存储与计算设备102所搜索的文件类型有关的信息的特定储存库,或者查询所有储存库。在诸如图9所示的计算机系统中,上述由服务器104上的储存库工具实现的任务可以在一个或更多个计算设备102上实现。应当理解其它替换的计算机系统也是可能的,因为本发明的实施例不限于在任何特定的计算机系统中操作。以上已经描述了执行使计算设备能够利用由其它计算设备以前确定的结果以提高扫描未授权软件的总体效率,和/或向不能够自己执行此类扫描的设备提供授权扫描的好处的技术的本发明的各实施例。上述的有些技术与可以在需要执行文件扫描以确定文件是否被授权的客户机计算设备上实现的过程有关。由客户机执行的这些过程可以包括在在本地执行扫描之前查询授权确定的共享储存库。上述的其它技术与用于维护授权确定的共享储存库有关,包括通过存储包含特定文件的唯一标识符以及那些特定文件先前是否被确定为已授权的指示的条目。其它技术与用于在转储清除储存库之后重新填充储存库的过程有关,包括通过自动地扫描流行文件以确定其是否是授权的(例如是否包括恶意软件)并且将那些扫描的结果放置在储存库中。本发明的实施例不限于执行这些技术的任何一种或全部。本发明的一些实施例可以实现这些技术中的一个,而本发明的其它实施例可以实现这些技术中的两个、三个或更多。可以用任意合适的方式实现本发明的实施例以实现与恶意软件扫描有关的任意合适的功能。根据此处描述的原理操作的技术可通过任何适合的方式来实现。上述讨论中包括了示出了启用这些技术的各个过程的步骤和动作的一系列流程图。以上的流程图的处理和判定框表示可被包括在实现这各种过程的算法中的步骤和动作。从这些过程中导出的算法可被实现为与一个或多个专用或多用处理器相集成的软件并指导该一个或多个专用或多用处理器的操作。此外,尽管以上结合本发明的以软件实现的特定实施例描述了这些过程中的一些,但这些过程可被实现成在功能上等效的电路,如数字信号处理(DSP)电路或专用集成电路(ASIC),或可以用任何其他合适的方式来实现。应当理解,此处包括的流程图未描绘任何特定电路的句法或操作,也未描绘任何特定的编程语言或编程语言类型的句法或操作。更确切而言,各流程图示出了本领域普通技术人员可用于制造电路或实现计算机软件算法来执行实现此处描述的各类型的过程的特定装置的处理的功能信息。还应当明白, 除非在本文中另外指明,否则所描述的步骤和动作的具体次序仅仅是说明性的,并且可以在本文描述的原理的各个实现和实施例中改变而不背离本发明。因此,某些实施例中,此处描述的技术可以用被实现为软件的计算机可执行指令来具体化,软件包括应用软件、系统软件、固件、中间件、或任何其他适合类型的软件。这样的计算机可执行指令可使用多种适合的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。当此处描述的技术体现为计算机可执行指令时,这些计算机可执行指令可以用任何合适的方式来实现,包括被实现为多个功能工具,每个功能工具都提供为了完成根据这些技术来操作的算法的执行所需的一个或多个操作。不论是如何实例化的,“功能工具”都是计算机系统的一个结构组件,其在与一个或多个计算机集成并由其执行时使得该一个或多个计算机执行具体操作任务。功能工具可以是软件元素的一部分或是整个软件元素。例如,功能工具可被实现为进程的函数、或被实现为分立的进程、或被实现为任何其他合适的处理单元。如果此处描述的技术被实现为多个功能工具,则每一功能工具可以按其自己的方式来实现;不必将所有功能工具以相同的方式来实现。另外,这些功能工具可在适当时并行或串行执行,并且可使用在其上执行这些模块的计算机上的共享存储器、使用消息传递协议、或以任何其他合适的方式,来在彼此之间传递信息。一般而言,功能工具包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,功能工具的功能可以如它们在其中操作的系统所需来组合或分布。在某些实现中,实现此处的技术的一个或多个功能工具可一起形成完成的软件包,如作为诸如独立授权扫描应用等软件程序应用。在替换实施例中,这些功能工具可适用于与其他不相关的功能工具和/或进程交互,来实现诸如恶意软件扫描应用等软件程序应用。 在其他实施例中,功能工具可以适于与其他功能工具交互使得形成操作系统,该操作系统包括可从华盛顿州雷蒙德市的微软公司获得的Microsoft Windows操作系统。换言之,在某些实现中,功能工具可以可替换地被实现为操作系统的一部分或在操作系统外部实现。用于执行一个或多个任务的某些示例性功能工具已在此处描述。但应当理解,所描述的功能工具和任务划分仅是可实现此处描述的示例性技术的功能工具的类型的说明, 且本发明不限于以任何特定数量、划分、或功能工具类型来实现。在某些实现中,所有功能可在单个功能工具中实现。应当理解,在某些实现中,此处描述的功能工具中的某一些可以与其他功能工具一起实现或分开实现(即,作为单个单元或分开的单元),或者这些功能工具中的某一些可不被实现。在某些实施例中,实现此处描述的技术的计算机可执行指令(但被实现为一个或多个功能工具或以任何其他方式实现时)可以被编码在一个或多个计算机可读存储介质上来向该存储介质提供功能。这些介质包括诸如硬盘驱动器等磁介质、诸如压缩盘(CD)或数字多功能盘(DVD)等光介质、持久或非持久固态存储器(例如,闪存、磁RAM等)、或任何其他合适的存储介质。这样的计算机可读存储介质可被实现为以下图10和11中所述的计算机可读存储介质1006或1106(即作为计算设备1000或1100的一部分)或实现为独立的、单独的存储介质。应当理解,如此处所使用的那样,包括“计算机可读存储介质”的“计算机可读介质”是指具有可在其上记录数据的过程期间用某种方式改变的至少一种物理性质的有形存储介质。例如,计算机可读介质的物理结构的一部分的磁化状态可在记录过程中更改。另外,上面所述的一些技术包括以某些方式存储信息(例如数据和/或指令)以供所述技术使用的动作。在这些技术的一些实施方式中——比如在这些技术被实施成计算机可执行指令的实施方式中,该信息可以被编码在计算机可读存储介质上。在本文将特定结构描述为用于存储该信息的有利格式时,这些结构可以用于提供这些信息在被编码在该存储介质上时的物理组织。然后,这些有利的结构可以通过影响与信息交互的一个或多个处理器的操作(例如通过增加由处理器执行的计算机操作的效率)来向存储介质提供功能。在其中各技术可被具体化为计算机可执行指令的某些但非全部实现中,这些指令可以在任何适合的计算机系统(包括图1和8的示例性计算系统)中操作的一个或多个合适的计算设备上执行。包括这些计算机可执行指令的功能工具可以与单个多用途可编程数字计算机装置、共享处理能力且联合执行此处所描述的技术的两个或更多多用途计算机装置的协作系统、专用于执行此处所描述的技术的单个计算机装置或计算机装置的协作系统 (位于同处或在地理上分布)、用于实现此处所描述的技术的一个或多个现场可编程门阵列(FPGA)、或任何其他合适的系统集成,或指导这些系统的操作。图10示出了计算设备1000形式的可用于实现本文描述的技术的系统中的计算设备的一个示例性实现,然而其他实现也是可能的。在本发明的一些实施例中,图10的计算设备1000可以被实现为客户机计算设备102。应理解,图10既不旨在是对用于依照本发明描述的原理操作的计算设备的必要组件的描绘,也不旨在是全面描绘。计算设备1000可包括至少一个处理器1002、网络适配器1004、以及计算机可读存储介质1006。计算设备1000例如可以台式或膝上型个人计算机、个人数字助理(PDA)、智能移动电话、服务器、无线接入点、或者其他联网元件、或者任何其他合适的计算设备。网络适配器1004可以是使得计算设备1000能够通过任何合适的计算网络来与任何其他合适的计算设备进行有线和/或无线通信的任何合适的硬件和/或软件。该计算网络可包括无线接入点以及用于在两个或更多个计算机之间交换数据的任何适合的一个或多个有线和/ 或无线通信介质,包括因特网。计算机可读介质1006适用于存储要由处理器1002处理的数据和/或要由处理器802执行的指令。处理器1002能够处理数据和执行指令。这些数据和指令可被存储在计算机可读存储介质1006上,并且例如可以启用计算设备1000的各组件之间的通信。存储在计算机可读存储介质1006上的数据和指令可包括实现根据本文描述的原理操作的技术的计算机可执行指令。在图10的示例中,如上所述,计算机可读存储介质 1006存储实现各种工具并存储各种信息的计算机可执行指令。计算机可读存储介质1006 可以存储恶意文件扫描工具1008,其用于确定是作为对文件进行扫描的一部分来查询储存库,导出用其向储存库进行查询的文件签名,查询储存库,还是扫描文件本身。计算机可读存储介质1006还可以存储可由恶意软件扫描工具1008用来扫描文件的恶意软件定义 1010。最后,计算机可读存储介质1006还可存储待扫描和访问的一个或多个文件1012。在本发明的用于确定文件是否是或包括除恶意文件之外的各类未经授权的软件的其他实施例中,可以在计算机可读存储介质1006上编码适当的工具和信息(例如,授权扫描工具)。图11示出了计算设备1100形式的可用于实现本文描述的技术的系统中的计算设备的一个示例性实现,然而其他实现也是可能的。在本发明的一些实施例中,图11的计算设备1100可以被实现为服务器104。应理解,图11既不旨在是对用于依照本发明描述的原理操作的计算设备的必要组件的描绘,也不旨在是全面描绘。
计算设备1100可包括至少一个处理器1102、网络适配器1004、以及计算机可读存储介质1106。计算设备1100可以是例如台式或膝上型个人计算机、服务器、大型计算机、或任何其他合适的计算设备。网络适配器1104可以是使得计算设备1100能够通过任何合适的计算网络来与任何其他合适的计算设备进行有线和/或无线通信的任何合适的硬件和/ 或软件。该计算网络可包括无线接入点以及用于在两个或更多个计算机之间交换数据的任何适合的一个或多个有线和/或无线通信介质,包括因特网。计算机可读介质1106适用于存储要由处理器1102处理的数据和/或要由处理器802执行的指令。处理器1102能够处理数据和执行指令。这些数据和指令可被存储在计算机可读存储介质1106上,并且例如可以启用计算设备1100的各组件之间的通信。存储在计算机可读存储介质1106上的数据和指令可包括实现根据本文描述的原理操作的技术的计算机可执行指令。在图11的示例中,如上所述,计算机可读存储介质 1106存储实现各种工具并存储各种信息的计算机可执行指令。计算机可读存储介质1106 可以存储用于扫描被提供给它的文件的恶意文件扫描工具1108和可由恶意文件扫描工具 1108用来扫描文件的恶意文件定义1110。储存库工具1112也可以存储在计算机可读存储介质1106上并可以通过对来自客户机计算设备的对结果的查询进行响应,将接收到的结果置于储存库中,并在必要时对储存库进行转储清除来维护恶意文件扫描结果的储存库。 计算机可读存储介质1106还可以存储恶意文件扫描结果的储存库1114以及与可在需要时被用来标识用于扫描文件的客户机计算设备的可用客户机计算设备有关的信息1116。在本发明的用于确定文件是否是或包括除恶意文件之外的各类未经授权的软件的其他实施例中,可以在计算机可读存储介质1106上编码适当的工具和信息(例如,授权扫描工具)。恶意软件扫描结果的储存库1214可以在本发明的执行恶意文件的扫描来以任何合适的方式存储关于文件的信息的各实施例中实现。图12示出可被存储在计算机可读存储介质1106上并被用来实现储存库1114的一个示例性信息表1200。表1200中示出的信息可被存储在任何合适的数据结构中,包括存储在数据库或肥文件中。然而,应当明白,示例性表1200中示出的数据和字段仅仅是可以存储在其中的各类型的字段和各类型的数据的说明,并且本发明的各实施例不限于用任何特定的方式实现储存库来存储任何特定信息或特定类型的信息。尽管未在图10和11中示出,但计算设备可另外具有一个或多个组件和外围设备, 包括输入和输出设备。这些设备主要可用于呈现用户界面。可用于提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其它声音生成设备。可用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算设备可以通过语音识别或以其他可听格式来接收输入信息。已经描述了其中各技术以电路和/或计算机可执行指令来实现的本发明的各实施例。应当明白,本发明可被具体化为方法,其示例已经提供。作为该方法的一部分所执行的动作可以按任何适合的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。本发明的各个方面可单独、组合或以未在前述实施例中特别讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图形中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其它实施例中描述的各方面组合。在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、 或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对 “包括”、“包含”、“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。至此描述了本发明的至少一个实施例的一些方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。这些更改、修改和改进旨在落入本发明的精神和范围内。从而,上述描述和附图仅用作示例。
权利要求
1.一种用于确定在计算机系统中待访问的特定内容单元是否包含未授权软件的方法,所述计算机系统包括至少两个客户机计算设备(102A、102B)和授权确定的共享储存库 (104A),授权确定的所述共享储存库(104A)可以由所述至少两个客户机计算设备(102A、 102B)中的每一个访问并且包括授权确定的结果,每个授权确定都是对应的内容单元是否包含未授权软件的确定,所述授权确定中的至少一些已经由所述至少两个客户机计算设备中的一个或更多个做出,所述方法包括(A)向授权确定的所述共享储存库(104A)提供(206)所述特定内容单元的唯一标识符 (1204)(B)接收(208)所述共享储存库是否包括所述特定内容单元的授权确定的指示;以及(C)如果所述共享储存库包括所述特定内容单元的授权确定,则使用(210)所述共享储存库中的授权确定以通知访问所述特定内容单元。
2.如权利要求1所述的方法,其特征在于,还包括(D)如果所述共享储存库没有存储所述特定内容单元的授权确定,则确定(21 所述特定内容单元是否包含未授权软件。
3.如权利要求2所述的方法,其特征在于,所述动作(A)到(D)由所述至少两个客户机计算设备中的第一客户机计算设备(102A)执行,并且其中动作(D)中的确定所述特定内容单元是否包含未授权软件包括(Dl)向不同于所述第一客户机计算设备的至少一个计算设备提供(414)所述特定内容单元以确定所述特定内容单元是否包含未授权软件。
4.如权利要求3所述的方法,其特征在于,所述不同于所述第一客户机计算设备的至少一个计算设备包括维护授权确定的所述共享储存库(104A)的服务器(104)。
5.如权利要求2所述的方法,其特征在于,还包括(D)用动作(D)的确定的结果来更新(406、418)所述共享储存库。
6.如权利要求1所述的方法,其特征在于,所述方法是响应于检测到(202)访问所述特定内容单元的操作来执行的,并且所述方法还包括(D)如果所述共享储存库包括指示所述特定内容单元包含未授权软件的授权确定,则通知用户所述未授权软件的存在和/或禁止所述操作。
7.如权利要求1所述的方法,其特征在于,还包括(D)在向所述共享储存库提供唯一标识符的动作(A)之前,在所述至少两个客户机计算设备(102A、102B)中的第一客户机计算设备处确定(504、524、526、528)所述文件是否满足至少一个条件,并且如果所述文件满足该至少一个条件,则在所述第一客户机计算设备的本地处确定(506、53幻所述特定文件是否包含未授权软件并且避免在动作(A)-(C)中访问共享储存库。
8.如权利要求1所述的方法,其特征在于,所述动作(A)到(D)由所述至少两个客户机计算设备中的第一客户机计算设备执行,并且所述方法还包括(D)如果确定所述特定内容单元包含未授权软件,则从不同于所述第一客户机计算设备的至少一个计算设备处请求所述特定内容单元的已知良好的副本;以及(E)如果响应于动作⑶的请求接收到了所述特定内容单元的已知良好的副本,则用所述特定内容单元的已知良好的副本来替换所述特定内容单元。
9.如权利要求1所述的方法,其特征在于,所述确定在计算机系统中待访问的特定内容单元是否包含未授权软件包括确定所述特定内容单元是否包含恶意软件。
10.一种用计算机可执行指令编码的至少一个计算机可读介质,所述指令在由计算机执行时使得所述计算机实现一种用于确定在计算机系统中待访问的特定文件是否包含恶意软件的方法,所述计算机系统包括至少两个客户机计算设备(102A、102B)和恶意软件确定的共享储存库(104A),恶意软件确定的共享储存库(104A)可以由所述至少两个客户机计算设备(102A、102B)中的每一个访问并且包括恶意软件确定的结果,每个恶意软件确定都是对应的文件是否包含恶意软件的确定,所述恶意软件中的至少一些确定已经由所述至少两个客户机计算设备中的一个或更多个做出,所述方法包括(A)向恶意软件确定结果的所述共享储存库(104A)提供(206)所述特定文件的唯一标识符(1204)(B)接收(208)所述共享储存库是否包括所述特定文件的恶意软件确定的指示;(C)如果所述共享储存库包括所述特定文件的恶意软件确定,则使用(210)所述共享储存库中的恶意软件确定以通知访问所述特定文件;以及(D)如果所述共享储存库不包括恶意软件确定,则(Dl)确定(21 所述特定文件是否包含恶意软件;以及(D2)用动作(Dl)中的确定的结果来更新(214)所述共享储存库。
11.如权利要求10所述的至少一个计算机可读介质,其特征在于,所述动作(A)到(D) 由所述至少两个客户机计算设备中的第一客户机计算设备执行,并且动作(D)中的确定所述特定内容单元是否包含恶意软件包括(Dl)向不同于所述第一客户机计算设备的至少一个计算设备提供(414)所述特定内容单元以确定所述特定内容单元是否包含恶意软件。
12.如权利要求11所述的至少一个计算机可读介质,其特征在于,所述至少一个其它计算设备包括维护恶意软件确定结果的所述共享储存库(104A)的服务器(104)。
13.如权利要求10所述的至少一个计算机可读介质,其特征在于,所述方法是响应于检测到访问所述特定文件的操作来执行的,并且所述方法还包括(E)如果所述共享储存库包括指示所述特定文件包含恶意软件的恶意软件确定,则通知用户所述恶意软件的存在和/或禁止所述操作。
14.如权利要求10所述的至少一个计算机可读介质,其特征在于,所述方法还包括(E)在向所述共享储存库提供所述唯一标识符的动作(A)之前,在所述至少两个客户机计算设备(102A、102B)中的第一客户机计算设备处确定(504、524、526、528)所述文件是否满足至少一个条件,并且如果所述文件满足该至少一个条件,则在所述第一客户机计算设备的本地处确定(506、53幻所述特定文件是否包含恶意软件并且避免在动作(A)-(C)中访问所述共享储存库。
15.如权利要求10所述的至少一个计算机可读介质,其特征在于,还包括(E)响应于来自所述共享储存库的请求,向恶意软件确定的所述共享储存库(104A)提供(80 所述文件的副本,所述请求指示与所述共享储存库(104A)中的所述文件相关联的恶意软件确定已经被访问过阈值次数。
全文摘要
用于维护授权扫描结果的共享储存库的各种原理,该授权扫描结果的共享储存库可以由特定文件(和其它内容单元)以及这些特定文件的签名的授权扫描结果来填充。当特定文件将要由客户机计算设备扫描以确定其是否含有未授权的软件时,可以计算并向共享储存库提供该文件的签名。如果如文件的签名位于储存库中所指示的,储存库具有该文件的结果,则可以向发出查询的客户机计算设备提供储存库中的结果,并且客户机计算设备可以接受共享储存库中的答案。如果结果不在储存库中(即文件没有被扫描过),则可以扫描该文件,并且将结果放置在储存库中。
文档编号G06F21/24GK102272771SQ200980153819
公开日2011年12月7日 申请日期2009年12月11日 优先权日2008年12月31日
发明者C·J·阔, J·威廉姆斯, M·圣菲尔德 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1