在虚拟机中执行具有漏洞的文件时形成日志的系统和方法与流程

文档序号:21408014发布日期:2020-07-07 14:42阅读:252来源:国知局
在虚拟机中执行具有漏洞的文件时形成日志的系统和方法与流程

本发明涉及识别恶意文件以提高计算机安全性的领域,更具体地涉及用于在虚拟机中执行具有漏洞的文件时形成执行日志的系统和方法。



背景技术:

目前,恶意软件(诸如计算机病毒、特洛伊(trojan)木马、因特网蠕虫)的数量日益增长,该恶意软件设计成既对用户数据、又对感染有恶意软件的电子设备的真实用户造成危害。可以通过破坏或删除用户文件、通过将用户的计算设备的资源用于“开采”加密货币、盗用电子机密用户数据(通信、图像、登录名、密码、银行卡数据)和通过其它动作来造成该危害。此外,恶意软件不断变化;恶意软件的创造者采取永远更新的攻击机制且采用更新的防御技术对抗安全应用。采用各种机制,诸如混淆恶意代码(例如,通过将原始文本或可执行程序代码变为保留其功能但阻碍分析的形式、理解工作算法、以及在反编译期间进行修改)或用于抵抗仿真的机制的使用(例如,通过在恶意软件内包括用于识别该恶意软件何时在仿真器中运行的特征,从而该恶意软件在仿真器中运行时不显示其恶意活动)。

此外,恶意软件经常在启动之后不立刻显现其恶意活动,而是执行大量的应用程序接口(applicationprograminterface,api)函数的调用(百万级的api函数的调用)和巨大的循环(十亿级的迭代),以及在启动之后紧接着停止工作达特定时间(例如,使用“sleep()”函数而停止工作1小时)。目前的用户计算设备具有高性能多核处理器(也具有多处理器系统),从而用户可能不注意或重视多核之一的工作负荷。此外,在已开启设备后,用户通常使用该设备长于1小时。因此,如果恶意程序已启动,则对于该恶意程序来说无需立刻显现其活动。

也使用采用操作系统的其它程序或组件和模块的漏洞(即,利用漏洞)的恶意程序和应用程序。只要还未在用户的计算设备上安装有漏洞的程序、或已安装有漏洞的程序的错误版本,则恶意应用程序可以不以任何方式显现其活动。

为了对抗上述技术,安全应用(诸如防病毒应用)的制造商为了文件的安全执行而采用使用隔离环境(isolatedenvironment)形式的虚拟机的方法。经常,这类虚拟机被称为沙盒(sandbox)。管理程序(这类虚拟机在该管理程序的控制下运行)包含用于拦截由正在虚拟机中执行的应用所调用的函数的机制。

应当注意,安全应用采用用于确定恶意软件的各种方法,诸如签名分析和/或启发式分析。如果在分析过程中未针对一文件确定恶意性,则可以通过安全应用将该文件移交到前文提及的虚拟机以分析其行为。例如,如果安全应用不具有可信软件制造商的数字签名,则可以将文件移交到虚拟机以供分析。然后在虚拟机中执行移交的文件,以及在执行过程中,拦截通过调用不同函数所执行的文件的动作和事件。将拦截的事件和动作保存在日志中。然后,由安全应用或由信息安全方面的专家分析日志中的事件和动作。因此,在上述技术中,用于拦截和聚集事件和动作的系统在两个步骤中工作。在第一步骤中,收集信息;在第二步骤中,分析信息。

上述技术的缺点之一是该方法不影响在文件执行期间的执行进程。例如,如果从正在分析的文件(或从打开正在分析的文件的应用)启动的进程已停止其执行达1小时或通过访问带有已保存密码的文件而攻击某些电子邮件客户端或消息器(messenger)(用于交换消息的程序),则被攻击的程序不存在于虚拟机中,且将不显现进程的行为的恶意性。换言之,当恶意进程未找到所需的带有密码的文件时,该恶意进程自身结束其执行且不显现有害活动。此外,在用户的计算设备上存在采用操作系统的其它程序或组件的漏洞的恶意应用的情况下,也需要在这类应用利用前述其它程序的漏洞之前识别这类应用,因为用户的计算设备在这种情况下无法被视为安全的。此外,当在用户的计算设备上已安装有漏洞的应用的错误版本且该计算设备包含利用该应用程序的漏洞的恶意程序时,难以识别这类恶意程序;该恶意程序结束而不执行恶意动作或利用漏洞(例如,由于安装的是有漏洞的应用的错误版本)。

因此,需要改善在虚拟机中执行文件时如何收集事件。



技术实现要素:

本发明的各个方面涉及计算机安全领域,更具体地涉及用于在虚拟机中执行具有漏洞的文件时形成执行日志的系统和方法。

在一个示例性方面中,在包括硬件处理器的计算机中实现一种方法,所述方法包括:在打开文件时所创建的进程的线程的执行期间发现触发器的激活,其中,所述触发器描述伴随与尝试利用所述文件的漏洞相关的事件的条件;分析在打开所述文件时所创建的所述进程的堆栈(stack),并发现在所述事件之前的以调用地址和返回地址的序列形式的函数调用链;分析发现的函数调用链是否满足所述触发器的与尝试利用所述漏洞相关的条件;以及当满足所述触发器的所述条件时,将关于所述函数调用链的信息保存在日志中。

根据本发明的一个方面,提供了一种用于在虚拟机中执行具有漏洞的文件时形成执行日志的系统,所述系统包括硬件处理器,所述硬件处理器被配置为:在打开所述文件时所创建的进程的线程的执行期间发现触发器的激活,其中,所述触发器描述伴随与尝试利用所述文件的漏洞相关的事件的条件;分析在打开所述文件时所创建的所述进程的堆栈,并发现在所述事件之前的以调用地址和返回地址的序列形式的函数调用链;分析发现的所述函数调用链是否满足所述触发器的与尝试利用所述漏洞相关的条件;以及当满足所述触发器的所述条件时,将关于所述函数调用链的信息保存在日志中。

在一个示例性方面中,提供了一种非暂时性计算机可读介质,所述非暂时性计算机可读介质上存储有用于在虚拟机中执行具有漏洞的文件时形成执行日志的一组指令,其中,该组指令包括用于如下操作的指令:在打开文件时所创建的进程的线程的执行期间发现触发器的激活,其中,所述触发器描述伴随与尝试利用所述文件的漏洞相关的事件的条件;分析在打开所述文件时所创建的所述进程的堆栈,并发现在所述事件之前的以调用地址和返回地址的序列形式的函数调用链;分析发现的函数调用链是否满足所述触发器的与尝试利用所述漏洞相关的条件;以及当满足所述触发器的所述条件时,将关于所述函数调用链的信息保存在日志中。

在一个方面中,所述方法还包括:将与所述触发器的所述条件的满足有关联的内存区域的转储保存在所述日志中。

在一个方面中,所述事件包括如下项中的至少一者:在所述进程的所述线程的执行期间对api函数的调用;从api函数的返回;系统调用(例如,由所述线程访问操作系统的内核以执行某种操作);从系统调用的返回;以及从操作系统接收通知。

在一个方面中,所述触发器描述一个或多个事件和伴随所述事件的条件,所述事件与尝试利用所述文件的所述漏洞相关:从调用链生成利用面向返回编程(returnorientedprogramming,rop)的事件;通过在堆(heap)上执行而生成事件;通过在堆栈上执行而生成事件;改变所述堆栈;更改描述操作系统中进程的权限和特权的数据结构;通过从内存页面的首次执行生成的事件;以及内存的动态分配和将对象放置在动态分配的所述内存中。

在一个方面中,打开所述文件包括如下项之一:当所述文件为可执行的时,执行所述文件;以及当所述文件为不可执行的时,由应用打开所述文件。

在一个方面中,安全模块执行如下项中的至少一者:启动所述虚拟机;以及从先前创建的虚拟机选择所述安全模块。

在一个方面中,所述触发器描述:真实事件,所述真实事件的发生激活所述触发器;以及所述触发器的伴随所述真实事件的所述条件,所述条件与尝试利用所述文件的所述漏洞相关。

根据本发明的教导的在执行具有漏洞的文件时形成执行日志提高了计算机的安全性。该提高通过如下方式来实现:在打开所述文件时所创建的进程的线程的执行期间发现触发器的激活,其中,所述触发器描述伴随与尝试利用所述文件的漏洞相关的事件的条件;分析在打开所述文件时所创建的所述进程的堆栈,并发现在所述事件之前的以调用地址和返回地址的序列形式的函数调用链;分析发现的函数调用链是否满足所述触发器的与尝试利用所述漏洞相关的条件;以及当满足所述触发器的所述条件时,将关于所述函数调用链的信息保存在日志中。

附图说明

并入本说明书中并构成本说明书的一部分的附图示出了本发明的一个或多个示例性方面,以及连同详细的描述一起用来阐述这些示例性方面的原理和实现方式。

图1为示出根据本发明的各个方面的在虚拟机中针对恶意性分析文件的示例的框图。

图2为示出根据本发明的各个方面的用于在虚拟机中执行具有漏洞的文件时形成执行日志的示例性系统的框图。

图3为示出用于在虚拟机中执行具有漏洞的文件期间形成日志的示例性方法的流程图。

图4示出了其上可实现本发明的各个方面的通用计算机系统的示例。

具体实施方式

本文中在用于在虚拟机中执行具有漏洞的文件期间形成日志(即执行日志)的系统、方法和计算机程序产品的背景下描述示例性方面。本领域的普通技术人员将认识到,以下描述仅仅是示例性的,而不旨在以任何方式进行限制。其它方面将很容易将其自身暗示给了解本发明的优点的本领域的技术人员。现在将详细地参考如附图中所示的示例性方面的实现方式。贯穿附图和以下描述将尽可能地使用相同的附图标记来指代相同或类似的项目。

为了清楚地呈现本发明的教导,本文中定义了如在描述本发明的各个方面时使用的多个术语和概念。

以用于安全的文件执行的环境的形式的虚拟机包括软件和硬件的集合(复合体),该集合将主机操作系统(operatingsystem,os)的资源提供给客户os,其中,该客户os不具有通向该主机os的链路。

用于在虚拟机中针对恶意性分析文件的系统的模块包括真实的设备、系统、组件、和组件组,这些设备、系统、组件、和组件组利用硬件(诸如集成微电路(例如专用集成电路(application-specificintegratedcircuit,asic))或现场可编程门阵列(field-programmablegatearray,fpga))或以软件和硬件的组合(诸如微处理器系统和程序指令集)的形式、以及也基于神经突触芯片来实现。系统的所指示模块的功能可以仅仅通过硬件、而且还可以以组合的形式来实现,其中,一些功能通过软件来实现且一些功能通过硬件来实现。在特定变型方面中,可以在通用计算机(诸如在图4中所示的通用计算机)的处理器上实现一些模块或全部模块。此外,系统的组件(各个模块)可以在单一计算设备内实现或分布在多个互连计算设备之间。

图1为示出根据本发明的各个方面的在虚拟机中针对恶意性分析文件100的示例的框图。安全模块110将文件100发送到虚拟机120。然后,为了执行分析,在用以执行文件的隔离环境形式的虚拟机120中打开文件100。在一个方面中,虚拟机120由安全模块110启动。在一个方面中,虚拟机120由安全模块110从先前创建的虚拟机中选择。

本发明的文件100可以包括如下项中的一者或多者:可执行文件;动态库;由解释器执行的脚本(例如具有扩展.ps1的微软powershell文件);包含用于执行的脚本的文件(诸如microsoftoffice或adobeacrobat格式的文件);网页;图像;在被利用时(例如在被其它应用程序执行或打开时)可对计算设备的用户的数据造成伤害的其它标准文件。在一个方面中,文件100可以包括链接(诸如统一资源定位符(uniformresourcelocator,url))。

在本发明的一般方面中,在虚拟机120的os中打开文件之后针对恶意性对文件100进行分析。打开文件100包括执行如下项之一:

·如果文件100为可执行的,则执行文件100;以及

·如果文件100为不可执行的,则由应用打开文件100。

打开文件100的结果是创建进程且启动创建的进程以供在虚拟机120中执行。在执行期间创建至少一个线程。

在一个方面中,在用户的计算设备上实施安全模块110和虚拟机的监控器115(在后文中被称为“管理程序”),虚拟机120在该监控器115的控制下操作。在一个方面中,安全模块110为安全应用(诸如防病毒应用)。在另一个方面中,安全模块110和管理程序115在远程服务器上(或在不同服务器上)实施或作为云服务实施。如果安全模块110在远程服务器上实施或作为云服务实施,则安全模块110从第三方源(例如从在用户的计算设备上运行的安全模块110)获取文件100,并将该文件100移交到虚拟机120。然后在虚拟机处发生文件100的打开。

在一个方面中,管理程序115包含拦截器130(拦截器130为管理程序115的模块、组件、或功能部分)。拦截器130拦截通过在虚拟机120中打开文件100时所创建的进程的线程对api函数的调用,并读取在其上正在执行调用api函数的线程的处理器的上下文。

应当注意,处理器上下文至少包含处理器寄存器的值。在一个方面中,拦截器130还使用包含在与堆栈有关的处理器寄存器中的先前读取的数据来读取函数调用堆栈的内容(例如,扩展堆栈指针(extendedstackpointer,esp)寄存器和扩展基址指针(extendedbasepointer,ebp)寄存器的内存地址)。此外,拦截器130聚集前述数据、保存聚集的数据(例如保存在数据库中或日志150中)、并在执行打开文件100时所创建的进程之后将保存的数据发送到安全模块110。接着,安全模块110基于来自拦截器130的数据给出关于文件100的恶意性的判决。在本发明的各个方面中,在分析保存的数据之后给出该判决。例如,该判决可以取决于如下序列和参数,该序列和参数用于由在打开文件100时所创建的进程的线程对api函数进行调用。在一个方面中,如果还未给出判决,则通过安全模块110将由拦截器130保存的数据发送给信息安全方面的专家以供分析(在图1中未示出)。

图2为示出根据本发明的各个方面的用于在虚拟机中执行具有漏洞的文件时形成执行日志的示例性系统200的框图。本发明的系统的优势在于,文件100是安全的,同时提出的系统除了拦截器130外,还包含分析模块140。在一个方面中,管理程序115包含分析模块140。在另一个方面中,分析模块140为安全模块110的组件(模块、功能部分)。

在本发明的各个方面中,拦截器130拦截在打开文件100时所创建的进程的线程中的事件。在一个方面中,所述事件为如下项中的一者或多者:

·在进程的线程的执行期间对api函数的调用;

·从api函数的返回;

·系统调用(即,或线程对os的内核的访问以执行某种操作);

·从系统调用的返回;以及

·来自os的消息(例如通知)(例如,指示线程的创建、进程的创建、模块的加载)。

在拦截事件的情况下,通过拦截器130停止线程的执行。通过停止线程的指令的执行来停止线程的执行。

应当注意,在虚拟机120的os的不同保护环上,拦截是可行的,这实现了系统的硬件分区和用户级特权。在一个方面中,在os的不同保护环上的拦截可以提供处于内核级(内核模式)和/或用户级(用户模块)的事件的拦截。

在本发明的一个方面中,在打开文件100时所创建的进程的线程的执行期间,拦截器130确定正在被线程调用的api函数的编码约定。编码约定的确定允许明确地确定处理器的用于将参数发送到正在被调用的api函数的寄存器的使用。因此,例如将在如下项中找到调用的参数:包含第一参数的扩展计数寄存器(extendedcountregister,ecx)、包含第二参数的扩展数据寄存器(extendeddataregister,edx)、以及包含其余参数的扩展堆栈指针(esp)寄存器。此外,编码约定的确定实现了返回值的明确确定。例如,如果api函数返回值“0”,则这在寄存器eax(扩展累加寄存器)中进行。

返回图2,恶意应用190正在利用文件100的漏洞。然而,恶意应用190可能不会如最初由黑客所设想的那样在文件100的不同于最初设计前述恶意代码所针对的那些版本的版本上显现自身。例如,利用microsoftoffice版本2013.1的漏洞的给定恶意应用190可能不在microsoftoffice版本2013.2上显现恶意活动。在该情况下,恶意应用190或microsoftoffice自身将在异常情况下终止,或如果很好地设计恶意应用190,则在检查漏洞利用之后,恶意应用190将结束其工作并且不产生任何活动(事件)。恶意应用190也可以成功地工作,但是不启动任何附加进程,而是在被利用的应用(在打开文件100时所创建的进程)内工作。在该情况下,用户的计算设备不能被视为安全的,即使能够利用文件100的漏洞的恶意应用190还未执行恶意动作。需要识别如下情况:由于在文件100中存在漏洞并随后利用文件100而实现由恶意应用190执行的动作,而无论恶意应用190的动作的结果和成功与否。此外,由于本发明的方法实现了拦截内核级的事件,因此该内核级的事件可以用于识别利用操作系统的组件(文件)的漏洞的恶意应用190。

在一个方面中,拦截器130利用一组触发器。在一个方面中,将触发器保持在数据库中且在启动虚拟机时从该数据库选择触发器。在本发明的各个方面中,触发器描述:真实事件,该真实事件的发生激活触发器;以及伴随该真实事件的条件,其中,这些条件涉及尝试利用漏洞。因此,例如触发器描述了操作系统的一组特定api函数、系统调用和通知、以及在利用漏洞时可利用的这些项发生的条件。

在一个方面中,触发器至少描述如下事件和伴随涉及尝试利用漏洞的该事件的条件:

·从调用链生成利用面向返回编程(returnorientedprogramming,rop)

的事件;

·通过在堆上执行代码而生成事件;

·通过在堆栈上执行代码而生成事件;

·改变堆栈;

·更改描述操作系统中进程的权限和特权的数据结构(如果恶意应用190利用操作系统的内核的漏洞,则这可以导致一些应用获得其先前不具有的权限);

·通过从内存页面的首次执行生成的事件;以及

·内存的动态分配和将对象放置在动态分配的内存中。

通过拦截器130对事件(该事件的发生激活触发器)和触发器的伴随条件的满足的发现不同于通过恶意应用190在利用安全文件100的漏洞上的尝试,但是它以高的可能性程度指示文件100具有漏洞且恶意应用190正在尝试利用现有漏洞。本发明的方法使发现如下项成为可能:是否在合法代码(例如在文件100中和在该文件在其执行期间使用的模块中包含的安全代码)的执行期间或者在打开文件100时所创建的进程的线程的执行期间已经激活了触发器,或者控制的传递是否以另一方式(例如由于保留在堆栈上的数据的重写、堆溢出等)发生。

在激活触发器的情况下,拦截器130分析在打开文件100时所创建的进程的堆栈,并识别在事件之前的函数调用的序列,其中,拦截器130识别调用函数的以调用地址和返回地址的序列形式的序列。接着,拦截器130分析如此识别的函数调用的序列是否满足触发器的条件(例如,调用的地址不属于在打开文件100时所加载的模块)。

在满足触发器的条件的情况下,拦截器130将关于识别的函数调用的序列的数据(信息)保存在日志150中。

在一个方面中,拦截器130还将与触发器的伴随条件的满足相关联的内存区域的转储保存在日志150中。

为了说明本教导,下文提供了本系统的操作的示例。

示例1

拦截器130已发现如下事件:已调用api函数,针对该api函数的调用激活了触发器。拦截器130检查esp寄存器,并一个接一个识别函数调用的地址以确定api函数调用来自何处。如果在已加载到在打开文件100时所创建的进程的地址空间中的模块或动态库中未发现调用api函数的代码(即,该代码位于异常地址),则需要执行上述动作,即:将关于识别的调用序列的信息(包括调用的异常地址)保存在日志150中,以及也将该异常地址周围的内存区域的转储保存在日志150中。

示例2

拦截器130已发现如下事件:已调用api函数,针对该api函数的调用激活了触发器。拦截器130检查esp寄存器,并检查在堆栈上是否存在面向返回编程(rop)链。如果发现该链,则将内存转储(堆栈)保存在日志150中以供进一步分析。

示例3

拦截器130已发现如下事件:从api函数的返回,针对该api函数的返回激活了触发器。拦截器检查api函数的返回地址。如果返回地址指示堆或堆栈,则将该返回地址和该堆或堆栈的转储保存在日志150中。

示例4

拦截器130已发现如下事件:在特定内存页面上执行第一实例。拦截器分析该内存页面;如果该内存页面不对应于加载的模块和库,则可以保存从其发生执行的第一实例的内存页面的地址以及也保存该内存页面自身的内容以供进一步分析,例如保存在日志150中。

示例5

如果漏洞利用发生在多个步骤中,则首先恶意应用190分配一定量的内存(例如堆的分配),其中,对象将(诸如数据结构、可执行代码)被放置在该内存中,然后尝试将控制传递到该内存。拦截器130发现如下事件:动态内存分配。甚至在不传递控制的情况下(例如,因为有漏洞的文件100的版本不匹配),拦截器130记录分配的其中放置有对象的内存的转储并在记录的转储上发送以供进一步分析。

示例6

拦截器130发现如下事件:描述操作系统中进程的特权的数据结构已被更改。在给定情况下,操作系统的内核的漏洞利用是可能的。拦截器130将生成拦截事件的函数调用的堆栈、描述进程特权的数据结构以及进程的内存转储保存在日志150中以供进一步分析。

返回到各方面的描述,应当理解,对于拦截器130来说不可取的是针对每个事件执行所有上述动作,因为这将导致在虚拟机中执行文件100期间的性能的显著降低和日志150的大小的显著增大。因此,必须满足触发器的伴随条件。可以通过拦截器130将拦截的事件、处理器的上下文和由于激活标签所获得的数据保存在日志150中。在保存之后,通过拦截器130将日志150发送到分析模块140。

在本发明的各个方面中,为了分析通过拦截器130保存在日志150中的数据,分析模块140使用本领域中通常已知的方法(诸如签名分析或启发式分析)。

因此,图2的系统在虚拟机中检测利用操作系统的文件100或组件的漏洞的恶意应用190是否存在,该检测基于由拦截器130形成的日志150。

图3为示出用于在虚拟机中执行具有漏洞的文件期间形成日志的示例性方法300的流程图。

在本发明的各个方面中,为了形成日志150,安全模块110将安全文件100发送到虚拟机120。在虚拟机120的操作系统中接收且打开文件100之后发生日志150的形成。方法300开始于步骤305且前进到步骤307。

在步骤307中,该方法接收且打开文件,例如文件100。

在一个方面中,打开文件100包括如下项之一:当文件为可执行的时,执行该文件;当文件为不可执行的时,由应用打开该文件。

在步骤310中,方法300通过拦截器130发现在打开接收的文件(例如文件100)时所创建的进程的线程的执行期间激活触发器,其中,该触发器描述一个或多个条件,该一个或多个条件伴随与尝试利用文件的漏洞相关的事件。

在一个方面中,事件为如下项中的至少一者:

·在进程的线程的执行期间对api函数的调用;

·从api函数的返回;

·系统调用(例如,线程对操作系统的内核的访问以执行某种操作);

·从系统调用的返回;以及

·从操作系统接收通知。

在本发明的各个方面中,触发器描述:(i)真实事件,该真实事件的发生激活触发器;以及(ii)伴随该真实事件的条件,这些条件与尝试利用文件的漏洞相关。

在一个方面中,触发器描述如下与尝试利用文件的漏洞相关的事件和伴随所述事件的条件中的一者或多者:

·从调用链生成利用面向返回编程(rop)的事件;

·通过在堆上执行而生成事件;

·通过在堆栈上执行而生成事件;

·改变堆栈;

·更改描述操作系统进程中的权限和特权的数据结构;

·通过从内存页面的首次执行生成的事件;以及

·内存的动态分配和将对象放置在动态分配的内存中。

在步骤320中,方法300通过拦截器130分析在打开文件时所创建的进程的堆栈,并发现在事件之前的、以调用地址和返回地址的序列形式的函数调用链。

在步骤330中,方法300通过拦截器130分析发现的函数调用链是否满足与尝试利用漏洞相关的触发器的条件。

在步骤340中,当满足触发器的与尝试利用文件100的漏洞相关的条件时,方法300通过拦截器130将关于函数调用链的信息保存在日志150中。换言之,将步骤330中的分析的结果保存在日志150中。

在一个方面中,拦截器130还将与触发器的条件的满足有关联的内存区域的转储保存在日志150中。

如上所述,本发明描述了用于提高计算机安全性的系统和方法。本发明的方法的一个优势是在虚拟机中执行具有漏洞的文件,其中,形成执行日志,该执行日志包含与该文件的漏洞的可能利用相关联的事件的数据。

图4为示出了根据一示例性方面的计算机系统20的框图,在计算机系统20上可实施用于在虚拟机中执行具有漏洞的文件期间形成日志的系统和方法的各方面。应当注意,计算机系统20可以对应于例如前文所描述的计算设备上的虚拟机。计算机系统20可以为多个计算设备的形式、或单一计算设备的形式,例如:台式电脑、笔记本电脑、手提电脑、移动计算设备、智能手机、平板电脑、服务器、大型机、嵌入式设备和其它形式的计算设备。

如图所示,计算机系统20包括中央处理单元(centralprocessingunit,cpu)21、系统存储器22和连接各种系统部件的系统总线23,各种系统部件包括与中央处理单元21相关联的存储器。系统总线23可以包括总线存储器或总线存储器控制器、外围总线、以及能够与任何其它的总线架构交互的本地总线。总线的示例可以包括pci、isa、串行总线(pci-express)、超传输tm(hypertransporttm)、无限带宽tm(infinibandtm)、串行ata、i2c、和其它合适的互连。中央处理单元21(也称为处理器)可以包括单组或多组具有单核或多核的处理器。处理器21可以执行实现本发明的技术的一种或多种计算机可执行代码。系统存储器22可以为用于存储本文中所使用的数据和/或可由处理器21执行的计算机程序的任何存储器。系统存储器22可以包括易失性存储器(诸如随机存取存储器(randomaccessmemory,ram)25)和非易失性存储器(诸如只读存储器(read-onlymemory,rom)24、闪存等)或其任何组合。基本输入/输出系统(basicinput/outputsystem,bios)26可以存储用于在计算机系统20的元件之间传输信息的基本程序,例如在使用rom24加载操作系统时的那些基本程序。

计算机系统20可以包括一个或多个存储设备,诸如一个或多个可移除存储设备27、一个或多个不可移除存储设备28、或其组合。所述一个或多个可移除存储设备27和一个或多个不可移除存储设备28借助存储器接口32连接到系统总线23。在一个方面中,存储设备和相应的计算机可读存储介质为用于存储计算机系统20的计算机指令、数据结构、程序模块、和其它数据的电源独立的模块。系统存储器22、可移除存储设备27和不可移除存储设备28可以使用各种各样的计算机可读存储介质。计算机可读存储介质的示例包括:机器存储器,诸如缓存、sram、dram、零电容ram、双晶体管ram、edram、edoram、ddrram、eeprom、nram、rram、sonos、pram;闪存或其它存储技术,诸如在固态驱动器(solidstatedrive,ssd)或闪盘驱动器中;磁带盒、磁带、和磁盘存储器,诸如在硬盘驱动器或软盘驱动器中;光学存储器,诸如在光盘(cd-rom)或数字通用光盘(digitalversatiledisk,dvd)中;以及可用于存储期望数据且可被计算机系统20访问的任何其它介质。

计算机系统20的系统存储器22、可移除存储设备27和不可移除存储设备28可以用于存储操作系统35、附加程序应用37、其它程序模块38和程序数据39。计算机系统20可以包括用于传送来自输入设备40的数据的外围接口46,该输入设备40诸如键盘、鼠标、光笔、游戏控制器、语音输入设备、触点输入设备、或其它外围设备,诸如借助一个或多个i/o端口的打印机或扫描仪,该一个或多个i/o端口诸如串行端口、并行端口、通用串行总线(universalserialbus,usb)、或其它外围接口。显示设备47(诸如一个或多个监控器、投影仪或集成显示器)也可以通过输出接口48(诸如视频适配器)连接到系统总线23。除了显示设备47之外,计算机系统20还可以装配有其它外围输出设备(未示出),诸如扬声器和其它视听设备。

计算机系统20可以使用与一个或多个远程计算机49的网络连接,在网络环境中工作。所述一个或多个远程计算机49可以为本地计算机工作站或服务器,其包括前面在描述计算机系统20的性质时所述的元件中的大多数元件或全部元件。其它设备也可以存在于计算机网络中,诸如但不限于路由器、网站、对等设备或其它的网络节点。计算机系统20可以包括用于借助一个或多个网络而与远程计算机49通信的一个或多个网络接口51或网络适配器,该一个或多个网络诸如局域计算机网络(local-areacomputernetwork,lan)50、广域计算机网络(wide-areacomputernetwork,wan)、内联网、和因特网。网络接口51的示例可以包括以太网接口、帧中继接口、同步光纤网(sonet)接口、和无线接口。

本发明的各个方面可以为系统、方法和/或计算机程序产品。计算机程序产品可以包括一种或多种计算机可读存储介质,该计算机可读存储介质上具有用于使处理器执行本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以为有形设备,该有形设备可以保持且存储指令或数据结构形式的程序代码,该程序代码可以被计算设备的处理器(诸如计算系统20)访问。计算机可读存储介质可以为电子存储设备、磁性存储设备、光存储设备、电磁存储设备、半导体存储设备、或其任何合适组合。通过示例方式,这类计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、电可擦可编程只读存储器(eeprom)、便携式光盘只读存储器(cd-rom)、数字通用光盘(dvd)、闪存、硬盘、便携式电脑磁盘、记忆棒、软盘、或甚至机械编码设备,诸如在其上记录有指令的凹槽中的打孔卡或凸起结构。如在本文中所使用的,计算机可读存储介质不应被解释为暂时性信号本身,暂时性信号诸如无线电波或其它自由传播的电磁波、通过波导或传输介质传播的电磁波、或通过电线传输的电信号。

可以将本文中所描述的计算机可读程序指令从计算机可读存储介质下载到各个计算设备、或借助网络(例如,因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。该网络可以包括铜传输线缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。在每个计算设备中的网络接口从网络接收计算机可读程序指令并转发该计算机可读程序指令,用以存储在各个计算设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以为汇编指令、指令集架构(instruction-set-architecture,isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种编程语言(包括面向对象的编程语言和传统程序化编程语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以作为独立的软件包完全地在用户的计算机上、部分地在用户的计算机上、部分地在用户的计算机上且部分地在远程计算机上、或完全地在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过任何类型的网络(包括lan或wan)连接到用户的计算机,或可以(例如通过因特网)进行与外部计算机的连接。在一些实施方式中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程门阵列(programmablelogicarray,pla))可以通过利用计算机可读程序指令的状态信息使该电子电路个性化而执行计算机可读程序指令,从而执行本发明的各个方面。

在各个方面中,本发明中所描述的系统和方法可以按照模块来处理。本文中所使用的术语“模块”指的是例如现实世界的设备、部件、或使用硬件(例如通过专用集成电路(asic)或fpga)实现的部件的布置,或者指的是硬件和软件的组合,例如通过微处理器系统和实现模块功能的指令集(该指令集在被执行时将微处理器系统转换成专用设备)来实现这样的组合。一个模块还可以被实施为两个模块的组合,其中单独地通过硬件促进某些功能,并且通过硬件和软件的组合促进其它功能。在某些实现方式中,模块的至少一部分(以及在一些情况下,模块的全部)可以在计算机系统(例如上文在图4中更详细描述的计算机系统)的处理器上运行。因此,每个模块可以以各种适合的配置来实现,而不应受限于本文中所例示的任何特定的实现方式。

为了清楚起见,本文中没有公开各个方面的所有例程特征。应当领会的是,在本发明的任何实际的实现方式的开发中,必须做出许多特定实现方式的决定,以便实现开发者的特定目标,并且这些特定目标将对于不同的实现方式和不同的开发者变化。应当理解的是,这种开发努力会是复杂的且费时的,但对于了解本发明的优点的本领域的普通技术人员来说仍然是工程的例行任务。

此外,应当理解的是,本文中所使用的措辞或术语出于描述而非限制的目的,从而本说明书的术语或措辞应当由本领域技术人员根据本文中所提出的教导和指导结合(一个或多个)相关领域技术人员的知识来解释。此外,不旨在将本说明书或权利要求书中的任何术语归于不常见的或特定的含义,除非明确如此阐述。

本文中所公开的各个方面包括本文中以说明性方式所引用的已知模块的现在和未来已知的等同物。此外,尽管已经示出并描述了各个方面和应用,但是对于了解本发明的优点的本领域技术人员将显而易见的是,在不脱离本文中所公开的发明构思的前提下,相比于上文所提及的内容而言的更多修改是可行的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1