用于基于虚拟机监视器的反恶意软件安全的系统和方法

文档序号:6494787阅读:220来源:国知局
用于基于虚拟机监视器的反恶意软件安全的系统和方法【专利摘要】一种用于保护电子设备的系统包括存储器、处理器、驻留在存储器中以供由处理器执行的一个或多个操作系统、通信上耦合到操作系统的电子设备的资源、被配置为以低于访问资源的电子设备的所有操作系统的级别在电子设备上执行的虚拟机监视器、以及被配置为以低于访问资源的电子设备的所有操作系统的级别在电子设备上执行的安全代理。该虚拟机监视器被配置为截取从高于虚拟机监视器的级别做出的对资源的请求并向安全代理告知该请求。安全代理被配置为判断该请求是否指示恶意软件。【专利说明】用于基于虚拟机监视器的反恶意软件安全的系统和方法[0001]优先权申请[0002]本申请要求以下美国申请的权益:于2011年3月28日提交的第13/073,791号、于2011年3月28日提交的第13/073,810号、于2011年3月28日提交的第13/073,842号、于2011年3月31日提交的第13/077,227号、于2011年3月28日提交的第13/073,853号、于2011年3月29日提交的第13/075,049号、于2011年3月31日提交的第13/076,493号、于2011年3月29日提交的第13/074,741号、于2011年3月31日提交的第13/077,305号、于2011年3月29日提交的第13/074,831号、于2011年3月29日提交的第13/074,925号、于2011年3月29日提交的第13/074,947号、于2011年3月31日提交的第13/077,270号、于2011年3月31日提交的第13/076,537号、于2011年3月28日提交的第13/073,864号、于2011年3月29日提交的第13/075,072号、于2011年3月29日提交的第13/075,101号、于2011年3月31日提交的第13/076,512号、于2011年3月31日提交的第13/076,480号以及于2011年3月31日提交的第13/076,473号,这些申请的内容通过引用整体合并于此。【
技术领域
】[0003]本发明通常涉及计算机安全和恶意软件防护,且尤其涉及基于虚拟机监视器的反恶意软件安全的系统和方法。[0004]背景[0005]本机操作系统服务可以防止安全软件在操作系统的内核内安装任意挂钩(hooking)。因而防止了安全软件过滤电子设备的所有行为,包括恶意软件的潜在恶意的动作。恶意软件可以包括但不限于间谍软件、rootkit、密码窃取器、垃圾邮件、网络钓鱼攻击源、拒绝服务攻击源、病毒、记录器、木马、广告软件或产生恶意活动的任何其他数字内容。[0006]由操作系统提供的过滤功能性可以受到限制,且仅在操作系统销售商决定的时间轴上可用。恶意软件可以以与安全软件相同的级别操作和驻留,尤其是在操作系统内核内,且因而危害操作系统和安全软件本身的完整性两者。[0007]多种形式的主动内核模式恶意软件篡改用户模式存储器来完成恶意任务,例如动态地注入恶意代码、修改用户模式代码段以便变更执行路径并重定向到恶意代码、以及修改用户模式数据结构以便使得安全软件失效。另外,一些恶意软件可以通过篡改进程存储器代码和数据片段以便欺骗检测逻辑来从内核攻击反恶意软件应用和进程。[0008]内核模式rootkit和其他恶意软件采用各种方法来对用户模式应用和内核模式设备驱动程序隐藏它们的存在。取决于感染发生的场所,所使用的技术可以改变。例如,恶意软件攻击操作系统的内核活动进程列表以便从列表中划去(delist)或解开(unlink)rootkit或其他恶意软件进程。其他恶意软件可以欺骗进程访问和枚举函数的代码段。[0009]概述[0010]在一个实施例中,一种用于保护电子设备的系统,包括存储器、处理器、驻留在存储器中以供由处理器执行的一个或多个操作系统、通信上耦合到操作系统的电子设备的资源、被配置为以低于访问资源的电子设备的所有操作系统的级别在电子设备上执行的虚拟机监视器、以及被配置为以低于访问资源的电子设备的所有操作系统的级别在电子设备上执行的安全代理。该虚拟机监视器被配置为截取从高于虚拟机监视器的级别做出的对资源的请求并向安全代理告知该请求。安全代理被配置为判断该请求是否指示恶意软件。[0011]在另一个实施例中,一种用于保护电子设备的系统,包括存储器、处理器、驻留在存储器中以供由处理器执行的一个或多个操作系统、通信上耦合到操作系统的电子设备的资源、被配置为以高于访问资源的电子设备的所有操作系统的优先级在电子设备上执行的虚拟机监视器、以及被配置为以高于访问资源的电子设备的所有操作系统的优先级在电子设备上执行的安全代理。优先级由处理器定义。虚拟机监视器被配置为截取从具有比虚拟机监视器低的优先级的实体做出的对资源的请求并向安全代理告知该请求。安全代理被配置为判断是否该请求指示恶意软件。[0012]在又一个实施例中,一种用于保护电子设备的系统,包括存储器、处理器、驻留在存储器中以供由处理器执行的一个或多个操作系统、耦合到操作系统的电子设备的资源、被配置为在比访问资源的电子设备的所有操作系统享有更多特权的执行环上在电子设备上执行的虚拟机监视器、被配置为在比电子设备的所有操作系统享有更多特权的执行环上在电子设备上执行的安全代理。虚拟机监视器被配置为截取对资源的请求,从比虚拟机监视器享有较少特权的执行环做出该请求并向安全代理告知该请求。安全代理被配置为判断该请求是否指示恶意软件。[0013]在再一个实施例中,一种用于保护电子设备的方法包括,以低于访问资源的电子设备的所有操作系统的级别,截取从较高级别做出的对电子设备的资源的请求并判断该请求是否指示恶意软件。该资源通信上耦合到操作系统。[0014]在进一步的实施例中,一种用于保护电子设备的方法包括,以比访问资源的电子设备的所有操作系统较高的优先级,截取从具有较低优先级的实体做出的对资源的请求并判断该请求是否指示恶意软件。这样的优先级由电子设备的处理器定义。[0015]在另一个进一步的实施例中,一种用于保护电子设备的方法包括,在比访问资源的电子设备的所有操作系统享有更多特权的执行环上,截取对资源的请求并判断该请求是否指示恶意软件。从享有较少特权的执行环做出该请求。[0016]在又一个进一步的实施例中,一种制品包括计算机可读介质和在计算机可读介质上携带的计算机可执行指令。指令可由处理器读取。在被读取和被执行时,指令用于使处理器以低于访问资源的电子设备的所有操作系统的级别截取从较高的级别做出的对电子设备的资源的请求并判断该请求是否指示恶意软件。该资源通信上耦合到操作系统。[0017]在再一个进一步的实施例中,一种制品包括计算机可读介质和在计算机可读介质上携带的计算机可执行指令。指令可由处理器读取。在被读取和被执行时,指令用于使处理器以比访问资源的电子设备的所有操作系统较高的优先级截取从具有较少的优先级的实体做出的对资源的请求并判断该请求是否指示恶意软件。优先级由处理器定义。[0018]在附加的实施例中,一种制品包括计算机可读介质和在计算机可读介质上携带的计算机可执行指令。指令可由处理器读取。在被读取和被执行时,指令用于使处理器在比访问资源的电子设备的所有操作系统享有更多特权的执行环上截取对资源的请求并判断该请求是否指示恶意软件。从享有较少特权的执行环做出该请求。[0019]附图简述[0020]为了更完整地理解本发明及其优点,现在参见结合附图阅读的以下撰写的描述,附图中:[0021]图1是用于保护电子设备免遭恶意软件的系统的示例实施例;[0022]图2是用于保护电子设备免遭恶意软件的基于虚拟机监视器的和基于安全规则的可配置安全解决方案的系统的示例实施例;[0023]图3是用于基于虚拟机监视器保护电子设备免遭恶意软件的方法的示例实施例;[0024]图4是用于保护电子设备免遭恶意软件的基于固件的和基于安全规则的系统的示例实施例;[0025]图5是用于保护电子设备免遭恶意软件的基于固件的解决方案的示例实施例的更详尽的视图;[0026]图6是基于固件的保护电子设备免遭恶意软件的方法的示例实施例;[0027]图7是用于针对恶意软件保护电子设备的基于微代码的系统的示例实施例;[0028]图8是基于微代码的保护电子设备免遭恶意软件的方法的示例实施例;[0029]图9是用于调节对电子设备上的安全敏感的处理器资源的软件访问的系统的示例实施例;[0030]图10是处理器资源控制结构的示例实施例;[0031]图11是用于调节对电子设备的安全敏感的处理器资源的软件访问的方法的示例实施例;[0032]图12用于调节软件访问的系统的示例实施例,该系统用于在电子设备上使用操作系统下层捕获(below-operatingsystemtrapping)来保护存储器;[0033]图13是存储器映射的示例实施例的阐释;[0034]图14是使用对电子设备的尝试访问的操作系统下层捕获来保护存储器的方法的示例实施例;[0035]图15是保护电子设备的操作系统内核的系统的示例实施例;[0036]图16是对操作系统的可信访问和可信驱动程序组件的访问映射的示例实施例;[0037]图17是进一步阐释图16的访问映射的虚拟存储器的示例实施例;[0038]图18是用于产生对操作系统的可信访问和可信驱动程序组件的访问映射的系统的示例实施例;以及[0039]图19是用于保护电子设备的操作系统内核的方法的示例实施例;[0040]图21是用于提供受保护操作系统执行环境的系统中的起动模块的示例实施例;[0041]图22是用于安全地执行操作系统的操作系统执行环境的示例实施例;[0042]图23是供用于提供受保护操作系统执行环境的系统或方法的盘映射位图的示例实施例;[0043]图24是用于起动受保护操作系统执行环境的方法的示例实施例;[0044]图25是提供用于安全地执行操作系统的操作系统执行环境的方法的示例实施例;[0045]图26是用于保护存储设备免遭未经授权的访问的系统的示例实施例;[0046]图27是供与用于保护存储设备免遭未经授权的访问的系统或方法一起使用的安全规则的示例实施例;[0047]图28是用于保护存储设备免遭未经授权的访问的方法的示例实施例;[0048]图29是用于保护在应用和输入/输出设备之间的写访问的输入/输出路径的系统的示例实施例;[0049]图30是用于保护在应用和输入/输出设备之间的写访问的输入/输出路径的方法的示例实施例;[0050]图31是用于保护在应用和输入/输出设备之间的读访问的输入/输出路径的系统的示例实施例;[0051]图32是用于保护在应用和输入/输出设备之间的读访问的输入/输出路径的方法的示例实施例;[0052]图33是用于检测和修复电子设备上的隐藏进程的系统的示例实施例;[0053]图34是用于检测和修复电子设备上的隐藏进程的方法的示例实施例;[0054]图35是用于检测和修复电子设备上的隐藏进程的另一系统的示例实施例;[0055]图36是用于检测和修复电子设备上的隐藏进程的另一方法的示例实施例;[0056]图37是用于检测和修复电子设备上的隐藏进程的又一方法的示例实施例;[0057]图38是用于保护对操作系统的系统调用的访问的系统的示例实施例;[0058]图39是供与保护对操作系统的系统调用的访问的系统或方法一起使用的系统调用表的不例实施例;[0059]图40是用于保护对操作系统的系统调用的访问的方法的示例实施例;[0060]图41是用于电子设备上恶意或潜在恶意的代码的调节和控制的系统的示例实施例;[0061]图42是用于电子设备上的自修改代码的调节和控制的方法的示例实施例;[0062]图43是用于电子设备上的恶意代码的修改的方法的示例实施例;[0063]图44是用于电子设备上的相关线程的监视和跟踪的方法的示例实施例;[0064]图45是用于保护电子设备的存储器和存储的系统的示例实施例;[0065]图46是用于保护电子设备的存储器和存储的方法的示例实施例;[0066]图47是用于保护对操作系统的对象的访问的系统的示例实施例;[0067]图48是供与保护对操作系统的对象的访问的系统或方法一起使用的行为状态映射的示例实施例;[0068]图49是用于保护对操作系统的对象的访问的方法的示例实施例;[0069]图50是用于保护在电子设备上的驱动程序之间的通信的系统的示例实施例;[0070]图51是驱动程序间通信的示例阐释;[0071]图52是0/S下层安全代理可以保护的电子设备的示例部分的附加阐释;[0072]图53是用于电子设备中的驱动程序间通信的操作系统下层捕获和保护的方法的示例实施例;[0073]图54是用于保护电子设备上驱动程序过滤器的附接和分开的系统的示例实施例;[0074]图55是示例设备栈区(devicestack)的操作的更详尽的阐释;[0075]图56是可能已经受到进行附接或分开驱动程序过滤器的恶意软件危害的设备栈区的示例阐释;[0076]图57是用于电子设备中的驱动程序过滤器附接的操作系统下层捕获的方法的示例实施例;[0077]图58是用于保护电子设备上的驱动程序的加载或卸载的系统的示例实施例;[0078]图59A和图59B是用于保护电子设备上的驱动程序的加载或卸载的方法的示例实施例;[0079]图60是用于操作系统下层捕获和保护把代码加载到存储器中的系统的示例实施例;[0080]图61是应用如何收集注入的代码以便放置在存储器中以供执行的示例阐释;[0081]图62A示出把应用的映像从磁盘加载到存储器的示例阐释;[0082]图62B示出在应用的映像被加载到存储器中之后实施的可能动作的示例阐释;[0083]图63阐释对所交换的内容恶意攻击以便注入代码的附加示例;[0084]图64是在一部分存储器已经被判断为恶意的之后的存储器映射的示例实施例;以及[0085]图65是存储器中的代码的加载和执行的操作系统下层捕获的方法的示例实施例。[0086]本发明的详细描述[0087]图1是用于保护电子设备免遭恶意软件的系统100的示例实施例。系统100可以包括通信上耦合到已触发事件应对程序108的操作系统(“0/S”)下层捕获代理104。0/S下层捕获代理104可以被配置为捕获电子设备103的资源106的各种已尝试的访问。0/S下层捕获代理104可以被配置为创建与已捕获的已尝试访问相关联的触发事件,并把已触发事件发送给触发事件应对程序108。触发事件应对程序108可以被配置为查阅一个或多个安全规则114或保护服务器102,以判断如何应对该触发事件。已触发事件应对程序108也可以被配置为评估已触发事件的倾向是恶意软件或破坏电子设备103的资源或操作的恶意尝试的指示。此外,已触发事件应对程序108可以被配置为向0/S下层捕获代理104提供应当允许还是拒绝已触发事件的判断,或可以被配置为产生另一矫正动作。[0088]可以在比电子设备103中的操作系统较低的功能级别实现0/S下层捕获代理104。例如,0/S下层捕获代理104可以截取操作系统112、驱动程序111或应用110对资源106的已尝试访问。0/S下层捕获代理104可以无需使用操作系统就运行在电子设备103的处理器上。在一个实施例中,0/S下层捕获代理104可以在裸机环境或执行级别上操作。另外,0/S下层捕获代理104可以运行在比电子设备103的所有操作系统高的执行优先级上,如电子设备103的处理器所定义的。例如,在其中较低的数字表示较高的优先级的使用保护环的分级保护域模型的上下文中,操作系统112可以在“O环(RingO)”操作,同时0/S下层捕获代理104可以在“I环(Ringl)”操作。驱动程序111和应用110可以在“O环”或“3环(Ring3)”操作。在处理器的一些实施例中,“I环”的概念可以被称为“O环特权模式”,且“O环”的概念可以被称为“O环非特权模式”。“I环”或“O环特权模式”中的操作可以比“O环”或“O环非特权模式”需要附加的开销和支出。电子设备103的操作系统可以在O环运行。[0089]0/S下层捕获代理104可以对在O环或更高的环运行的实体透明地操作。因而无论Ο/s下层捕获代理104是否存在都可以由操作系统112或另一实体以相同的方式请求对资源106的尝试访问。在强加接收到的动作时,Ο/S下层捕获代理104可以允许该请求发生,可以拒绝该请求,或采取其他矫正动作。为了拒绝请求,Ο/S下层捕获代理104可以简单地不把请求传送给资源106或处理器,或可以向该请求提供欺骗的或假的应答以便使得操作系统112相信该动作已经发生。[0090]通过在“I环”、在比电子设备103的相关操作系统更高的优先级或低于电子设备103的相关操作系统运行,0/S下层捕获代理104可以避免困扰诸如操作系统112之类的操作系统的大多数恶意软件。恶意软件可以欺骗在“O环”运行的操作系统112或甚至反恶意软件的软件,这是因为恶意软件也可以在“O环”优先级运行。然而,如果要执行恶意活动,电子设备103上的恶意软件必须仍然做出对资源106的请求。因而,捕获被链接到敏感资源的操作可以由在低于电子设备103中的操作系统的级别下运行的捕获代理较好地完成。[0091]可以以任何合适的方式实现0/S下层捕获代理104。在一个实施例中,可以在虚拟机监视器中实现0/S下层捕获代理104。这样的实施例可以在低于操作系统的级别下操作,如对于0/S下层捕获代理104所描述的。例如,在下面的图2中的对安全虚拟机监视器216的讨论中可以找到这样的实施例的示例的描述。在另一实施例中,可以在固件中实现0/S下层捕获代理104。这样的实施例可以在低于操作系统的级别下操作,如对于0/S下层捕获代理104所描述的。例如,可以在下面的图4和图5中对固件安全代理440、516或PC固件安全代理444的讨论中找到这样的实施例的示例的描述。在又一个实施例中,可以在微代码中实现0/S下层捕获代理104。这样的实现可以在低于操作系统的级别下操作,如对于0/S下层捕获代理104所描述的。例如,在下面的图7中对微代码安全代理708的讨论中找到这样的实施例的示例的描述。可以在这些实施例的组合中实现0/S下层捕获代理104。[0092]已触发事件应对程序108可以由通信上耦合在一起的一个或多个事件应对程序或安全代理实现。可以在相同的安全代理中实现已触发事件应对程序108和0/S下层捕获代理104。在一个实施例中,已触发事件应对程序108可以在与0/S下层捕获代理相同的优先级环操作。在另一实施例中,已触发事件应对程序108可以在与操作系统112、驱动程序111或应用110相同的优先级操作。在再一个实施例中,已触发事件应对程序108可以由两个或更多个已触发事件应对程序实现,其中至少一个已触发事件应对程序在与0/S下层捕获代理相同的优先级环操作,且至少一个已触发事件应对程序在操作系统112、驱动程序111或应用110的级别操作。通过在0/S下层捕获代理104的级别运行,已触发事件应对程序108可以类似地避免“O环”或“3环”恶意软件感染代理本身的问题。然而,与操作系统112、驱动程序111或应用110—起在“O环”或“3环”运行的已触发事件应对程序108可能能够提供关于从“I环”代理的角度来看不可获得的对资源106的尝试访问的上下文信肩、O[0093]可以以任何合适的方式实现已触发事件应对程序108。在一个实施例中,可以在虚拟机监视器或虚拟机监视器安全代理中实现已触发事件应对程序108。这样的实施例可以在低于操作系统的级别下操作,如对于已触发事件应对程序108所描述的。例如,可以在下面的图2中对安全虚拟机监视器216或安全虚拟机监视器安全代理217的讨论中找到这样的实施例的示例的描述。在另一实施例中,可以完全地或部分地在固件实现已触发事件应对程序108。这样的实施例可以在低于操作系统的级别下操作,如对于已触发事件应对程序108所描述的。例如,可以在下面的图4和图5中对固件安全代理440、516或PC固件安全代理444的讨论中找到这样的实施例的示例的描述。也可以在图4中的Ο/S下层代理450中实现已触发事件应对程序108,Ο/S下层代理450本身可以以像虚拟机监视器、固件或微代码那样的方式实现。在又一实施例中,可以在微代码中实现已触发事件应对程序108。这样的实现可以在低于操作系统的级别下操作,如对于已触发事件应对程序108所描述的。例如,可以在下面的图7中对微代码安全代理708的讨论中找到这样的实施例的示例的描述。也可以在图7的Ο/S下层代理712中实现已触发事件应对程序108,Ο/S下层代理712本身可以以像虚拟机监视器、固件或微代码那样的方式实现。可以在这些实施例的组合中实现已触发事件应对程序108。[0094]在一个实施例中,操作系统下层捕获代理104和/或已触发事件应对程序108可以在电子设备103的裸机层操作。操作系统下层捕获代理104和/或已触发事件应对程序108无需使用在它们和它们被配置为保护的资源106之间的操作系统就可以操作。资源106可以包括处理器、处理器的功能部件、存储器、诸如数据结构之类的驻留在存储器中的实体或诸如函数、进程或应用之类的驻留在存储器中以供由处理器执行的实体。操作系统下层捕获代理104和/或已触发事件应对程序108可以直接地在电子设备103的硬件上操作。操作系统下层捕获代理104和/或已触发事件应对程序108可以不要求使用诸如操作系统112之类的操作系统来执行,也不获得对资源106的完全访问。[0095]其他操作系统可以存在于电子设备103上,这些操作系统不参与在处于操作系统112、操作系统下层捕获代理104和已触发事件应对程序108的级别的实体与资源106之间的关系。例如,预引导操作系统可以安全地起动电子设备的各部分,但不参与电子设备在应对来自应用110、驱动程序111和操作系统112的对资源106做出的请求方面的正常操作。在另一示例中,电子设备103可以包含主板组件、插入式板卡、外围设备或其他组件,这些组件包含它们自己的各组操作系统和处理器,以执行在处于操作系统112、操作系统下层捕获代理104和已触发事件应对程序108的级别的实体与资源106之间的关系之外的功能。这些操作系统可以被嵌入到操作系统中。这些操作系统中的任何可以不被用来执行操作系统下层捕获代理104和已触发事件应对程序108。进一步,这些操作系统中的任何可以不访问受捕获代理104和已触发事件应对程序108保护的资源106。[0096]系统100可以包括一个或多个操作系统下层捕获代理104和一个或多个已触发事件应对程序108的任何组合。可以在对下面各图中的捕获代理、事件应对程序和安全代理的描述中找到操作系统下层捕获代理104和已触发事件应对程序108的描述。[0097]资源106可以包括电子设备的任何合适的资源。例如,资源106可以包括寄存器、存储器、控制器、或I/o设备。例如,可以在下面的图2的系统资源214、如图4中所示出的诸如显示器430和存储432之类的组件或图7的系统资源724的描述中找到资源106的示例实施例的描述。[0098]安全规则114可以包括任何合适的规则、逻辑、命令、指令、标志或用于向0/S下层捕获代理104告知要捕获什么动作或用于告知已触发事件应对程序108基于已捕获动作应对事件的其他机制。已触发事件应对程序108可以被配置为向0/S下层捕获代理提供一个或多个安全规则114。例如,可以在下面的图2的安全规则222、图4的安全规则422、434、436、438、图5的安全规则518、或图7的安全规则707、723的描述中找到安全规则114中的一些或全部的示例实施例的描述。[0099]可以以任何合适的方式实现诸如系统100的应用110、驱动程序111和操作系统112之类的内核模式和用户模式实体。例如,可以在下面的图2的应用210、驱动程序211和操作系统212;图4的应用410、驱动程序411和操作系统412;以及图7的应用709、驱动程序711和操作系统713的描述中找到系统100的应用110、驱动程序111和操作系统112的示例实施例的描述。[0100]可以以任何合适的方式实现电子设备103,例如计算机、个人数字助理、电话、移动设备、服务器或可配置为解释和/或执行程序指令和/或进程数据的任何其他设备。例如,可以在图2的电子设备204、图4的电子设备404或图7的电子设备701的讨论中找到电子设备103的示例实施例的描述。[0101]可以在用于在低于电子设备103的操作系统的级别捕获对资源的尝试访问的任何合适的系统中实现系统100。也可以在用于通过查询安全规则以便判断尝试访问是否恶意来应对尝试访问的任何合适装置中实现系统100。例如,系统100可以由下面的图2-图8中所描述的系统和方法200、300、400、500、600、700和800实现。[0102]图2是用于保护电子设备免遭恶意软件的基于虚拟机监视器和基于安全规则的可配置安全解决方案的系统200的示例实施例。系统200可以是系统100的示例实施例,实现虚拟机监视器中的系统100的某些元素。系统200可以包括受可配置安全解决方案保护免遭恶意软件的电子设备204。系统200的可配置安全解决方案可以包括在所有操作系统下层运行的安全代理、安全虚拟机监视器、基于云的安全代理和0/S内部行为的安全代理。0/S下层安全代理和安全虚拟机监视器可以被配置为守护对电子设备204的系统资源(包括由0/S内部行为安全代理使用的资源)的访问。0/S下层安全代理可以在安全虚拟机监视器中运行。基于云的安全代理可以被配置为向0/S下层安全代理和0/S内部行为安全代理提供恶意软件检测信息,并从安全虚拟机监视器和0/S内部行为安全代理接收关于可能与恶意软件相关联的可疑行为的信息。0/S内部行为安全代理可以被配置为扫描电子设备204以便得到在电子设备上操作的恶意软件的痕迹。系统200可以包括一个或多个0/S下层安全代理,该一个或多个0/S下层安全代理被配置为捕获对电子设备204的资源的访问的尝试使用、产生对应于该尝试的已触发事件、查阅关于已触发事件的安全规则并且如果有必要则采取关于该尝试的矫正动作。[0103]在一个实施例中,系统200可以包括通信上耦合到一个或多个0/S内部安全代理218和安全虚拟机监视器(“SVMM”)安全代理217的保护服务器202。SVMM安全代理217可以驻留在SVMM216中。SVMM216可以在电子设备204上驻留并操作。0/S内部安全代理218和SVMM安全代理217可以通信上耦合。保护服务器202、0/S内部安全代理218、SVMM安全代理217和SVMM216可以被配置为保护电子设备204免遭恶意软件的感染。[0104]SVMM安全代理217可以是图1的已触发事件应对程序108的示例实施例。SVMM216可以是图1的Ο/s下层捕获代理104的示例实施例。[0105]电子设备204可以包括被耦合到处理器206的存储器208。电子设备204可以包括出于任何合适的目的在电子设备上执行的一个或多个应用210或驱动程序211。电子设备204可以包括操作系统212。操作系统212可以被配置为向应用210或驱动程序211提供对电子设备204的系统资源214的访问。SVMM216可以被配置为截取操作系统212对系统资源214的这样的调用。SVMM216和SVMM安全代理217可以在低于操作系统212的级别操作。例如,SVMM216和SVMM安全代理217可以直接在处理器206上以诸如“I环”之类的特权模式操作。[0106]处理器206可以包括例如微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)或被配置为解释和/或执行程序指令和/或进程数据的任何其他数字电路或模拟电路。在一些实施例中,处理器206可以解释和/或执行被存储在存储器208中的程序指令和/或进程数据。存储器208可以部分地或整体地被配置为应用存储器、系统存储器或两者。存储器208可以包括被配置为持有和/或容纳一个或多个存储器模块的任何系统、设备或装置;例如,存储器208可以包括只读存储器、随机存取存储器、固态存储器、或基于盘的存储器。每一存储器模块可以包括被配置为保留程序指令和/或数据一段时间的任何系统、设备或装置(例如,计算机可读的非暂态介质)。[0107]保护服务器202可以在网络244上操作。在网络244上操作的保护服务器202可以实现云计算方案。保护服务器202可以被配置为与电子设备204的元素通信以便更新恶意软件检测规则和信息。保护服务器202可以被配置为接收关于起源于电子设备204的可疑活动的信息并判断这样的可疑活动是否恶意软件感染的指示。操作系统212可以包括一个或多个0/S内部安全代理218。0/S内部安全代理218可以被配置为从保护服务器202接收监视和检测规则,例如0/S内部安全规则220。0/S内部安全代理218可以被配置为使用保护服务器202所接收的0/S内部安全规则220来监视和防止电子设备204上的可疑活动。0/S内部安全代理218可以被配置为向保护服务器202报告所检测到的可疑活动。0/S内部安全代理218可以被配置为阻止恶意软件操作并向保护服务器202报告这样的阻止。如果多于一个的0/S内部安全代理218存在于系统200中,则每一0/S内部安全代理218可以被配置为执行捕获确证或与0/S内部安全代理218相关联的其他任务的经指派部分。这样的部分可以由操作系统下层安全代理界定。例如,一个0/S内部安全代理218可以确证或调查MOV指令,同时另一0/S内部安全代理218可以确证或调查JMP指令。0/S内部安全代理218可以被配置为确定存储器中特定页面的生命周期。例如,0/S内部安全代理218可以知道通常由操作系统212用来分配存储器的页面的进程和步骤。类似地,0/S内部安全代理218可以知道通常由操作系统212用来把应用的映像加载到其加载器中的进程和步骤。这样的进程可以遵循静态的操作模式。因而,0/S内部安全代理218可以被配置为跟踪操作系统212的操作以便判断对于给定动作标准过程是否得到遵循。0/S内部安全代理218可以与SVMM安全代理217通信以便判断SVMM安全代理217所捕获的操作是否产生0/S内部安全代理218所观察到的相应预期动作。矛盾可以指示恶意软件已经尝试执行在操作系统212的正常操作之外的系统功能。因而,例如0/S内部安全代理218和SVMM安全代理217可以判断可疑的页面是直接由恶意软件加载到存储器中还是由操作系统加载器加载。这样的行为可以引起0/S内部安全代理218或SVMM安全代理217向保护服务器202报告信息,采用更主动的捕获和检查,或采取任何其他矫正措施。[0108]在一个实施例中,0/S内部安全代理219可以被配置为通过把自身嵌入在操作系统212内来提供上下文信息。例如,0/S内部安全代理219可以被配置为把自身或子部件寄存为驱动程序过滤器,并把自身附接到主驱动程序,以判断驱动程序看到或看不到什么。通过作为对NDIS.SYS的过滤器而附接,例如,Ο/S内部安全代理219可以被配置为报告操作系统212驱动程序所看见的文件I/O操作。[0109]在另一实施例中,0/S内部安全代理219可以被配置为向SVMM安全代理216或其他Ο/s下层安全代理提供从操作系统219内观察到的这样的信息,以供与在操作系统下观察到的信息进行比较。在两组信息之间的矛盾可以指示尝试隐藏自身的恶意软件的存在。例如,0/S内部安全代理219可以钩住或过滤NDIS.SYS,并监视对特定文件的文件写入。SVMM安全代理216可以监视输入和输出命令。如果SVMM安全代理216基于由0/S内部安全代理219看见的函数调用列表确定比应该已经看见的更多的写入,那么,恶意软件可能在由操作系统212提供的函数外暗中写入到磁盘。[0110]可以以用于通信的任何合适的网络实现网络244,这样的网络诸如:因特网、内联网、广域网、局域网、回程网(back-haul-network)、对等网或其任何组合。保护服务器202可以使用从在各种电子设备204上运行的各种安全代理218提交的报告通过应用流行程度和口碑分析逻辑来进一步检测恶意软件。例如,可以把在电子设备204上所标识的可疑行为综合到规则中,供保护服务器202主动保护其他电子设备204。例如,基于可疑驱动程序已被报告的次数,可以确定这样的规则。例如,具有窄的或缓慢的分布模式的未知驱动程序可能与恶意软件相关联。另一方面,具有宽的和快速的分布的未知驱动程序可能与流行的和广泛可获得的应用的补丁相关联。在另一示例中,这样的检测到的驱动程序可能已经被在另一电子设备上运行的安全软件判断为已经访问宿主恶意软件已知的网站。这样的驱动程序可以被判断为与恶意软件相关联。[0111]SVMM216可以实现系统200的安全虚拟机监视函数中的一些或全部。SVMM216可以被配置为截取在电子设备上运行的一个或多个操作系统对诸如寄存器、存储器或I/o设备之类的系统资源的访问。可以使用SVMM216或被配置为根据本公开内容的教导保护电子设备204的任何其他虚拟机监视器来实现系统200的安全虚拟机监视函数。SVMM216可以被配置为控制和过滤在操作系统212代表自身或代表在操作系统212上运行的应用210尝试访问系统资源214的同时由操作系统212采取的动作。SVMM216可以在电子设备204上的操作系统212下运行且可以具有对操作系统212和应用210或驱动程序211可用的一些或全部处理器资源的控制权。应用210可以包括适合在电子设备204上运行的任何应用。驱动程序211可以包括适合在电子设备204上运行的任何驱动程序。可用于由SVMM216控制的处理器资源可以包括被指派为用于虚拟化的那些资源。在一个实施例中,SVMM216可以被配置为虚拟化系统资源214以供由操作系统212、应用210或驱动程序211访问。仅作为示例,这样的系统资源214可以包括输入-输出设备226、系统存储器228或处理器资源230。仅作为示例,处理器资源230可以包括常规寄存器232、调试寄存器234、存储器分段236、存储器分页238、中断240或标志242。I/O设备226可以包括对诸如键盘、显示器、鼠标或网卡之类的此类设备的访问。[0112]SVMM216可以被配置为捕获起源于操作系统212以便访问系统资源214的操作的执行。SVMM216可以包括被配置为捕获对系统资源214的特定的尝试访问的控制结构。可以使用任何合适的控制结构。在一个实施例中,这样的控制结构可以包括虚拟机控制结构(“VMCS”)221。SVMM216可以被配置为通过操纵在VMCS221内的标志捕获这样的执行。SVMM216可以被配置为捕获涉及对系统资源214的访问的操作系统212、应用210或驱动程序211的任何合适的操作。这样的所捕获的操作可以包括,例如:读取、写入和执行系统存储器228中的存储器的特定页面;从处理器寄存器230加载值和向其中存储值;或从I/O设备226读取和向其写入。任何这样的操作可以引起虚拟机退出(“VMExit”),这可以由SVMM216捕获。SVMM216可以被配置为捕获中断240的产生,中断240可以由处理器208产生或由操作系统212的元素发起。SVMM216可以被配置为通过捕获IN(输入)和OUT(输出)指令来捕获从I/O设备226尝试读取和向其写入。SVMM可以被配置为通过捕获对例如虚拟化技术直接I/O(VirtualizationTechnologyDirectedI/O,“VTd”)的机制的访问来捕获这样的指令。VTd可以根据处理器208允许I/O设备虚拟化。通过访问VTd设施,SVMM安全代理217可以被配置为确定由VTd连接的设备、确定来自操作系统212的元信息、I/O设备上的端口或其他合适的信息。SVMM安全代理217可以被配置为控制或捕获这样的虚拟化设备访问的操作。例如,SVMM安全代理217可以被配置为确定包含给予可编程I/O端口的I/O指派的I/O权限映射。SVMM安全代理217可以被配置为捕获可能由恶意软件做出的对这样的权限映射的访问,或使用这样的权限映射来判断操作系统212上的实体和I/O设备的请求的关系。[0113]在一个实施例中,SVMM安全代理217可以在SVMM216中操作。在另一实施例中,SVMM安全代理217可以在SVMM216外操作,但可以通信上耦合到SVMM216。在这样的实施例中,SVMM安全代理217可以在低于诸如操作系统212之类的电子设备204的操作系统的级别下操作。SVMM安全代理217可以在与SVMM216相同的级别和/或相同的优先级操作。SVMM安全代理217可以被配置为应对由SVMM216触发或捕获的事件。SVMM安全代理217可以被配置为在低于操作系统212的级别下访问存储器228或盘的内容,以便检查内容免受内核级别rootkit的干扰。此外,SVMM安全代理217的一些操作可以由SVMM216实现,且SVMM216的一些操作可以由SVMM安全代理217实现。[0114]在关于什么动作将引起捕获或触发的方面,SVMM安全代理217可以被配置为设定SVMM216的操作。在一个实施例中,SVMM216可以被配置为把已捕获动作的检测传输给SVMM安全代理217。SVMM安全代理217可以被配置为查阅安全规则222以便判断该已捕获动作是否指示恶意软件或恶意活动,并且基于安全规则222可以把关于采取什么随后动作的指示提供给SVMM216ο这样的随后动作可以包括允许已尝试的动作、不允许已尝试的动作或采取其他矫正步骤。[0115]可以通过由0/S内部安全代理218收集的信息来协调SVMM216和SVMM安全代理217捕获对系统资源214的已尝试的访问和执行的操作。0/S内部安全代理218可以被配置为把上下文提供给SVMM216和SVMM安全代理217的捕获和应对操作。例如,特定的操作系统数据结构正常情况下只由特定的应用或服务写入。0/S内部安全代理218可以确定什么应用或进程当前在操作系统212上可见地运行并把该信息传输给SVMM安全代理217。如果特定的应用或服务不被列出为可见地运行,那么,对数据结构的尝试写入可能来自未经授权的应用或进程。[0116]0/S内部安全代理218可以被配置为经由超级调用与SVMM216和/或SVMM安全代理217通信。超级调用可以被实现为带有定义可以使用的可用请求的描述符表以及关联的输入和输出参数。这样的描述符表可以定义可能用于Ο/s内部安全代理218与SVMM216和/或SVMM安全代理217通信的一个或多个请求。这样的描述符表也可以定义这样的请求的输入和输出参数可以位于存储器中的何处。[0117]0/S内部安全代理218、SVMM安全代理217和保护服务器202可以被配置为相互认证。安全代理212、SVMM安全代理217和保护服务器202中的每一个可以被配置为不继续相互通信,除非各实体中的每一个都经过认证。SVMM216可以被配置为把0/S内部安全代理218映像定位在存储器206中,并使用密码签名算法来验证存储器206中的0/S内部安全代理218映像。在保护服务器202、0/S内部安全代理218和SVMM安全代理217之间的认证可以使用任何合适的方法,包括密码散列和/或签名算法。在一个实施例中,这样的认证可以涉及私有密钥的交换。0/S内部安全代理218可以被配置为从保护服务器202接收密钥以便验证SVMM安全代理217的实例。[0118]0/S内部安全代理218可以具有关于操作系统212的操作的上下文信息。0/S内部安全代理218可以被配置为与SVMM安全代理217通信以提供这样的上下文信息。SVMM安全代理217可以指示SVMM216例如如何定义存储器的某些页面或捕获哪些寄存器。[0119]SVMM216可以被配置为捕获由SVMM安全代理217界定的对系统资源214的访问尝试。例如,为了捕获存储器访问,SVMM216可以被配置为捕获诸如读、写或执行之类的操作。为了捕获对处理器寄存器230的访问,SVMM216可以被指示为捕获包括加载、存储或读取寄存器值的操作。为了捕获I/O操作,I/O设备226、SVMM216可以被指示捕获诸如对键盘、鼠标或其他外围设备的输入或输出之类的操作。与操作系统内部安全代理联合,下面各图中的SVMM安全代理217和/或其他操作系统下层安全代理可以被配置为对于I/O操作确定目标I/O设备226的身份、要在I/O设备226上执行的目标操作和要传输的数据。[0120]SVMM安全代理217可以被配置为确定上下文信息,例如操作系统212的什么实体已经尝试访问电子设备204的资源,或者资源可以属于操作系统212的什么实体。SVMM安全代理217可以被配置为通过任何合适的方法做出这样的判定。在一个实施例中,SVMM安全代理217可以被配置为从操作系统内部安全代理218访问这样的判定的上下文信息。在另一实施例中,SVMM安全代理217可以被配置为直接地或间接地访问操作系统212的调用栈区和/或处理器208的执行栈区,以判断由操作系统212的不同进程或应用的调用次序。执打指令指针可以指向引起触发器的指令,冋时执彳丁找区指针和执彳丁基址指针可以指向找区帧。通过栈区穿行执行基址指针,可以标识先前的函数调用,为即将到来的操作提供上下文。这样的栈区可以指示已尝试的操作以及源存储器位置。在又一实施例中,SVMM安全代理217可以被配置为结合安全规则222使用存储器映射来判断尝试是否恶意或指示恶意软件。例如,给定已尝试的访问的存储器位置,这样的存储器映射可以指示做出对资源的尝试访问的实体。例如,在虚拟存储器页面标识符和/或物理存储器地址中,可以定义这样的存储器映射。在另一示例中,这样的存储器映射可以指示对应于该尝试的目标的存储器位置的实体。使用存储器映射,SVMM安全代理217可以被配置为确定已尝试的访问的源和目标的身份或其实体所有者。在下面各图中,结合操作系统内部安全代理,通过监视系统的执行,可以部分地由SVMM安全代理217或其他0/S下层安全代理创建存储器映射。结合操作系统内部安全代理,下面各图中的SVMM安全代理217和/或其他操作系统下层安全代理可以为给定的存储器页面或物理地址判断这样的位置是否属于特定的代码部分或数据部分;它属于哪些模块、进程、应用、映像或其他实体;或者它是否与用户模式或内核模式条目相关联。结合操作系统内部安全代理,下面各图中的SVMM安全代理217和/或其他操作系统下层安全代理可以为虚拟存储器和物理存储器的映射确定指示在电子设备204上运行的各种实体的标识、位置和权限的元数据。类似地,下面各图中的SVMM安全代理217和/或其他操作系统下层安全代理可以使用大容量存储设备中的扇区的映射来判断这样的实体的映像在大容量存储设备中的位置。结合操作系统内部安全代理,下面各图中的SVMM安全代理217和/或其他操作系统下层安全代理可以为给定的实体确定它们可以驻留在上面的扇区、文件、目录和卷。[0121]SVMM安全代理217可以被配置为分配存储器,例如0/S内部安全代理218、SVMM安全代理217和SVMM216的操作所要求的系统存储器228。SVMM安全代理217可以被配置为请求SVMM216确保这样的已分配存储器免遭未经授权的读和写操作。SVMM216可以被配置为在建立了存储器的保护之后初始化已分配存储器,以便消除恶意软件在由0/S内部安全代理218分配存储器和由SVMM216建立保护的时间之间添加恶意代码的机会。[0122]SVMM安全代理217可以被配置为与保护服务器202通信以便安全地接收SVMM安全规则222。SVMM安全规则222可以包括指令、逻辑、规则、共享库、函数、模块或用于指示SVMM216采用什么安全政策的任何其他合适的机制。SVMM安全代理217可以被配置为向保护服务器202传输关于来自电子设备204的可疑活动和已检测的恶意软件的信息。[0123]0/S内部安全代理218可以被配置为与保护服务器202通信以便接收0/S内部安全规则220。0/S内部安全规则220可以包括指令、逻辑、规则、共享库、函数、模块或供0/S内部安全代理218检测电子设备204上的恶意软件的任何其他合适的机制。0/S内部安全代理218可以被配置为向保护服务器202传输关于电子设备204上的可疑活动和已检测恶意软件的信息。[0124]0/S内部安全规则220和SVMM安全规则222均可以包括用于保护电子设备204免受恶意软件感染且用于检测可能包括恶意软件的可疑活动的保护规则。Ο/s内部安全代理安全规则可以包含可由Ο/s内部安全代理218执行且在0/S内部安全代理218内的规则。SVMM安全规则222可以包含可由SVMM216和/或SVMM安全代理217执行且在SVMM216和/或SVMM安全代理217内的规则。[0125]SVMM安全规则222可以被配置为向SVMM安全代理217提供带有如何观察和检测电子设备204的恶意软件感染的定义的信息。例如,SVMM安全规则222可以包括来自诸如应用210或驱动程序211之类的实体的什么类型的函数调用或行为的分类,SVMM安全代理217可以监视这些函数调用或行为以便得到恶意软件的指示。作为另一示例,SVMM安全规则222可以包括SVMM安全代理217如何处理这样的已触发函数调用的定义,包括使用什么参数、如何从这样的调用提取值或者如何确证这样的调用的操作。此外,SVMM安全规则222可以包括用于SVMM内部安全代理217的关于如何监视诸如应用210或驱动程序211之类的电子设备的实体的行为的信息,以及这样的行为的检测规则的例外。作为又一示例,SVMM安全规则222可以包括用于SVMM安全代理217的关于如何防止和修复通过这样的行为的检测规则检测到的恶意行为的信息。SVMM安全规则222可以包括SVMM安全代理217应监视、收集什么数据并将其发送到保护服务器202的细节。[0126]类似地,0/S内部安全规则220可以被配置为向0/S内部安全代理218提供带有如何观察和检测电子设备204的恶意软件感染的定义以及如何与SVMM安全代理217协调这样的活动的信息。[0127]SVMM安全规则222也可以包括关于SVMM216将捕获的什么动作的规则。SVMM安全代理217可以被配置为把这样的规则应用到SVMM216。例如,SVMM安全代理217可以被配置为转换要被捕获到存储器的可识别的虚拟或物理页面中的函数的地址、创建SVMM216捕获这样的页面的执行的请求以及随后在捕获该执行之后调用安全代理217。SVMM安全代理217可以被配置为通过其与SVMM216的接口接收SVMM安全规则222。这样的接口可以包括基于超级调用的接口。SVMM安全代理217可以被配置为通过相同的基于超级调用的接口把任何得到的检测或报告推送给SVMM216。[0128]在一个实施例中,SVMM216可以被配置为无需查询SVMM安全代理217就处理已触发动作。在这样的实施例中,SVMM216可以被配置为安装在SVMM216内处理的附加触发器,该触发器可以不被传送给SVMM安全代理217。这样的附加触发器可以由SVMM安全规则222界定。在一个实施例中,SVMM安全规则222可以定义用于SVMM216的存储器页面扫描规贝U。这样的规则可以包括哪些是恶意的且不应允许驻留在存储器中的实体或修正的列表。这样的规则也可以包括白名单,被配置为包括专门允许存在于系统存储器228内的页面的列表。在另一实施例中,SVMM安全规则222可以定义SVMM216存储器页面访问规则。这样的规则可以包括允许什么代码页面或相反地禁止访问给定代码或数据页面的定义。因此,SVMM安全规则222可以被配置为指示SVMM216按照存储器扫描器动作,和/或控制对存储器页面的访问。[0129]SVMM216可以被配置为通过阻止对系统资源214中它们各自的代码和数据页面的未经授权的读访问和写访问来保护SVMM安全代理217、SVMM216和0/S内部安全代理218。例如,如果应用210或驱动程序211做出对系统存储器228、处理器寄存器230或I/O设备226中的一部分的、将引起影响SVMM安全代理217、SVMM216和0/S内部安全代理218的完整性或操作的请求,那么,SVMM216可以被配置为截取这样的尝试请求,且随后重新路由该请求、拒绝它或采取其他适当的动作。在另一示例中,SVMM216可以被配置为授权对系统存储器228、处理器寄存器230或I/O设备226的一部分的读取访问,这些读取访问影响SVMM安全代理217、SVMM216和用于诸如SVMM安全代理217本身之类的存储器安全软件应用或其他相应的或附属的程序的0/S内部安全代理218。这样的授权可以在SVMM安全规则222内定义,SVMM安全规则222可以定义SVMM216如何应对对诸如系统存储器228之类的系统资源214的访问。在一个实施例中,SVMM安全规则222可以包括可信安全程序的白名单,该白名单可以包括SVMM安全代理217。[0130]为了与保护服务器202通信,SVMM216可以包括受保护网络接口224。受保护网络接口224可以被配置为提供在诸如保护服务器202之类的网络服务器和诸如SVMM216或SVMM安全代理217之类的电子设备204的元素之间的安全访问。SVMM216可以包括可以实现受保护网络接口224的逻辑TCP/IP驱动程序或其他通信接口。保护服务器202可以被配置为经由受保护网络接口224通信以便指示SVMM216或SVMM安全代理217更新自身,并且提供诸如SVMM安全规则222或0/S内部安全规则220之类的保护规则。保护服务器202可以被配置为递送用于特定电子设备204或特定SVMM216的自定义规则。这样的定制可以包括电子设备204上已经报告的恶意活动的类型以及在电子设备204内的诸如抗病毒程序、防火墙或其他保护机制之类的其他保护机制。在一个实施例中,保护服务器202可以由电子设备204的管理员例如在本地网络上操作。在这样的情况中,管理员可以由从保护服务器202接收到的规则实现的、用于应对可疑行为的设置全局或个性化政策。SVMM216可以包括告知SVMM216或SVMM安全代理217如何通过经由保护服务器202安全递送的新映像来更新自身的更新引擎。[0131]0/S内部安全规则220和SVMM安全规则222均可以被配置为请求把电子设备204上的特定的所观察到的动作或操作或者各类所观察到的动作或操作传送给保护服务器202。因此,保护服务器可以在允许动作在电子设备204上进行之前检查和验证观察结果。保护服务器202可以被配置为接受这样的动作以便同步地或异步地检查。在一个实施例中,0/S内部安全代理218可以被配置为把有问题的活动、代码或数据的片段或动作传送给SVMM216以供由保护服务器202验证。例如,0/S内部安全代理218可以通过检测在存储器内加载的未签名驱动程序来检测可疑的恶意软件实例。SVMM216可以从0/S内部安全代理218接收关于可疑软件的信息,且可以把它提供给保护服务器202。[0132]SVMM安全规则222可以被配置为允许或拒绝对电子设备的任何合适的系统资源的访问。可用于被监视的这样的资源可以取决于由处理器206公开的资源。例如,在一个实施例中,SVMM安全规则222可以被配置为允许SVMM216限定对系统存储器228、1/0设备226和中断140的访问。这样的限制可以防止对诸如键盘、显示器或可移动盘之类的I/O设备的未经授权的访问。在另一实施例中,SVMM安全规则222可以被配置为允许SVMM216限定对中断描述符表条目的访问,包括诸如中断240之类的在处理器寄存器中的条目。在又一实施例中,SVMM安全规则222可以被配置为允许SVMM216限定对扩展页面表(“EPT”)或应对虚拟存储器(从客户操作系统的角度来看是真实存储器)到宿主物理存储器的映射任何其他机制的访问。[0133]如果除了处理器208之外电子设备204还包含支持虚拟化的一个或多个处理器,则SVMM216或SVMM216的另一实例可以被配置为截取对访问这样的其他处理器的虚拟化资源的尝试。如果电子设备204包含例如包含处理器208的四核处理器,则四核处理器的资源可受SVMM216保护。如果一个或多个其他处理器不支持虚拟化,则SVMM216不可以保护对它们的资源的访问。如果一个或多个其他处理器支持与处理器208不同的虚拟化技术,则SVMM216可以被配置为保护对它们的资源的访问,但是以不同于保护处理器208的方式,这是由于虚拟化资源的方式不同。[0134]在操作中,保护服务器可以在网络244上运行。通过扫描电子设备204以便发现恶意软件,观察诸如电子设备204上的应用210和驱动程序211之类的实体的行为以便发现可疑行为,并通过修复所找到的任何这样的感染,0/S内部安全代理218可以在电子设备204上运行以便保护电子设备204免受恶意软件感染。0/S内部安全代理218可以运行在与操作系统212相同的优先级或级别,且可以运行在操作系统212中。SVMM216可以在电子设备204上操作以便通过捕获对电子设备204的系统资源的已尝试的访问来保护电子设备204免受恶意软件感染。SVMM安全代理217可以运行在电子设备204或另一合适的电子设备上,以便设置SVMM216的捕获操作并应对所捕获的对系统资源的尝试访问中的一些或全部。SVMM216和SVMM安全代理217可以运行在低于具有优先级“I环”的操作系统212之下。SVMM安全代理217可以在SVMM216上运行。[0135]保护服务器202可以把诸如SVMM安全规则222和0/S内部安全规则220之类的安全规则发送到电子设备204。这样的规则可以由SVMM安全代理217接收,这可以把0/S内部安全规则220提供给SVMM216。这样的规则可以由Ο/S内部安全代理218接收。[0136]保护服务器202、安全代理218和SVMM安全代理217均可以相互认证。SVMM安全代理217可以在存储器中定位安全代理218的映像,并使用密码签名算法来验证驻留在存储器中的安全代理218的映像。保护服务器202和SVMM安全代理217可以使用密码散列和签名算法以便正确的相互标识来相互认证。SVMM安全代理217和保护服务器202也可以交换私有密钥以便认证相互的身份。安全代理218可以从保护服务器202接收密钥以便验证SVMM安全代理217的实例。可以不完全建立在安全代理218、SVMM安全代理217和SVMM安全代理202之间的通信,除非代理中的每一个都相互认证。类似地,如果SVMM安全代理217和SVMM216作为分离的实体而运行,则它们可以相互验证和认证。[0137]SVMM216和SVMM安全代理217可以在电子设备204的操作系统212和所有操作系统下运行。SVMM216可以监视操作系统212、安全代理218、应用210和驱动程序211对包括I/O设备226、系统存储器228和处理器寄存器230在内的系统资源214的访问。SVMM216可以捕获操作系统212、安全代理218、应用210、驱动程序211或电子设备204的任何其他实体所请求的关键操作的执行。SVMM216可以通过操纵在VMCS221中的标志来捕获这样的执行。当VMCS221截取对受保护的资源的请求时,操作可以被移交给SVMM216以供进一步操作、诊断和修复。在一个实施例中,操作可以随后由SVMM安全代理217操作。在另一实施例中,已捕获操作的应对可以由SVMM216本身实施。SVMM216可以捕获电子设备204的任何必要操作以提供针对恶意软件的保护。这样的操作可以包括但不限于:系统存储器228中特定的代码或数据页面的读取、写入和执行;从系统寄存器和处理器寄存器230加载和存储值;或者从I/O设备226读取或向其写入。将由SVMM216捕获的特定的操作可以由SVMM安全规则222定义。[0138]保护服务器202可以与SVMM安全代理217或0/S内部安全代理218通信以便向每一个提供安全规则。在一个实施例中,保护服务器202可以把SVMM安全规则222递送给SVMM安全代理217。在另一实施例中,保护服务器202可以把0/S内部安全规则220递送给0/S内部安全代理218。在又一实施例中,保护服务器202可以把0/S内部安全规则220递送给SVMM安全代理217,SVMM安全代理217然后可以把规则提供给0/S内部安全代理218。[0139]应用210、驱动程序211或操作电子设备204的其他实体可以被0/S内部安全代理218观察到。0/S内部安全代理218可以使用0/S内部安全规则220来观察这样的处理实体的行为以便判断它们的行为是否构成了指示恶意软件的可能感染的可疑行为。一旦这样检测到可疑活动,0/S内部安全代理218可以把可疑信息提供给保护服务器202以供进一步分析和指示。0/S内部安全规则220可以向0/S内部安全代理218指出,这样的行为是可疑的,并且指出矫正动作。例如,应用210可以与宿主恶意软件已知的网络目的地通信。0/S内部安全代理218可以注意到应用210的活动,且随后阻止应用210对网络目的地的网络访问。0/S内部安全代理218也可以扫描电子设备204以便发现恶意软件。例如,0/S内部安全代理218可以检查存储器206或系统存储器228的内容,以便得到对应于恶意软件的签名的模式。这样的检查可以揭示,例如,应用210包含对应于恶意软件的已知片段的一块代码。然后,0/S内部安全代理218可以通过修复应用210、移除应用210或采取任何其他合适的动作来从电子设备204清除恶意软件的感染。0/S内部安全代理218可以就任何已检测可疑行为或恶意软件的其他指示与保护服务器202通信,且可以从保护服务器202接收关于如何处理这样的恶意软件的指示。[0140]在一个实施例中,SVMM安全代理217可以被配置为基于做出已尝试的操作的实体的起源评估已捕获操作。例如,如果驱动程序是从未知域下载的,或具有来自未知担保人的证书,那么,该驱动程序随后操作的能力受到限制。例如,可以对其状态未知的驱动程序否决把自身附接到另一驱动程序的能力。如果驱动程序是从宿主恶意软件已知的域下载的,或者包含欺诈凭证,那么,可以甚至不准许加载该驱动程序。类似地,如果已知驱动程序是来自特定的域或由特定的作者创建,那么,SVMM安全代理217可以被配置为识别电子设备204中被授权为更新驱动程序的服务,并限制把驱动程序写入或存取到那些服务的能力。例如,来自公司X的内核驱动程序可以仅被写如到驻留在电子设备204上的公司X的更新服务软件。SVMM安全代理217可以被配置为确证更新服务的操作和完整性。在另一实施例中,SVMM安全代理217可以被配置为基于尝试的目标评估已捕获操作。例如,对于内核驱动程序可以捕获来自服务的更新软件的尝试,但不适用于应用软件。[0141]一旦实体已经被判断是可疑的,或尝试被判断为指示恶意软件,则可以链接引起尝试的该进程和容纳该进程的存储器。访问存储器的相同的部分的其他进程可以类似地被判断为恶意软件。可以存储访问资源的已捕获尝试,且可以根据原始事件评估访问受保护的资源的随后尝试。例如,恶意操作可以要求把代码写入到数据片段然后执行代码。因而,SVMM安全代理217可以捕获对该数据片段的原始写访问,允许写入,但是记录该写访问的源。随后,SVMM安全代理217可以捕获执行数据片段的随后尝试,并根据先前捕获的操作、尝试这种操作的实体或其他合适的取证信息评估该尝试的恶意状态。[0142]SVMM安全代理217可以就SVMM216要通过诸如VMCS221之类的控制结构捕获哪些系统资源214的问题指示SVMM216。然后,SVMM216可以捕获起源于电子设备204的诸如操作系统212、应用210或驱动程序211之类的实体的对系统资源214的访问请求。例如,如果做出请求读取、写入或执行系统存储器228的部分,则SVMM216可以通过在VMCS221中设定用于系统存储器的已指派部分的标志来截取这样的请求。在另一示例中,可以由VMCS221截取对I/O设备226做出的访问请求,例如输入或输出操作。在又一示例,诸如加载或存储命令之类的进程寄存器230中的请求可以由VMCS221捕获。任何这样的捕获都可以导致向SVMM216通知已尝试访问。一旦SVMM216已经捕获对系统资源214的已尝试的操作,SVMM216就可以把这样的已捕获执行传输给SVMM安全代理217。[0143]0/S内部安全代理218和SVMM安全代理217可以通信以便确定在操作系统212内实施的操作的上下文。例如,来自操作系统212对电子设备204的特定资源的已捕获系统调用可以源自存储器的特定部分。SVMM安全代理217可以与0/S内部安全代理218通信,以判断什么应用、进程或其他实体驻留在存储器的该特定部分内。[0144]然后,基于SVMM安全规则222和来自0/S内部安全代理218的已捕获操作和/或上下文信息,SVMM安全代理217可以判断这样的访问是否构成可疑动作,例如指示恶意软件的感染的那些动作。例如,未经授权的应用尝试改变受保护存储器空间的系统存储器228可能是可疑活动,且因而由SVMM216检测到的这样的尝试改变可以由SVMM安全代理217解释为恶意软件的操作。这样的活动可以被报告给保护服务器202以得到进一步指示,或者可以由0/S内部安全规则220指示动作。这样的检测的结果可以是阻止对系统存储器228的尝试改变,或触发对产生该尝试改变的电子设备204的实体的附加清除操作。[0145]SVMM216可以监视对系统资源214的附加调用以便保护SVMM216、SVMM安全代理217和/或0/S内部安全代理218的完整性。SVMM216可以实施由SVMM安全规则222定义的扫描操作,以便扫描系统存储器228的各部分,判断这样的存储器的各部分是否已经被恶意软件修改。SVMM216可以利用签名、散列或指示已知存储器的给定模式是不安全的还是安全的其他规则。[0146]例如,SVMM216可以通过阻止对对应于系统存储器228中的0/S内部安全代理218的代码和数据页面的未经授权的读取和写入访问来保护Ο/s内部安全代理218。一些恶意软件可能通过对与系统存储器228相关联的系统资源214做出存储器修改或其他修改来尝试攻击0/S内部安全代理218。SVMM216可以读取SVMM安全规则222中所包含的准许其变更代码或数据或对应于0/S内部安全代理218的其他系统资源214的已授权应用和电子设备204的其他实体的白名单。如果修改源自未被包含在白名单内的实体,那么,SVMM216可以确定这样的修改与恶意软件相关联。对对应于0/S内部安全代理218的系统资源214的未经授权的访问可以由SVMM以任何合适的方式应对,这些方式包括阻止访问、创建蜜罐进程、向保护服务器202报告违规或任何其他合适的补救。[0147]SVMM216也可以捕获对属于电子设备204的其他实体的系统资源214的访问。例如,系统存储器228中的目标存储器页面可以包含属于操作系统212的内核操作的一部分的样本代码或数据。SVMM216和SVMM安全规则222可以把对这样的目标页面的访问限制为仅经过授权的代码段。因此,如果系统存储器228中的代码页面尝试读取或变更目标存储器页面,且该代码页面属于电子设备204的未经授权实体,则这样的访问可以受到SVMM216阻止。因而,SVMM216可以用于控制对系统存储器228中的存储器页面的访问。[0148]SVMM安全代理217可能能够通过联系保护服务器202以便得到经更新的规则来更新SVMM安全规则222或0/S内部安全规则220。保护服务器202可以基于所观察到的特定恶意软件、管理员设置或电子设备204的其他特性配置要递送给SVMM安全代理217的规贝U。SVMM安全代理217可以根据用户的要求、周期性地或根据重大事件的发生(例如遇到可以链接到恶意软件的新的可疑活动)更新电子设备204的规则。[0149]SVMM安全代理217可以在对应于复合条件的VMCS中设置标志。可以跨越不同类型的资源捕获这样的标志。例如,VMCS可以被配置为捕获把某些值写入到存储器中的页面并随后把该页面移动到I/O设备的缓存的组合。[0150]系统200可以包含优于反恶意软件系统和软件的其他实现的一个或多个优点。例如,一些反恶意软件解决方案可以钩取操作系统的各种部分以便捕获和评估应用的低级操作。然而,这些解决方案自身可以在操作系统中操作或者在两个客户操作系统的情况中是在另一操作系统中操作。通过在操作系统的约束内操作,即使是以内核级的优先级操作,反恶意软件解决方案可能容易受到来自也运行在相同的操作系统上且也许运行在相同的优先级的恶意软件的恶意软件攻击的感染。如果在操作系统的级别实施对某些事件的捕获或触发,则这样的捕获或触发可能被运行在与操作系统相同的或较低的优先级的恶意软件钓鱼、钩取、逆向工程、危害或以另外方式挫败。例如,在操作系统上运行的检测和移除操作系统中的恶意挂钩的反恶意软件解决方案可以被在相同的优先级运行的恶意软件观察到。在另一示例中,作为过滤驱动程序寄存以便检测某些例程的操作的反恶意软件解决方案可以被在驱动程序栈区上比反恶意软件解决方案较低处寄存恶意过滤驱动程序的恶意软件挫败。类似地,如果某些已捕获或已触发事件的应对发生在操作系统的级别,则恶意软件可以影响这样的应对。例如,恶意软件可以撤销反恶意软件解决方案的修正,或甚至禁用反恶意软件解决方案的操作。[0151]在另一示例中,管理程序可以工作为虚拟化对诸如系统存储器228之类的系统资源的访问,但可能不会有条件地保护对系统资源的访问,且因而充当安全管理程序。这样的管理程序可以不拥有对诸如安全规则222中的行为规则之类的反恶意软件规则的访问权,以便标识恶意活动、实体或对系统资源的恶意的已尝试访问。这样的管理程序可以在操作系统自身内运行,这可能易于遭受在与操作系统相同的优先级水平运行的恶意软件。这样的管理程序可以不是以“O环特权模式”运行,这是因为这样的模式可以要求管理程序截取太多对系统资源的尝试访问。可以给管理程序安排虚拟化客户操作系统的所有方面的任务,且这样的虚拟化的需求可能太过昂贵而不能同时地访问安全规则以便检查恶意行为。[0152]图3是用于基于虚拟机监视器的保护电子设备免遭恶意软件的方法300的示例实施例。在步骤305,可以认证0/S下层安全代理、0/S内部安全代理、保护服务器和虚拟机监视器的身份和安全。可以通过任何合适的方法完成这样的认证,包括通过定位和检验位于存储器中的每一个的映像,密码散列,或密钥。直到步骤305完成之前,可以停止其他步骤的操作。[0153]在步骤310,可以访问保护服务器以判断安全规则。这样的安全规则可以被用来在步骤315-380中做出判定。在步骤315,可以指示虚拟机监视器捕获对系统资源的访问。这样的访问可以源自在电子设备上运行的应用、驱动程序或操作系统。可以就要监视的电子设备的什么系统资源指示虚拟机监视器。也可以就要捕获的对所监视的系统资源的什么操作指示虚拟机监视器。例如,可以捕获对系统存储器的读、写或执行操作。在另一示例中,可以捕获对寄存器的加载或存储操作。在又一示例中,可以捕获对I/O设备的输入或输出动作。[0154]在步骤320,可以在诸如虚拟机控制结构之类的控制结构中设置对应于要捕获的这样的操作的标志。这样的已捕获操作可以产生VM退出,其中,在访问已标记资源时创建已触发事件。在步骤325,当系统存储器被分配给虚拟机监视器、0/S内部安全代理和0/S下层安全代理时,可以保护这样的存储器免遭未经授权的读和写操作。[0155]电子设备可以操作且通过在步骤330-340中捕获对系统资源的访问、在步骤345-355中扫描存储器以便发现恶意软件的存在以及在步骤360-365中扫描存储器以便发现已尝试存储器修改中的一种或多种来得到保护。捕获对系统资源的访问、扫描存储器以便发现恶意软件的存在以及扫描存储器以便发现已尝试存储器修改中的每一种可以并行实施。进一步,根据保护电子设备的操作的要求,可以重复这些中的每一种。[0156]在步骤330,可以捕获对诸如系统存储器、寄存器、或I/O设备之类的系统资源的访问。可以使用产生VM退出的VMCS标志来捕获访问。可以在低于在电子设备上运行的操作系统的级别实施这样的捕获。在步骤335,可以分析访问以便判断请求实体是否具有访问所请求的资源的权限。可以访问与已尝试访问相关联的上下文信息以便做出这样的判断。可以访问安全规则以便做出这样的判断。可以判断未经授权的访问是可疑的。可以在低于在电子设备上运行的操作系统的级别做出这样的应对和判定。如果访问是可疑的,那么,在步骤340,可以阻止对系统资源的可疑的已尝试访问。可以把这样的尝试报告给保护服务器。如果访问不是可疑的,那么,在步骤370可以允许访问。[0157]在步骤345,可以扫描电子设备的存储器页面以便发现恶意软件的存在。尽管扫描电子设备的存储器,但可以使用白名单来判断是否已知反映驻留在电子设备上的实体的存储器模式是安全的。如果遇到已知是安全的存储器模式,那么,在步骤370,可以允许存储器继续拥有对电子设备的访问权,且可以保持。尽管扫描电子设备的存储器,但可以使用黑名单来判断是否已知存储器模式包括恶意软件或与恶意软件相关联。可以通过访问安全规则来访问白名单和黑名单。在步骤350,如果找到了已知与恶意软件相关联的存储器模式,那么,在步骤375可以通过修复、移除或废止拒绝该存储器模式访问电子设备。[0158]在步骤355,可以扫描存储器以便判断是否已经或者正在尝试修改存储器。可以在低于电子设备中的操作系统的级别进行这样的扫描。这样的存储器可以包括内核存储器、系统数据结构或可以被恶意软件修改的电子设备的存储器的任何其他部分。例如,可以修改在电子设备上运行的活动线程的列表以便隐藏恶意进程的存在。如果检测到修改,那么,在步骤365可以判断这样的修改是否得到许可。这样的修改是否得到许可可以由安全规则定义。例如,可以保护反恶意软件进程的代码或数据页面免遭任何其他进程的修改或访问。如果存储器修改被视为经过授权,那么,在步骤370,可以允许修改。如果判断存储器修改未经授权且不被允许,那么,在步骤375,可以拒绝修改。[0159]在步骤370,如果允许访问或修改,那么,可以存储访问或修改以供稍后引用。对恶意软件的一些检测可以利用关于过往访问或修改的信息来判断这样的过往访问和目前所检测的访问一起是否包括对资源的恶意访问。[0160]在步骤375,如果拒绝修改、访问或其他操作,那么,在步骤380可以向保护服务器报告这样的事件。这样的报告可以包括关于任何关联的恶意软件或可疑行为的信息。[0161]根据保护电子设备的需要,可以连续地、周期性地或根据需求重复方法300的各步骤。[0162]图4是用于保护电子设备404免遭恶意软件的基于固件的和基于安全规则的系统400的示例实施例。系统400可以是系统100的示例实施例,其中,以固件实现系统100的某些元素。可以在低于电子设备404的操作系统的级别实施捕获系统400的操作。系统400可以包括被配置为捕获用于使用或访问电子设备404的资源的、诸如I/O命令之类的请求的一个或多个0/S下层安全代理。这样的0/S下层安全代理可以被配置为管理在设备之间或者与电子设备404的主处理器的输入和输出数据的交换。可以在电子设备404的诸如设备控制器之类的组件的固件中或在电子设备404自身的固件中实现这样的0/S下层安全代理。这样的固件可以驻留在非易失性存储器中。电子设备404的这样的资源可以包括图1的系统资源106或其各种可能的实施例,或者是被耦合到系统400中的设备或在其中实现的资源。系统400可以包括一个或多个0/S下层安全代理,0/S下层安全代理被配置为捕获对电子设备404的资源的访问的尝试使用、产生对应于尝试的已触发事件、查阅关于已触发事件的安全规则以及如果必要的话采取关于尝试的矫正动作。[0163]在一个实施例中,可以仅在电子设备404的组件的固件中实现系统400的0/S下层安全代理,如下面以及在图5的讨论中所描述的。在另一实施例中,可以在诸如主PC固件428之类的电子设备404自身的固件中实现系统400的0/S下层安全代理。在这样的实施例中,可以在电子设备404的主板上实现主PC固件428。在又一实施例中,也可以在0/S下层代理450中实现系统400的Ο/S下层安全代理。Ο/S下层代理450可以在低于电子设备404的诸如操作系统412之类的操作系统的级别以任何合适的方式实现以便提供对资源的访问的触发或应对这样的触发。例如,Ο/S下层代理450可以是图2的SVMM216或SVMM安全代理217的实施例。Ο/S下层代理450可以包括安全规则422。[0164]电子设备404可以包括用于实施来自电子设备404的输入和输出操作的一个或多个组件。电子设备404可以包括任何合适的数量的这样的组件和任何合适的类型的组件。这样的组件可以由设备实现,且它们自己的处理器、存储器、和软件嵌入到固件中。这样的组件的示例实施例可以是图5的I/O设备502。[0165]电子设备404可以包括,例如,显不器424和存储426。每一个这样的组件424、426可以包括固件430、432。固件430、432均可以实现图5的固件504。如上所述,每一个这样的组件424、426可以包括基于固件的安全代理,例如固件安全代理440、442。固件安全代理440,442均可以部分地或完全地实现图5的固件安全代理516。在一个实施例中,固件安全代理440、442中的每一个可以在它们各自的固件430、432中实现。在另一实施例中,固件安全代理440、442中的每一个可以在它们各自的组件424、426中的每一个中的固件430、432外实现。这样的设备固件安全代理440、442中的每一个可以通信上耦合到各自的一组安全规则434、436。每一这样的安全规则434、436可以实现图5的安全规则518。[0166]电子设备404可以包括固件。在一个实施例中,电子设备404可以包括主PC固件428。主PC固件428可以由基本输入/输出系统(“BIOS”)实现。在一个实施例中,主PC固件428可以被配置成计算机的BIOS。在这样的情况中,主PC固件428可以被配置为初始化计算机的处理器406的操作。主PC固件428可以被配置为允许主处理器406与诸如显示器424和存储426之类的I/O设备通信。在这样的实施例中,计算机也可以包含可编程I/O控制器,可编程I/O控制器可以由固件或BIOS编程,且与诸如424和存储426之类的I/O设备的固件通信。[0167]主PC固件428可以包括0/S下层安全代理。在一个实施例中,主PC固件428可以包括PC固件安全代理444。PC固件安全代理444可以被配置为截取对系统资源414的请求。为了完成这样的功能,PC固件安全代理444可以完全地或部分地实现图2的SVMM安全代理217或SVMM216、和/或图5的固件安全代理516的功能。PC固件安全代理444可以实现图2的SVMM安全代理217或SVMM216的功能以便完成对系统资源414的访问的0/S下层触发和应对、0/S下层代理和诸如0/S内部安全代理418之类的0/S内部安全代理的验证和确证和诸如安全规则420、422之类的安全规则的分发。PC固件安全代理444可以实现图5的固件安全代理516的功能以便完成固件中的0/S下层触发和应对、安全规则的更新并且评估被发送给电子设备404的各部分的IN和OUT命令。[0168]电子设备404可以包括安全规则438。安全规则438可以是图1的安全规则114的示例实施例。在一个实施例中,安全规则438可以驻留在主PC固件428中。在另一实施例中,安全规则438可以驻留在主PC固件428外,且PC固件安全代理444可以被耦合到安全规则438。[0169]系统400的安全代理可以被配置为一起工作以便防止恶意软件及其恶意操作。可以捕获对资源的尝试访问,且随后的事件被触发,以便在诸如显示器424或存储426之类的设备中或在主PC固件428中的固件安全代理中应对。这样的设备或固件中的固件安全代理可以被配置为应对已触发事件或把已触发事件传送到另一安全代理以供应对。由于有限的执行和更新能力,一些固件安全代理可以被限制为应对它们自己的已触发事件,且因而把这样的已触发事件传送给其他安全代理是有益的。固件安全代理可以向其传送事件的安全代理可以包括,例如,诸如Ο/S内部安全代理418之类的Ο/S内部安全代理、诸如Ο/S下层安全代理450之类的Ο/S下层安全代理或诸如PC固件安全代理444之类的另一固件安全代理。这些其他安全代理可以被配置为接收已触发事件、查阅安全规则、上下文信息或权限,并把要实现的所得到的动作发送回来。[0170]因此,尽管图4阐释用于基于固件的安全代理实施0/S下层触发和应对的示例数量的元素,但在各种实施例中可以使用更多或更少的元素。在使用更多或更少的元素时,每一元素和系统400的功能性可以据此改变。在一个实施例中,低于操作系统412的级别的系统400的安全代理可以限于一个或多个0/S内部安全代理418和固件安全代理440、442。在这样的示例中,固件安全代理440、442可以依赖于保护服务器402以便更新到安全规则434,4360固件安全代理440、442可以依赖于0/S内部安全代理418以便更新或应对已触发事件,但是0/S内部安全代理418的操作是较不安全的,除非0/S下层安全代理确证0/S内部安全代理。固件安全代理440、442可以基于在安装、生产或配置建立的固件安全规则434提供触发。这样的安全规则可以是相对静态的。在这样的情况中,借助于少量分析,固件安全代理440、442可以被配置为提供相对基本的事件触发。这样的固件安全代理440、442却是有用的,这是由于在电子设备404的操作系统下面完成这样的触发,因而较好检测一些恶意的或可疑的操作。[0171]在另一实施例中,系统400的安全代理可以包括PC固件安全代理444或0/S下层代理450中的任一种,但不是两者。在这样的情况中,PC固件安全代理444的功能性可以由0/S下层代理450实现,且反之亦然。PC固件代理444或0/S下层代理450中的任一种可以被耦合到保护服务器402并被配置为获得诸如安全规则420、422、438、434、436之类的信息,并与系统400中的其他安全代理共享这样的信息。出于通信、更新或存储成本的目的,这样的安全规则可以适应每一各自的安全代理。PC固件代理444或0/S下层代理450中的任一种可以被配置为从诸如固件安全代理440、442之类的其他安全代理接收已触发事件、应用安全规则和其他信息,并采取矫正动作,例如把所得到的事件发送给固件安全代理440、442,或者把信息发送给保护服务器402。PC固件代理444或0/S下层代理450中的任一种可以被配置为捕获对系统资源414的尝试访问。PC固件代理444或0/S下层代理450中的任一种可以被配置为与0/S内部安全代理418通信以判断已触发事件的上下文。如果多于一个的0/S内部安全代理418出现在系统400中,则每一0/S内部安全代理418可以被配置为执行捕获、确证或与0/S内部安全代理418相关联的其他任务的经指派部分。这样的部分可以由操作系统下层安全代理定义。例如,一个0/S内部安全代理418可以确证或调查MOV指令,同时另一0/S内部安全代理418可以确证或调查JMP指令。[0172]在又一实施例中,系统400的安全代理可以包括PC固件安全代理444和0/S下层代理450两者。然而,在这样的实施例中,PC固件安全代理444的功能性中的一些或全部可以由0/S下层代理450实现,且反之亦然。在PC固件安全代理444和0/S下层代理450之间的任务划分可以考虑多种因素。例如,诸如PC固件安全代理444之类的在固件内的安全代理的操作另一Ο/s下层代理450的操作更加安全。然而,更新安全规则和Ο/S下层代理450的软件可以比在PC固件安全代理444中更加简单和快捷。[0173]在再一个实施例中,一个或多个固件安全代理440、442可以驻留在独立于PC固件安全代理444或操作系统下层代理422的系统400上。在这样的示例中,固件安全代理440,442可以确证操作系统内部安全代理418的实例。[0174]固件安全代理440、442、444中的每一个可以被配置为驻留在固件逻辑内,足以能够监视和控制固件逻辑以便发现外部通信。固件安全代理440、442、444因而可以被配置为捕获特定信息和/或与特定的其他实体通信特定信息。固件安全代理440、442、444可以被配置为确定所接收到的操作请求以及要发送或接收的数据。此外,固件安全代理440、442、444可以被配置为控制要发送或接收的数据,且可以被配置为引起对数据的附加操作,例如加密、压缩、在数据中嵌入水印或解码数据中的水印。与固件安全代理440、442、444通信的系统400的其他安全代理可以被配置为在要由固件安全代理440、442、444捕获的数据中嵌入水印,或解码由固件安全代理440、442、444放置到数据中的水印。[0175]可以例如通过可编程的输入-输出中断或可编程的输入-输出寄存器来实施与固件安全代理440、442或PC固件安全代理444的通信。这样的中断或寄存器可以由固件安全代理440、442、444驻留在其中的固件或设备的生产商定义和提供。[0176]系统400的0/S下层安全代理中的一个或多个可以被配置为充当主安全代理以便协调电子设备404的基于固件的安全代理的反恶意软件活动。在一个实施例中,PC固件安全代理444可以被配置成主系统400的安全代理。在另一实施例中,0/S下层代理450可以被配置为充当主安全代理。安全代理可以被配置为应对来自固件安全代理440、442的已触发事件。主安全代理可以被配置为确证固件安全代理440、442诸如0/S内部安全代理418等的其他安全代理的操作以及。主安全代理可以被配置为向其他安全代理通知安全代理中的一个是否已经注意到可疑行为或已检测的恶意软件、系统400是否受到恶意软件攻击或者系统400的管理员是否已经改变影响安全的偏好或设置。主安全代理可以与系统400的其他安全代理共享关于攻击的信息。[0177]通过在低于系统400的操作系统的级别捕获对系统400的资源的访问和/或应对所得到的已触发事件,系统400可以提供针对恶意软件的增强安全。固件中的安全代理的操作可以减少恶意软件影响安全代理的操作的机会。在固件中或者在设备级别捕获操作可以减少恶意软件欺骗或钓鱼系统400的元素以便伪装其操作的能力。例如,无论恶意软件危害操作系统412的什么部分,不可以对设备自身隐瞒对组件424、426的请求。[0178]图5是用于保护电子设备免遭恶意软件的基于固件的解决方案的示例实施例的更详尽的视图。诸如I/o设备502之类的设备可以被配置为接收和捕获对使用或访问设备的资源的请求。在一个实施例中,I/O设备502可以被配置为处理这样的已捕获请求来判断该请求是否指示恶意软件的存在。在另一实施例中,I/O设备502可以被配置为把这样的已捕获请求作为已触发事件传送给I/O设备驻留其中的系统的另一部分。系统的这样的另一部分可以包括0/S下层安全代理。I/O设备502可以包括被耦合到存储器508的固件504和处理器506,其中,固件504可以包括驻留在存储器508以供由处理器506执行的指令。[0179]I/O设备502可以包括电子设备的用于控制对电子设备的资源的访问的任何合适的部分。在一个实施例中,I/o设备502可以实现电子设备的外围设备的一些或全部。I/O设备502可以例如由显示控制卡、计算机总线控制器、高速缓存设备、I/O控制器设备、盘控制器、存储器设备、网络控制器、主板、或键盘控制器实现。I/O设备502可以驻留在电子设备中。在一个实施例中,I/O设备502可以被耦合到物理组件。仅仅作为示例,这样的物理组件可以包括显示器、计算机总线、存储器、I/O控制器、盘、网卡或键盘。在另一实施例中,I/O设备502可以与所耦合的物理组件分离地驻留。例如,键盘控制器可以通过串行接口与键盘耦合。在这样的实施例中,I/O设备502可以驻留在电子设备中,同时这样的物理组件可以通信上耦合到电子设备但驻留在电子设备外。[0180]固件504可以被配置为控制I/O设备502的操作。固件504可以包括被配置为捕获对资源的请求的Ο/s下层安全代理516,在低于I/O设备502或I/O设备502驻留在其中的系统中的操作系统的级别下操作。0/S下层安全代理516可以被配置为应对从已捕获请求得到的事件以判断是否允许、拒绝或以另外方式应对请求,以便保护I/O设备502或I/O设备502驻留在其中的系统免遭恶意软件。在一个实施例中,固件504可以包括固件安全代理516。固件安全代理516可以合并图2的SVMM216或SVMM安全代理217的功能性中的一些或全部,但是在固件504中实现。在这样的情况中,SVMM216或SVMM安全代理217的诸如捕获对资源的访问和/或应对已捕获请求等的功能性可以由固件安全代理516实施。在一个实施例中,固件安全代理516可以被配置为驻留在固件504中。[0181]固件504可以包括I/O命令510、数据传送引擎12和编程逻辑514。I/O命令510可以包括用于向设备发送信息或从其接收信息的指令。这样的命令可以包括IN或OUT命令的变体。I/O命令510的执行可以操作为执行所期望的设备动作。由设备接收到的请求可以被转换成I/O命令。根据对资源的特定请求的捕获或触发可以通过根据关联的I/O命令510的捕获或触发来完成。数据传送引擎512可以被配置为应对把请求传输到设备和随后的响应。数据传送引擎512可以被耦合到处理器506和在I/O总线上的可编程I/O控制器,在I/O总线上交换I/O命令510和数据。可编程逻辑514可以被配置为提供指令以供固件504操作I/O命令510和数据传送引擎512。编程逻辑514可以被加载到诸如处理器506之类的处理器中。[0182]固件安全代理516可以被配置为修改编程逻辑514的操作以便检测已尝试恶意操作。固件安全代理516也可以被配置为监视把请求传输到设备以便通过数据传送引擎512截取对I/O设备502的请求并判断这样的请求是否恶意的。固件安全代理516可以包括控制结构,在控制结构中,可以把标志设置为对应于要捕获的操作。在一个实施例中,可以在结构中根据要捕获的命令的存储器地址设置标志。固件安全代理516可以被配置为设置用于截取对I/O设备502的请求的标志。这样的标志可以对应于,例如,I/O命令510的特定命令或这样的特定命令与特定参数的组合。这样的标志可以被配置为截取特定的请求或请求类别。一旦触发对应于已捕获的I/O命令510的已尝试操作的特定标志,固件安全代理516可以被配置为处理事件并采取所得到的动作,通过数据传送引擎512把所得到的信息传送给另一安全代理,或通过数据传送引擎512传送已触发事件。[0183]I/O设备502也可以包括安全规则518。安全规则518可以实现图2的安全规则222中的一些或全部。安全规则518可以在存储器508中实现。在一个实施例中,安全规则518可以驻留在固件504外。在另一实施例中,安全规则518可以驻留在固件504中。固件安全代理516可以通信上耦合到安全规则518并被配置为访问安全规则518,以判断在固件504中设置什么标志以便捕获对I/O设备502做出以便访问其资源的特定请求或请求类另O。例如,固件安全代理516可以被配置为访问安全规则518以便判断已触发事件是恶意的还是非恶意的。在一个实施例中,安全规则518可以包含供固件安全代理516处理已触发事件的指令。固件安全代理可以被配置为使用这样的指令来判断是否允许或拒绝请求,或者采取另一矫正动作。在另一实施例中,固件安全代理516可以被配置为使用这样的指令来判断是否向另一安全代理报告该请求。这样的矫正动作也可以包括等待来自其他安全代理的可以包含关于是否允许或拒绝请求的指令的响应。[0184]在一些实施例中,固件安全代理516可以驻留在固件504中,这可以使得相对难以更新固件安全代理516。另外,恶意软件攻击的不断改变的本质要求反恶意软件解决方案是灵活的。因此,固件安全代理516可以使用用于接收信息的任何合适的机制,以便确定捕获对I/O设备的什么请求,以及采取什么随后动作。[0185]在一个这样的实施例中,这样的机制可以包括如上所述的访问安全规则518。固件安全代理516可以被配置为从其他安全代理或保护服务器接收新的和经更新的安全规则518。为了实现灵活性,固件安全代理516可以被配置为把安全规则518存储在与固件分离的存储器508中,例如如果把这样的规则存储在固件504中将使得难以更新安全规则518。[0186]在另一个这样的实施例中,固件安全代理516可以被配置为依据固件的更新或闪现(flash)来更新安全规则518。在这样的实施例中,更新要捕获的请求的灵活性可能受到限制。因此,安全规则518可以针对非常特定的受保护资源。例如,盘设备的安全规则518可以包括捕获对设备的引导扇区的所有写请求的指令。在一些情况中,在与其他安全代理的通信廉价的场合,安全规则518可以包括捕获各种各样的请求的指令,其中可以把处理大部分卸载给其他安全代理。[0187]在又一这样的实施例中,固件安全代理516可以被配置为从其他安全代理接收指令。在一种情况中,这样的指令可以采取固件504或固件安全代理516的函数调用的参数的形式。例如,另一安全代理可以调用固件安全代理516的被命名为“UpdateRule(trigger,action)(更新规则(触发,动作))”的函数,其中,在trigger(触发)中详述要捕获的请求,且在action中详述要采取的随后动作。固件安全代理516因而可以通过接收关于对安全规则的更新的指令来更新安全规则518。在另一情况中,另一安全代理可以把安全规则518的更新写到设备502的已保留存储器空间,该存储器空间随后可以被固件安全代理516访问。从其他安全代理接收到的指令也可以指示固件安全代理516使用一组特定的安全规则518。例如,在时序要求严格(time-critical)的操作期间,固件安全代理516可以被这样的指令配置为使用最小的一组核心安全规则518。如果I/O设备502是盘设备,这样的最小的一组核心规则可以包括捕获对盘的引导扇区的访问的指令。在另一示例中,如果目前不实施时序要求严格的操作,则固件安全代理516可以被这样的指令配置为采用来自安全规则518的规则以便捕获广泛得多的访问尝试并把相应的事件发送给其他安全代理以供应对。[0188]固件安全代理516可以被配置为控制I/O命令510、扫描接收到的或要发送的内容或数据并对命令和内容应用访问控制。固件安全代理516可以被实现为现有的设备固件的扩展。[0189]固件安全代理516的实现可以取决于设备502的类型。例如,显示设备和盘设备可以因不同种类的内容或已尝试的命令而触发。各种设备中的固件安全代理516的创建可以适应与设备的特定种类的接口。例如,如果设备502被配置为通过串行高级技术附件(“SATA”)总线通信,则类似于通过SATA总线通信的其他设备,它可以配备有固件安全代理516。固件安全代理516可以被定制为支持设备502的体系结构、支持设备502的外部总线I/O或设备502的其他接口。[0190]固件安全代理516可以被配置为通过截取特定的读命令和写命令来捕获对设备502中的资源的尝试访问,这可构成对资源的请求的一部分。可以截取、评估和基于诸如安全规则518中的一个之类的规则阻止或允许读或写命令。用于固件安全代理516的安全规则518可以包括用于检测恶意软件的迹象的任何合适的规则。这样的读命令和写命令可以例如是对驱动程序的函数调用或中断的结果。[0191]例如,安全规则518可以包括供固件安全代理516扫描要被写到设备的数据的规贝U。可以评估数据的内容或数据的散列以便判断该数据是否对应于恶意软件数据或代码。这样的评估可以通过把内容和白名单或黑名单中的数据或签名来进行。接连的写入可能必须被一起评估以适当地评估要写入的数据或内容的完整范围,以便正确地把内容或数据标识为恶意软件或不是恶意软件。例如,可以在对设备502的重复接连调用中写入文件。要写入的数据可以排队,以使得可以评估对写命令的内容的适当扫描。[0192]在另一示例中,安全规则518可以包括供固件安全代理516扫描设备中的现有数据的规则。设备502可以包含从系统外例如在网卡中接收到的内容。当驻留在设备502中时,可以扫描所接收的信息的内容以便发现恶意软件的迹象。固件安全代理516可以通过把内容与白名单或黑名单中的数据或签名进行比较来做出评估。[0193]在又一示例中,安全规则518可以包括供固件安全代理516基于时间或权限评估命令的规则。在不应实施合法活动的时间期间,可以保护诸如网络设备或盘之类的设备502免遭读取或写入。例如,某些恶意软件可以在引导期间攻击盘驱动程序。因而,固件安全代理516可以在引导盘的时间期间防止对设备的任何写入。类似地,可以由设备502驻留在其中的系统的管理员设置关于何时或如何使用设备或系统的权限。例如,设备502驻留在其中的系统的管理员可以把设备设置为在营业时间之外不可用。系统上的网络设备没有合法目的在营业时间之外传输活动,且因而基于安全规则518中的权限,对网络设备的读取和写入可受到固件安全代理516阻止。这样的使用可以阻止,例如,设备的实际用户的蓄意活动或恶意软件使用网络设备来实施拒绝服务攻击的蓄意活动。[0194]在再一个示例中,安全规则518可以包括供固件安全代理516基于与I/O命令一起使用的参数评估命令的规则。这样的参数可以包括,例如,写命令将写入的地址。安全规贝IJ518可以包括指示盘设备的特定部分是只读的规则。因而,固件安全代理516可以检查与把数据写到盘的OUT命令相关联的参数以判断数据将被写入的地址,并且如果所尝试的写是针对受到安全规则518中的规则的写保护的盘的部分则阻止该命令。固件安全代理516可以与诸如发起调用的内容或实体之类的其他基础结合考虑这样的参数。例如,扫描要写入的数据的内容是昂贵的,且因此安全规则518可以把固件安全代理516配置为仅当数据被写入到某些地址范围时扫描要写入的数据。在另一示例中,诸如安全规则518之类的安全规则可以仅允许某些调用实体向盘设备的某些部分写入或从其读取。因而,固件安全代理516可以捕获所尝试的写或读且在可以安全地判断调用实体的身份之前不允许该尝试。可以通过评估被用来调用设备函数的参数中的信息做出这样的判断,这是由于一些这样的函数可以标识调用的设备驱动程序或应用。在这样的情况中,固件安全代理516可以采取任何适当的步骤来判断调用的有效性。在一个实施例中,固件安全代理516可以查阅安全规则518中的白名单或黑名单以便判断调用实体是否被授权为做出这样的调用。在另一实施例中,固件安全代理516可以与包含设备502的系统中的其他安全代理通信以便判断调用应用或设备驱动程序是否有效。这样的其他安全代理已经确证调用应用或设备驱动程序的操作,或者可以与已经验证这样的操作的Ο/S内部安全代理通信。在又一示例中,对诸如设备502之类的设备的现有驱动程序调用可以不标识调用实体。因此,没有可用的参数。在这样的示例中,固件安全代理516可以被配置为传送已触发事件或以另外方式查阅系统中的其他安全代理,以判断产生已尝试访问的调用的上下文。这样的其他安全代理可以为调用提供合适的上下文,以判断是否经授权的实体做出该尝试。[0195]在进一步的示例中,安全规则518可以包括供固件安全代理516基于来自设备502驻留在其中的环境的信息来评估命令的规则。系统中的其他安全代理可能已经检测到难以移除的恶意软件感染,或者可能要求来自管理员的直接干预以便清除。系统中的其他安全代理可以具有观察到的可疑行为,且还没有完全分析行为的本质。在这样的情况中,固件安全代理516可以从其他安全代理接收这样的现有威胁的通知。取决于感染的类型,安全规则518因而可以规定固件安全代理516的预防性动作。例如,键盘设备中的固件安全代理516可以接收到已经检测到已知用于键盘记录的特定类型的恶意软件的迹象但还不能移除的通知。安全规则518因而可以规定固件安全代理516不允许来自键盘设备的所有读和写以便防止利用键盘传输的信息的危害。[0196]固件安全代理516可以以不同的方式保护不同类型的设备的I/O。例如,取决于恶意软件威胁,显示设备的固件安全代理516可以关闭显示器的各部分。固件安全代理516可以阻止引起在屏幕上产生水印的某些图案的显示。固件安全代理516可以捕获特定图案的尝试显示。固件安全代理516可以截取从设备尝试读取信息以便防止抓屏。[0197]在另一示例中,与系统的剩余部分通信,用于键盘设备的固件安全代理516可以可选地编码或解码其结果。这样的加密可以由固件安全代理516在出现了诸如键盘记录器之类的恶意软件威胁的通知时设定。[0198]在又一示例中,用于网络设备的固件安全代理516可以基于源因特网协议(“IP”)地址、源端口号、要发送或接收的数据、目的地IP地址或目的地端口号来捕获。一旦捕获到使用网络设备的这样的尝试,固件安全代理516可以扫描要发送或接收的分组的数据净荷以便发现恶意软件的迹象。在一个实施例中,这样的数据净荷可以被发送给另一安全代理或保护服务器,其中,可以扫描内容以便发现恶意软件的迹象。数据净荷的内容可以经过加密,以使得分组嗅探器不能成功地截取内容。可以捕获到由于和不安全的网络目的地的通信相关联的安全风险引起的对网络设备的尝试操作,其中,与恶意目的地的网络通信可以危害设备502驻留在其中的系统的安全。由于诸如银行业务网站之类的特定数据集的敏感本质,可以捕获已尝试的操作。在这样的情况中,当从这样的网站接收数据时,可以由固件安全代理516在传送到另一安全代理或调用实体之前加密数据。这样的加密可以防止分组嗅探器或设备502的系统中的过滤器成功地截取信息。[0199]要截取的特定的I/O命令510可以取决于特定的设备和该设备的操作。因而,设备502的生产商可以决定如何配置用于特定设备502的固件安全代理516的操作。设备502的生产商可以决定向其他安全代理公开多少设备502的功能性。例如,设备502可以被配置为在把已触发事件交接给其他安全代理之前要求确证这样的安全代理。[0200]在操作中,一个或多个0/S下层安全代理可以是在系统400的固件或系统400的组件的固件中运行。固件安全代理440可以在显示器424中操作,固件安全代理442可以在存储426中操作,且PC固件安全代理444可以在主PC固件408中操作。0/S下层代理450和0/S内部代理412可以在系统400中操作。每一安全代理可以与系统400中的一个或多个其他安全代理通信。每一这样的安全代理可以在接受通信之前确证另一安全代理的实例。在确证安全代理之后,保护服务器402可以与安全代理中的一个或多个通信。[0201]PC固件安全代理444或0/S下层代理可以被指派为主安全代理。主安全代理可以与保护服务器402通信以判断安全规则。主安全代理可以把安全规则本地存储到主安全代理。主安全代理可以把安全规则分发给每一安全代理,其中,可以把安全规则本地存储到安全代理。可以为设备的类型、构造或模型定制安全规则,以便减少一大组安全规则的代价。[0202]在接收诸如规则434之类的安全规则时,诸如显示器424之类的设备可以在设备固件430内的控制结构中设置对应于要捕获的设备的操作的标志。类似的任务可以由存储426执行。[0203]应用410或驱动程序411可以试图访问诸如显示器424或存储426之类的设备。应用或驱动程序411可以通过调用操作系统412的内核来做出这样的尝试,操作系统412的内核又可以调用操作系统设备驱动程序,操作系统设备驱动程序又可以向组件424、426发送请求。[0204]请求可以到达诸如存储426之类的设备。在设备上运行的固件安全代理442可以通过监视具有控制结构的存储426的数据传送引擎412过滤这样的请求。请求可以采取对存储426可用的I/O命令510的形式。如果请求匹配已经由固件安全代理442设置的任何标志,则可以捕获该请求,且可以触发所得到的事件。固件安全代理442可以查阅安全规则436以判断如何应对已触发事件。[0205]在一个实施例中,已触发事件可以由固件安全代理442应对,且基于诸如关联的数据、命令、上下文信息、时间或环境信息之类的可用信息,可以采取矫正动作。这样的矫正动作可以包括允许或拒绝请求、移除恶意代码或数据或加密要传输的数据。其他矫正动作可以包括向保护服务器402发送关于已捕获事件的要传送的信息。固件安全代理442可以告知其他安全代理关于已捕获事件的状态,以使得其他这样的代理也可以在查询它们各自的安全规则之后采取矫正动作。例如,如果固件安全代理442检测到未知来源的恶意软件攻击,则固件安全代理440可以封锁对显示器424的附加访问。[0206]在另一实施例中,已触发事件可以被传递给诸如0/S内部安全代理418、PC固件安全代理444或0/S下层代理450之类的另一安全代理以供应对。接收安全代理,例如PC固件安全代理444,可以通过查询安全规则438来应对已触发事件。基于诸如数据、命令、上下文信息、时间或环境信息之类的可用信息,PC固件安全代理444可以允许或拒绝由已触发事件表示的请求。PC固件安全代理444可以与0/S内部安全代理418通信以判断关于对资源的尝试访问的上下文信息。PC固件安全代理444可以与保护服务器402通信以便得到关于如何应对已触发事件的附加信息。PC固件安全代理444可以把用于所得到的动作的指令发送回到来源固件安全代理442。PC固件安全代理444可以把关于已触发事件信息发送给保护服务器402以便分析或记录。可以在未知已触发事件的恶意本质时实施这样的分析或记录。PC固件安全代理444可以通知系统400的安全代理已经检测到特定种类的恶意软件、已经检测到一种可疑活动或者系统400受到恶意软件攻击。[0207]在从PC固件安全代理444接收到信息时,固件安全代理440可以采取矫正动作。这样的动作可以包括允许或拒绝已尝试访问、加密要传输的数据或移除恶意代码或数据。[0208]图6是用于保护电子设备免遭恶意软件的基于固件的可配置保护的方法600的示例实施例。在步骤605,可以认证0/S下层安全代理、0/S内部安全代理、保护服务器和固件安全代理的身份和安全。可以通过通过任何合适的方法来完成这样的认证,包括通过定位和检验位于存储器中的每一个的映像、密码散列或密钥。直到步骤605完成,可以停止其他步骤的操作。[0209]在步骤610,可以访问保护服务器以判断安全规则。这样的安全规则可以被用来在下列的步骤中做出判定。在步骤615,可以指示固件安全代理捕获对系统资源的访问。这样的访问可以源自在电子设备上运行的应用、驱动程序或操作系统。可以指示固件安全代理要监视电子设备的什么系统资源。也可以指示固件安全代理要捕获所监视的系统资源上的什么操作。例如,可以标识要捕获对固件安全代理在其上运行的设备的读命令和写命令。在步骤620,可以在控制结构中设置对应于要捕获的这样的操作的标志。这样的已捕获操作可以产生已触发事件。[0210]电子设备在步骤630-675可以操作并通过一次或多次捕获对系统资源的访问受到保护,或在步骤680-685扫描数据以便发现恶意软件的存在。每一次捕获对系统资源的访问和扫描数据以便发现恶意软件的存在可以被并行实施。进一步,根据保护电子设备的操作的需要,这些中的每一个都可以重复。[0211]在步骤630,可以捕获对诸如系统存储器、寄存器或I/O设备之类的系统资源的访问。可以在低于在电子设备上运行的操作系统的级别实施这样的捕获。可以在固件内实施这样的捕获。在步骤632,可以产生与已捕获的尝试相关联的所得到的已触发事件以及任何关联信息。在步骤635,可以判断已触发事件目前是否应当被应对或者被传送给另一安全代理以供应对。可以通过访问一个或多个安全规则来做出这样的判断。如果已触发事件目前应当被应对,那么,在步骤640可以访问安全规则以基于已捕获事件和诸如关联数据、命令、上下文信息、时间或环境信息之类的其他信息判断采取什么动作。例如,可以扫描要写或读的数据以便发现敏感内容或恶意内容;可以标识调用实体以便查看实体是否具有权限;可以检查被用来调用命令的参数;或者可以引用来自其他安全代理的关于系统中的恶意软件的警报。[0212]在步骤642,可以判断已尝试访问是可疑的还是不可疑的。如果访问安全规则和与已尝试访问相关联的信息的组合产生已尝试访问是不可疑的判断,那么,在步骤645可以允许尝试。如果判断这样的尝试是可疑的,那么,在步骤647可以采取矫正动作。这样的矫正动作可以包括从数据移除恶意内容、告知保护服务器或其他安全代理关于恶意尝试的存在、不允许已尝试访问或加密要传输的数据。如果尝试是不可疑的,那么,在步骤650可以允许已触发事件。[0213]在步骤655,如果判断另一安全代理要应对已触发事件,则把已触发事件传送给另一安全代理以供应对。在步骤670,可以接收到来自安全代理的指示应采取适当动作的响应。在步骤675,可以采取这样的动作,例如矫正动作或允许已触发事件的操作。[0214]在步骤680,可以扫描设备存储器以便发现恶意软件的存在。这样的存储器可以包含从诸如另一网卡或先前执行的文件读取的结果之类的另一实体到达的内容。如果已知存储器的内容是是恶意的、可疑的或未知的,那么,在步骤685,可以移除存储器的内容。[0215]在步骤690,如果拒绝了已尝试访问,或如果找到了可疑的内容,那么,可以把这样的事件报告给另一安全代理或保护服务器。这样的报告可以包括关于任何关联的恶意软件或可疑行为的信息。[0216]根据保护电子设备的需要,可以连续地、周期性地或根据需求重复方法600的各步骤。[0217]图7是用于保护电子设备204免遭恶意软件的基于微代码的系统700的示例实施例。系统700可以是系统100的示例实施例,以微代码实现系统100的某些元素。可以在电子设备701的操作系统下面实施系统700的捕获操作。系统700可以包括被配置为捕获对电子设备204的资源的访问的已尝试使用、产生对应于尝试的已触发事件、查阅关于已触发事件的安全规则并且如果必要的话采取关于尝试的矫正动作的一个或多个0/S下层安全代理。这样的0/S下层安全代理可以被配置为截取从电子设备701的资源产生的信息、产生对应于该产生的已触发事件、查阅关于已触发事件的安全规则并且如果必要的话采取关于尝试的矫正动作。可以在系统700的处理器中完全地或部分地实现这样的0/S下层安全代理中的一个或多个。可以在这样的处理器的微代码(“μC”)中完全地或部分地实现0/S下层安全代理。可以受到系统700保护的电子设备701的系统资源724可以包括,例如,类似于图2的系统资源224的资源、物理存储器714、处理器标志716、异常718、寄存器720或中断722。[0218]系统700可以包括基于微代码的0/S下层安全代理,例如微代码安全代理708。微代码安全代理708可以驻留在诸如处理器704之类的处理器的微代码708内。在一个实施例中,微代码安全代理708可以被配置为捕获由诸如应用710、驱动程序711或操作系统713之类的系统700的各部分做出的对系统资源724的尝试访问。微代码安全代理708可以被配置为基于这样的对系统资源724的尝试访问创建已触发事件。例如,操作系统713可以通过尝试执行物理存储器714中的地址中的代码片段来尝试起动程序。在另一示例中,操作系统713可以尝试读或写物理存储器714中的地址。尽管示出了物理存储器714,但微代码安全代理可以被配置为捕获对访问虚拟存储器的尝试。在另一实施例中,微代码安全代理708可以被配置为捕获来自处理器702的诸如微代码模块710之类的其他部分的尝试传输信息。微代码模块710可以包括被配置为实施处理器702的操作以便执行指令的处理器702的其他部分。这样的尝试传输信息可以包括来自系统资源724的操作的结果。例如,在代码处理期间,除以零的操作可以由微代码模块710截取且可以尝试产生和传输异常718。[0219]微代码706可以包括硬件级别的指令用于执行从诸如操作系统713之类的系统700的元素接收到的更高级别的指令。微代码706可以把这样的更高级别的指令转换成电路级别的指令以便由处理器702执行。微代码706可专用于电子电路或由处理器702实现的处理器的类型。在创建处理器702时,微代码706可以配置有微代码706的特定内容。更新或重新编程处理器702上的微代码706的能力可能受到限制。微代码706可以驻留在内部处理器存储器704中。内部处理器存储器704可以是与诸如存储器703之类的系统700的系统存储器分离的高速存储器。在一个实施例中,内部处理器存储器704可以是只读存储器。在另一实施例中,微代码706可以驻留在内部处理器存储器704中包含的可编程逻辑阵列中。在又一实施例中,内部处理器存储器704可以包括或被实现为存储器存储或控制存储。在这样的实施例中,内部处理器存储器704可以部分或完全由静态随机存取存储器或闪速存储器实现。在这样的实施例中,微代码706可以被配置为作为处理器702的初始化的一部分从诸如存储器703之类的某些其他存储介质加载到存储器存储,且可以被配置为通过写到存储器存储的数据被更新、被重新安装或接收诸如安全规则或机器指令之类的新信息。[0220]微代码安全代理708可以被配置为访问安全规则707以判断要捕获什么操作、命令、通信或其他动作。安全规则707可以驻留在微代码706,或处理器702或系统700的另一合适的部分内。安全规则707可以由来自诸如做出对微代码安全代理708的调用并通过参数传送信息的其他安全代理之类的在处理器702外的实体的函数调用实现。微代码安全代理708可以通信上耦合到安全规则707。在一个示例中,安全规则707可以具有这样的逻辑:[0221]-如果地址(X)由虚拟存储器范围(X1—>X2)或物理存储器范围(Y1—>Y2)中的代码执行,那么向Ο/s下层代理产生已触发事件以供应对;[0222]-如果地址(X)由物理存储器范围(Ζ1-->Ζ2)中的代码执行,那么,跳过指令;[0223]-如果Α、Β和C;那么,存储器范围(Υ1—>Υ2)可以访问存储器范围(X1—>X2);以及[0224]-仅来自存储器范围(Y1->Y2)和(Τ1-Χ2)的代码可以写到(Ζ1—>Ζ2)。[0225]微代码706可以包括理解已经接收到的指令的上下文的状态机。执行某些安全规则707(例如在相互的上下文内评估接连操作的安全规则)需要这样的信息。这样的信息可以随已触发事件一起传送。[0226]也可以在0/S下层代理712中实现系统700的0/S下层安全代理中的一个或多个。Ο/s下层代理712可以以任何合适的方式实现以便在低于诸如操作系统713之类的电子设备701的操作系统的级别提供对资源的访问的触发或这样的触发的应对。0/S下层代理712可以实现图2的SVMM216或SVMM安全代理217;图4的固件安全代理440、442或PC固件安全代理444;或图5的固件安全代理516的功能性中的一些或全部。0/S下层代理712可以通信上耦合到安全规则723。[0227]在一个实施例中,系统700的0/S下层安全代理中的一个或多个,例如0/S下层代理712,可以被配置为应对由诸如微代码安全代理708之类的基于微代码的安全代理产生的已触发事件。0/S下层代理712可以被配置为也以与图1-2和4-5中的0/S下层代理相似的方式捕获对资源的访问或应对已触发事件。0/S下层代理712和微代码安全代理708可以通信上耦合。微代码安全代理708可以被配置为把已触发事件发送给0/S下层代理712。0/S下层代理712可以通信上耦合到诸如0/S内部安全代理719之类的其他安全代理,且可以通信上耦合到保护服务器202。0/S下层代理712可以被配置为从诸如0/S内部安全代理719之类的其他安全代理接收上下文信息。这样的信息可以提供关于产生对系统资源724的尝试访问的实体的信息。如果多于一个的Ο/S内部安全代理719出现在系统700中,则每一Ο/S内部安全代理719可以被配置为执行捕获、确证或与Ο/S内部安全代理719相关联的其他任务的已指派部分。这样的部分可以由操作系统下层安全代理定义。例如,一个Ο/S内部安全代理719可以确证或调查MOV指令,同时另一0/S内部安全代理719可以确证或调查JMP指令。[0228]0/S下层代理712也可以被配置为从保护服务器202接收安全规则或准实时信息。此外,0/S下层代理712可以被配置为查阅诸如安全规则723之类的安全规则、任何从诸如0/S内部安全代理719之类的其他安全代理或保护服务器202接收的上下文信息,以便判断如何应对从微代码安全代理708接收的已触发事件。[0229]在特定的实施例中,0/S下层代理712可以包含理解系统700中遇到的操作的上下文的行为状态机。然后,Ο/s下层代理712可以被配置为基于上下文判断要由微代码安全代理708执行的适当的动作。这样的动作可以包括在安全规则的要求的推动下的矫正动作、允许操作、拒绝操作或采取其他步骤。微代码安全代理708可以被配置为采取从0/S下层代理712接收的这样的动作。[0230]0/S下层代理712可以是也被配置为确定由诸如0/S内部安全代理719之类的另一安全代理执行的适当的动作。例如,如果来自微代码安全代理708的已触发事件指示特定的种类的恶意软件威胁,或对电子设备701的内核或用户模式的特定部分的威胁,则0/S下层代理712可以被配置为指示0/S内部安全代理719采取矫正动作。因而,0/S下层代理712可以控制0/S内部安全代理719。[0231]0/S下层代理712可以被配置为确证微代码安全代理708的实例,且反之亦然。0/S下层代理712可以被配置为与微代码安全代理708通信以便共享或设置要在安全规则707中实现的诸如来自安全规则723的那些之类的安全规则,关于系统700、管理员或环境设置和偏好的状态信息,或供微代码安全代理708捕获操作、产生触发以及应对这样的触发或把它们发送给其他安全代理的其他合适的信息。[0232]0/S下层代理712可以被配置为通过任何合适的机制把这样的信息传输给微代码安全代理708。0/S下层代理712可以调用处理器702、微代码706或微代码安全代理708的函数,并把信息作为参数传送给函数。这样的函数可以被专门创建为把这样的改变传送给微代码安全代理708。例如,为了禁止来自另一物理存储器范围“B”的存储器的任何实体操作对物理存储器范围“A”的访问,可以使用诸如“Bar_Memory(A,B)(禁止_存储器(A,B))”之类的函数。作为这一函数被调用的结果,微代码安全代理708可以被配置为设置在微代码706内的参数。调用这样的微代码指令可以享有特权,以使得微代码安全代理708可以被配置为在代表0/S下层代理712调用这样的微代码指令之前确证0/S下层代理712。在另一示例中,0/S下层代理712或微代码安全代理708可以通过把数据写到存储器存储、控制存储或处理器702或微代码706的其他可写入部分来传输这样的信息。[0233]处理器702可能具有有限资源供微代码安全代理708完全地实现所有必要的捕获和应对以便保护系统700免遭恶意软件。在一个实施例中,微代码安全代理708可以被配置为仅实现要由处理器702实施的动作的捕获,且可以把与这样的捕获相关联的触发卸载给系统700的其他安全代理或组件以供随后应对。微代码安全代理708可以采取随后的动作,例如允许或不允许请求或通信,或可以采取其他动作,例如报告信息。在另一实施例中,微代码安全代理708可以被配置为实现已触发事件的少部分的应对。用于这样的应对的合适的已触发事件可以包括不要求显著的上下文信息的那些。例如微代码安全代理708可以通过安全规则707接收特定的范围的存储器地址免遭所有读和写的信息,除非Ο/S下层代理712的实例已经得到确证。可以实现这样的安全规则,因为内容是非常敏感的,且没有0/S下层代理712的操作帮助,就不能识别访问存储器内容的实体的身份。因而,在确证0/S下层代理的实例和操作之后,微代码安全代理708可以设置指示这样的确证的位。如果对存储器的尝试访问被触发,且仍然未设置该位,那么,微代码安全代理708可以被配置为不允许该存储器范围的内容的读、写或执行。如果已经设置该位,那么,微代码安全代理708可以被配置为随后捕获对存储器范围的尝试访问,产生要发送给0/S下层代理712的已触发事件,0/S下层代理712将根据上下文信息和其他设置评估是否允许该调用实体访问存储器范围。然后,0/S下层代理712可以把也许指示是允许还是拒绝访问的所得到的动作发送回到微代码安全代理708。[0234]已触发事件可以包括可以用来标识已尝试动作的源、方法或目的地的任何合适的信息。已触发事件可以被微代码安全代理708或0/S下层安全代理712用来应用安全规贝U。已触发事件可以由微代码安全代理708产生。例如,已触发事件可以精确地详述访问什么资源、调用什么指令、使用什么指令操作数、尝试或指令来自什么存储器地址(即源存储器)、要把操作的结果存储到什么存储器中(即目标存储器)或什么存储器将受到影响,或引起已尝试动作的源、方法或目的地的标识的任何其他信息。微代码安全代理708也可以被配置为包括关于处理器702的信息,例如活动、睡眠、空闲、停机和重启的处理器状态;处理器间通信;以及功率消耗。[0235]诸如0/S下层代理712之类的另一安全代理可以被配置为在已触发事件中把这样的信息用来在应用安全规则722时判断事件的范围。0/S下层代理712可以具有对附加线索的访问权,这些附加线索例如关于在操作系统713中操作的实体的信息、保护服务器202中的新信息、其他安全代理检测到的恶意软件或其他威胁、管理员设置等等。例如,假定已捕获请求起源于物理存储器中的特定地址,则0/S下层代理712可以确定与该特定地址相关联的线程、进程或应用。然后,0/S下层代理712可以被配置为判断这样的实体是否经过授权来采取所考虑的动作。0/S下层代理712可以被配置为确定实体的身份。0/S下层代理712可以被配置为把实体分类为已知是安全的(例如,通过查询白名单)、已知是恶意的(例如,通过观察行为或查询已知的恶意软件的黑名单)或未知。0/S下层代理712可以被配置为把关于未知实体和恶意实体的信息报告给保护服务器202。[0236]出于捕获目的,微代码安全代理708可以拥有对某些处理器702资源和其他安全代理不可用的其他系统资源724的访问权。在一个实施例中,在微代码706内微代码安全代理708的实现可以避免通过把这样的资源的公开限制为在处理器外的调用实体来创建的限制。例如,虚拟机监视器可以被限制为捕获对已经由处理器702出于虚拟化目的而公开的资源的操作。把捕获对存储器所尝试的读、写或执行的能力作为进一步的示例。基于虚拟机监视器安全代理可以仅拥有对可用于虚拟化的存储器的访问权,并且,因而,可以仅可以跟踪对存储器页面的已尝试的读、写或执行尝试。相反,微代码安全代理708可以截取和应对对特定的物理存储器地址的读、写或执行请求,并基于安全规则707评估该请求。在提供系统700中的安全解决方案时,较小的粒度可以提供较大的灵活性。对在带有特定的物理存储器地址的上下文中使用什么指令的指令级别的知晓告知系统700,哪一实体调用什么资源,且不仅仅是访问了存储器页面。这灵活性可以是非常有价值的。例如,微代码安全代理708可以监视两个邻近的存储器地址以便发现读、写或执行尝试,但基于访问了两个存储器地址中的哪一个可以由安全规则707指示为采取完全地不同的动作。由于仅对对其作出尝试的存储器页面的观察,可能无法应用规则中的这样的区分。在另一示例中,管理程序用于监视和设置调试寄存器的其他方法不具有被用来访问调试寄存器的指令的上下文,系统700也是如此。另外,用于设置或观察这样的调试寄存器的一些其他实体不在低于操作系统的级别运行,这使得它们更可能是恶意软件。最终,用于设置或观察这样的调试寄存器一些其他实体并不针对安全,且不能够访问安全规则、评估访问和采取矫正动作。[0237]要由微代码安全代理708采取的矫正动作可以包括由安全规则707确定的或者从0/S下层代理712接收到的任何合适的动作。可以允许或拒绝的命令或指令。可以允许或抑制从微代码模块710产生的信息。可以修改任何这样的命令、指令或信息。[0238]微代码安全代理708可以被配置为捕获中断的产生。可以通过捕获例如“INT”指令的执行以及后面跟随读取与中断相关联的宿主信息已知的相关寄存器来捕获中断。例如,可以读取通用寄存器以便知晓中断的代码标识符以及被用来调用它的参数。例如,中断13可以是盘中断,且一组已知的寄存器可以把中断标识为读或写,以及数据的相关的扇区和位置。[0239]微代码安全代理708可以被配置为捕获被写到处理器702的输入和输出端口的值。微代码安全代理708可以被配置为捕获被写到处理器702的输入和输出设备的值。微代码安全代理708可以被配置为捕获用于做出这样的写或读的指令。[0240]微代码安全代理708也可以被配置为捕获处理器702的算术逻辑单元(“ALU”)的特定操作。可以捕获对应于受保护的散列算法的步骤的处理器上的系列操作以判断对函数的未经授权的访问。一些算术操作被恶意软件用来伪装自身或使得自身变形。某些算术指令、按位指令或MOV指令都是可以引起存储器页面或地址范围的内容改变的指令。通过捕获这样的指令,可以记录对代码部分或数据部分的改变。如果随后的分析显示代码部分或数据部分被修改为自修改恶意软件的一部分,那么,已捕获和已记录的指令可以被用来跟踪恶意软件所使用的加密算法。例如,可以判断,恶意软件使用带有特定密钥的XOR函数来使得自己变形。这样的信息可以产生用于检测自修改恶意软件的较好安全规则。进一步,通过保持存储器修改的跟踪,可以通过反转指令的应用来是实现修复逻辑。[0241]另外,微代码安全代理708可以被配置为实施数字权限管理操作。例如,微代码安全代理708可以被配置为指示要求运行特定的程序的授权的接收安全规则707。该特定程序可以位于存储器中的特定地址。这样的授权可以采取微代码安全代理708从0/S下层安全代理712接收例如授权码、密钥或字节的形式。这样的授权可以通过微代码安全代理708捕获对存储器的已尝试访问或程序指令的加载来完成,并把已触发事件发送给0/S下层安全代理712,0/S下层安全代理712又可以拥有对授权码、密钥或字节的访问权。0/S下层安全代理712可以把决定返回给微代码安全代理712。因而,基于授权码可以允许或不允许程序的操作。[0242]此外,微代码安全代理708可以被配置为基于存储器散列或校验和停止存储器中的特定代码的执行。这样的散列或校验和可以由安全规则707指示为是恶意的。当从存储器加载代码时,微代码安全代理708可以实施内容的散列或校验和,把它与已知的恶意代码的那些进行比较,且然后,拒绝对加载的尝试并加载修复函数以便消除违规代码。[0243]0/S下层代理712可以被配置为告知包括微代码安全代理706的系统700的其他安全代理,它已经判断系统700已经感染了恶意软件、遇到可疑行为或以另外方式被危害。在这样的情况中,微代码安全代理706可以被配置为禁用处理器702的各部分的操作。微代码安全代理706可以被配置为通过捕获和拒绝对特定的系统资源724的请求或来自微代码模块710的已产生通信来禁止这样的操作。可以禁用处理器702的各部分是因为它们是敏感的或者可能被恶意软件滥用。[0244]微代码安全代理706可以被配置为保护存储器地址或存储器地址的范围免遭尝试加载、读、写或执行尝试。这样的存储器可以包括敏感数据,或者可以是受限的、敏感的或受保护的函数的初始化点。在不存在访问软件是安全的或者是中性的验证的场合,微代码安全代理706可以防止访问这样的存储器。在这样的情况中,诸如0/S下层代理712之类的安全代理可以把特定的存储器地址标识为受保护,也许是因为这样的存储器地址可以对应于示例敏感信息或受保护例程。0/S下层代理712可以给微代码安全代理708发送诸如安全规则707之类的关于保护哪些地址的信息。微代码安全代理708可以捕获对这样的存储器地址的已尝试的加载、执行、读取或写,并把相应的已触发事件发送给0/S下层代理712。0/S下层代理712可以根据安全规则723、来自保护服务器202的信息、白名单或任何其他合适的信息源判断调用软件是安全的还是中性的。0/S下层代理712可以把要实现的动作返回给微代码安全代理708。微代码安全代理706可以被配置为保护虚拟存储器中的页面或范围和/或物理存储器中的地址或范围。微代码安全代理706可以被配置为把虚拟存储器页面、位置、或地址转换成物理存储器位置或地址。因而,给定要捕获的虚拟存储器位置,或从其中发起尝试的虚拟存储器位置,微代码安全代理706可以被配置为确定相应的物理存储器位置,或反之亦然。[0245]此外,微代码安全代理708可以被配置为保护对敏感代码的访问。在一个实施例中,微代码安全代理708可以被配置为通过监视对特定地址的访问以上面所描述的方式保护对敏感代码的访问,其中,当代码被存储在存储器中时,该地址表示代码的开始。在另一实施例中,微代码安全代理708可以被配置为监视“JMP”或相似的分支指令的执行,分支指令将把处理器304的操作移动到敏感数据或代码的中间。在这样的情况中,微代码安全代理708可以被配置为捕获“JMP”指令的执行以及与敏感内容范围的组合。微代码安全代理708可以被配置为分析“JMP”指令源于何处。微代码安全代理708可以被配置为产生对应于已捕获的“JMP”的尝试执行的已触发事件,该已触发事件可由0/S下层代理712来应对。0/S下层代理712可以被配置为考虑“JMP”指令源于何处,且“JMP”指令所起源的这样的存储器是否得到授权来访问所考虑的存储器。[0246]微代码安全代理708自身或其中的捕获功能性也可以被配置为由系统700的其他部分允许或禁用。如果捕获和应对事件是昂贵的,因而可能地损害系统性能,则这样的能力是有用的。这样的允许和禁用可以是基于特别敏感的程序或数据的使用、恶意软件威胁的检测、管理偏好或任何其他合适的原因。在一个实施例中,微代码安全代理706可以被配置为从0/S下层代理712接收MSAOn信号、VMXOn信号或其他指令以便开始安全处理和捕获。微代码安全代理708可以接收MSAOfT信号、“VMWriteVMXOff"信号或其他指令来停止安全处理和捕获。在开始或停止安全处理和捕获之前,微代码安全代理708可以确证做出请求的安全代理的身份和实例。[0247]此外,微代码安全代理708可以被配置为截取在处理器702和电子设备701的其他处理器之间的处理器间消息和命令。这样的处理器间命令可以由适当的微代码模块710接收或由访问特定的系统资源724的电子设备701的实体尝试。在一个实施例中,处理器间命令可以被访问处理器702的软件从操作系统713通过机器状态寄存器发送。恶意软件可能试图发送这样的消息,例如,以便关闭处理器或把它们置于睡眠模式。微代码安全代理708可以被配置为捕获对例如对应于处理器间命令的MSR寄存器的尝试写入。已捕获命令的已触发事件可以被发送到0/S下层代理712以供应对以便验证尝试的源。[0248]微代码安全代理708可以被配置为截取来自处理器的诸如软件中断722之类的消息的产生和通信。微代码安全代理708可以被配置为控制中断的执行以使得它们仅被经授权软件访问。例如,将不被允许没有已知身份(例如通过散列、驱动程序在存储器中的源等等确定)或具有恶意身份的驱动程序执行软件中断。微代码安全代理708可以捕获对中断的访问并把已触发事件传送给0/S下层代理712以供应对。[0249]在另一示例中,微代码安全代理708可以被配置为捕获处理器702产生异常718。异常可以包括例如除以零操作、页面故障和调试信号。对包含这些的存储器地址的读访问可以被微代码安全代理708捕获并由0/S下层代理712应对。[0250]微代码安全代理708可以被配置为保护处理器702的各种数据结构。例如,恶意软件可以攻击中断描述符表(“IDT”)。在一个实施例中,微代码安全代理708可以捕获对包含IDT自身的存储器位置的写访问尝试。在另一实施例中,微代码安全代理708可以保护诸如“LOADIDT(加载IDT)”和“ST0REIDT(存储IDT)”之类的用于改变IDT的函数被存储在其中的存储器位置。在另一示例中,微代码安全代理708可以被配置为保护EFLABS或类似的数据结构,或与中断应对程序相关联的标志。恶意软件可以通过由未经授权的源更改这样的资源来尝试破坏中断应对程序的操作。[0251]尽管微代码安全代理708可能专用于特定类型的处理器的特定实例,这是由于不同的电路布置可能需要不同的微代码指令,但一组安全规则707可能对使用给定的指令集的所有处理器来说是有效的。这是可能的,因为微代码安全代理708可以捕获某些指令,这些指令在实现相同指令集的不同处理器之间将不改变,但是电路可以改变且可关联资源取决于电路。例如,主台式中央处理单元(“CPU”)和嵌入式系统CPU两者都可以是来自相同生产商的ISA处理器,且因而安全规则707可以至少部分地在两种类型的处理器之间共享。相反,图形处理器上的图形处理单元或具有不同的指令集的车载嵌入式处理器不可以共享安全规则707。[0252]在操作中,微代码安全代理708可以在电子设备701的处理器702中运行,且0/S下层代理712可以在低于电子设备104的操作系统的级别运行。微代码安全代理708和0/S下层代理712可以相互认证。微代码安全代理708可以发起对系统资源724的访问的捕获以及由微代码模块710产生的输出或通信。因此可以根据来自0/S下层代理712的需求、根据安全规则707或在处理器702启动时发起微代码安全代理708。0/S下层代理712可以因为在系统700中的事件、管理员或系统设置或因为已触发的安全规则723而把安全允许请求发送给微代码安全代理708。例如,因为要执行特定的程序、要访问敏感数据或在系统700中的其他地方已检测到恶意软件威胁,可以产生这样的请求。Ο/S内部安全代理719和/或Ο/S系统下层代理712可以向微代码安全代理708认证自身。为了认证自身,0/S内部安全代理719和/或0/S系统下层代理可以调用由处理器702提供的特权指令来发起认证进程。该调用可以引起微代码安全代理708借助于签名或散列测量和认证例如0/S内部安全代理719和/或0/S系统下层代理712。[0253]微代码安全代理708可以从0/S下层代理712接收安全规则707。可以通过函数调用或通过写入到诸如存储器存储之类的共享存储器来更新微代码安全代理708。微代码安全代理708可以基于安全规则707把标志应用到被配置为捕获特定的指令、这样的指令的操作数、目标地址、源地址或其任何组合的微代码706的控制结构。微代码安全代理708可以捕获诸如操作系统713、应用710、或驱动程序711之类的在处理器上运行的实体对系统资源的尝试访问。微代码安全代理708的操作对这样的实体来说可以是透明的。微代码安全代理708可以捕获诸如来自其他微代码模块710的实例的输出之类的信息的产生。这样的微代码模块710可以包括被配置为给处理器702执行各种任务的微代码的其他部分。例如,微代码模块710中的一些可以检测何时产生处理器异常或中断、如何路由输入和输出数据或执行操作。微代码安全代理708的操作对这样的模块来说可以是透明的。微代码安全代理708可以使用状态机来执行基于所观察到的先前事件预测的某种捕获。[0254]在捕获对资源的访问或信息的产生时,微代码安全代理708可以创建与捕获相关联的已触发事件。这样的已触发事件可以包含关于捕获的信息,包括诸如所捕获的指令、所使用的参数、发起的存储器位置和目标存储器位置之类的上下文信息。[0255]在一个实施例中,微代码安全代理708可以应对已触发事件。在另一实施例中,微代码安全代理708可以把已触发事件传送给0/S下层代理712或另一安全代理以供应对。微代码安全代理708可以查阅安全规则707以便判断是否以及如何应对已触发事件,或把已触发事件传送给0/S下层代理712。微代码安全代理708可以等待来自0/S下层代理712的应答,或者如果安全规则707不要求后续措施则可以允许已捕获动作。微代码安全代理708可以基于安全规则707采取矫正动作,例如允许或拒绝指令,或替换要执行的值或参数。[0256]0/S下层代理712可以从微代码安全代理708接收已触发事件。0/S下层代理712可以查阅诸如安全规则723之类的安全规则以基于已触发事件判断要采取的适当动作。0/S下层代理712可以使用来自微代码安全代理708的已触发事件信息、来自0/S内部安全代理719的上下文信息、来自保护服务器202的信息、来自其他安全代理的判定、管理员设置、时间或其他信息来判断应采取的适当的动作。0/S下层代理712可以把要采取的动作发送给0/S内部安全代理719和/或微代码安全代理708。0/S下层代理712可以把关于已触发事件的信息和所得到的动作发送给保护服务器202。[0257]微代码安全代理708可以从诸如0/S下层代理712之类的另一安全代理接收要采取的动作。微代码安全代理708可以执行所接收的动作,例如允许或拒绝指令,或替换要执行的值或参数。[0258]图8是用于基于微代码的个性化的和可配置的保护电子设备免遭恶意软件的方法800的示例实施例。在步骤805,可以确证微代码安全代理的实例。在步骤810,可以确证另一安全代理的实例。这样的安全代理可以包括0/S下层安全代理。在步骤815,可以获得、发送或接收用于在处理器内的微代码级别捕获的一个或多个安全规则。可以通过例如函数调用或通过把参数写到共享存储器空间来传输这样的安全规则。在步骤820,可以发起在微代码级别的资源安全捕获。在一个实施例中,这样的发起可以源自接收到开始安全捕获的信号。在这样的实施例中,可以接收到信号,这是因为已经检测到对系统的恶意攻击,或因为敏感数据可能出现在系统中。在另一实施例中,这样的发起可以起因于咨询安全规贝U。在又一实施例中,这样的发起可以起因于处理器的启动。[0259]在步骤825,可以在微代码中设置对应于要捕获的操作的标志。这样的标志可以对应于特定的指令、这样的指令的操作数、目标地址,源地址,或其任何组合。这样的标志可以由所接收到的安全规则定义。在步骤830,可以接收到要执行的指令并与捕获标志比较。在步骤835,可以接收到所产生的且要从微代码发送的信息并与捕获标志比较。可以通过状态机步骤830和835,其中,可以重复各步骤,且可以记录来自各步骤的多次迭代的结果并与标志或安全规则比较。[0260]在步骤840,可以判断是否已经捕获到指令或信息。如果没有捕获到任何事物,则该方法可以返回到在步骤830和835监视指令和所产生的信息。如果捕获到某种事件,那么,在步骤845可以创建与捕获相关联的已触发事件。这样的已触发事件可以包含关于捕获的信息,包括诸如所捕获的指令、所使用的参数、发起的存储器位置和目标存储器位置之类的上下文信息。[0261]在步骤850,可以判断是否在微代码内应对已触发事件或者在微代码外的安全代理是否应该应对已触发事件。如果要在微代码内应对已触发事件,那么,在步骤855可以采取已触发事件的适当动作。这样的动作可以通过查询安全规则来定义。这样的动作可以包括允许要执行的指令或要发送的信息、拒绝指令或通信、替换存储器中的值或参数中的值或所要求的任何其他矫正动作。然后,在步骤830和835,方法800可以继续安全监视。[0262]如果要在微代码外应对已触发事件,那么,在步骤860可以把已触发事件发送给安全代理以供应对已触发事件。在步骤865,可以收集与已触发事件相关的附加信息。这样的信息可以包括设置、偏好、上下文信息或恶意软件状态。在步骤870可以使用这样的信息来把安全规则应用到已触发事件。这样的应用可以产生相对于已触发事件要采取的一连串动作。在步骤875,可以指定这样的一连串动作并将其传递给可以实现指定动作的各种安全代理。这样的动作可以包括矫正动作、允许操作或通信发生、向保护服务器报告事件或任何其他合适的结果。在步骤880,可以采取在步骤875指定的动作。然后,方法800可以在步骤830和835继续安全监视。[0263]图9是用于调节对电子设备901上的安全敏感的处理器资源的软件访问的系统900的示例实施例。系统900可以包括0/S下层捕获代理920和已触发事件应对程序922,已触发事件应对程序922被配置为在电子设备901上操作,以便检测来自在诸如操作系统913之类的电子设备901的操作系统中运行的基于软件实体的对访问处理器资源924的恶意尝试。此外,0/S下层捕获代理920和已触发事件应对程序922可以被配置为使用一个或多个安全规则908来判断捕获什么已尝试操作或信息的产生以及如何应对对应于已捕获操作或信息所创建的已触发事件。0/S下层捕获代理920和已触发事件应对程序922可以被配置为允许、拒绝或为已触发事件采取其他矫正动作。[0264]电子设备901可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701和/或其任何组合来实现,或者被配置为实现它们的功能性。电子设备901可以包括被耦合到存储器903的一个或多个处理器902。处理器902可以全部地或部分地由图2的处理器208、图4的处理器408、图7的处理器702或其任何组合实现,或者被配置为实现它们的功能性。存储器903可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703和/或其任何组合实现,或者被配置为实现它们的功能性。电子设备901可以包括操作系统913,操作系统913可以包括被耦合到一个或多个安全规则921的Ο/S内部安全代理919。操作系统913可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713和/或其任何组合实现,或者被配置为实现它们的功能性。Ο/S内部安全代理919可以全部地或部分地由图1的Ο/S内部安全代理218、图4的Ο/S内部安全代理418和/或图7的0/S内部安全代理719或其任何合适的组合实现,或者被配置为实现它们的功能性。[0265]0/S下层捕获代理920可以由图1的0/S下层捕获代理104、图2的SVMM216、图4的固件安全代理440、442或PC固件安全代理444、图5的固件安全代理516、图7的微代码安全代理708和/或其任何组合实现,或者被配置为实现它们的功能性。已触发事件应对程序922可以由图1的已触发事件应对程序108、图2的SVMM安全代理217、图4的0/S下层代理450、图7的0/S下层代理712和/或其任何组合实现,或者被配置为实现它们的功能性。在各种实施例中,0/S下层捕获代理920的功能性中的一些可以由已触发事件应对程序922完成,或者已触发事件应对程序922的功能性中的一些可以由0/S下层捕获代理920完成。此外,可以在相同的软件模块中实现0/S下层捕获代理920和已触发事件应对程序922。[0266]安全规则908可以由图1的安全规则114、图2的安全规则222、图4的安全规则434、436、438、图5的安全规则518、图7的安全规则707、723和/或其任何组合实现,或者被配置为实现它们的功能性。安全规则921可以由图2的安全规则220、图4的安全规则420、图7的安全规则721和/或其任何组合实现,或者被配置为实现它们的功能性。[0267]0/S下层捕获代理920可以被配置为截取对诸如处理器资源924之类的任何合适的资源的访问或来自诸如处理器资源924之类的任何合适的资源的信息。例如,处理器资源924可以由图1的资源106、图2的系统资源214、图4的诸如显示器424和存储426之类的组件的部分或图7的系统资源实现,或者被配置为实现它们的功能性。处理器资源924可以包括诸如处理器902之类的处理器可用的资源,以便允许处理器加载和执行指令。这样的资源可以包括,例如,数据寄存器928、控制寄存器930、高速缓存934、处理器标志936、处理器核心938、处理器异常940或处理器中断942。对这样的资源的已尝试访问可以包括诸如带有操作数的汇编语言指令之类的指令。捕获对其可用的处理器资源924可以取决于由处理器902公开的资源。例如,如果在虚拟机监视器中实现0/S下层捕获代理920,则可用于供0/S下层捕获代理920捕获的处理器资源924可以限于由处理器902出于虚拟化的目的公开的处理器资源924。在这样的情况中,处理器902可以包括用于处理器资源924中的一些的虚拟化扩展。在另一示例中,如果在微代码安全代理中实现0/S下层捕获代理920,那么,处理器902已经使得处理器902的几乎所有资源都可用于捕获。[0268]0/S下层捕获代理920可以包括处理器资源控制结构(“PRCS”)926。可以以记录、数据结构、表或任何其他合适的结构实现PRCS926。PRCS926可以包含指定应捕获处理器资源924的哪些指令、信息或已尝试访问的信息。Ο/S下层捕获代理920或已触发事件应对程序922可以被配置为在PRCS926中设置对应于要捕获的敏感的操作、信息或资源的标志。0/S下层捕获代理920或已触发事件应对程序922可以被配置为根据被包含在安全规则908内的信息在PRCS926中设置这样的标志。[0269]图10是PRCS1000的示例实施例。PRCS1000可以是图9的PRCS926的示例实施例。PRCS1000可以包括要捕获的各种处理器资源的条目1014的表。每一条目可以具有标识资源和可以产生已触发事件的条件的一个或多个字段1004、1006、1008、1010、1012。例如,PRCS1000可以具有用于触发标志1002、资源的标识符1004、与资源相关联的类型1006、触发器类型1008、关于何时触发事件的何时触发条件1010和其中触发事件的执行阶段1012的字段。PRCS1000的实现可以取决于其资源被标识的处理器的本质,包括体系结构(例如工业标准体系结构“ISA”)或由处理器902公开的资源。[0270]触发标志1002可以包括关联条目1014的捕获和触发开启还是关闭的指示。这样的标志可以允许把捕获条件作为条目1014加载到PRCS1000中但更保持蛰伏。因而,PRCS1000可以加载有安全规则的实施例而不主动地强加它们。触发标志1002可以被配置为由诸如图9的0/S下层捕获代理920之类的实体设置。这样的操作可以允许使用PRCS1000的反恶意软件系统相比于将要求每次允许或禁用对特定资源或条件的捕获时增殖和减少PRCS1000的系统操作得快得多。开启和关闭条目1014的能力可以允许反恶意软件系统有选择地捕获某些操作。如果特定的捕获操作在时间或执行方面是昂贵的,则这样的选择性是有益的,且因而仅在检测到特定的条件时允许条目1014。例如,如果系统正常地多次与到特定的寄存器,可以关闭对该寄存器的访问的捕获,直到反恶意软件系统的另一部分检测到指示可能的恶意软件感染的可疑行为。在这样的情况中,对应于写寄存器的条目1014的触发标志1002可以被设置为“0N”以便捕捉攻击资源的任何附加恶意尝试。[0271]资源标识符1004可以包括要捕获的处理器的特定资源的标识。例如,标识符1004可以显示,资源是寄存器,例如特定的数据寄存器、诸如EAX之类的地址寄存器、栈区寄存器、控制寄存器、矢量寄存器、诸如ESP之类的栈区指针、指令寄存器、程序计数器、指令寄存器、程序状态字、常量寄存器、浮点寄存器、或条件寄存器。作为其他示例,标识符1004可以标识,资源是指令,例如“JMP”、“JZ”(如果条件等于零则跳转)、“JNZ”(如果条件不于零则跳转)、“M0V”(移动值)或“SysEnter”(快速调用O环过程)。作为又一示例,标识符1004可以标识,资源是类似于以下的其他资源中的一种:诸如转换后备缓冲器之类的高速缓存;诸如时间戳计数器之类的计数器;诸如系统的处理器O、处理器1...处理器N之类的逻辑核心;或诸如“DIV/0”之类的处理器异常或诸如处理器间中断之类的中断或其他全局变量。资源标识符1004可以被转换成指令的地址、寄存器或由资源标识符1004表示的其他资源的表示。资源类型1006可以包括条目1014包括的资源的类或类型的标识。PRCS1000的一些条目可以适用于特定类型的所有资源。[0272]触发器类型1008可以包括所得到的已触发事件的应对是同步还是异步的标识。同步触发可以引起已捕获资源的执行或通信停机,直到例如判断该尝试是否指示恶意软件。异步触发可以允许已捕获资源的执行或通信继续,同时例如记录触发器以供将来评估。在一个实施例中,异步触发的对资源的已尝试访问可以被用来构建较大系列动作的评估,且在可以做出判断之前这样的系列动作的适当评估可以要求多个数据点。例如,无论指令指针寄存器的特定读取自身可能不是恶意的,但是所返回的信息的随后使用可能是恶意的。因而,状态机可以被用来首先异步捕获指令指针寄存器的读取,但是然后同步地捕获其在另一指令中的使用。[0273]何时触发条件1010可以包括逻辑规则或条件,在这些规则和条件下将基于对资源的访问产生已触发事件。例如,在写入或读取资源时将为寄存器产生已触发事件。在执行诸如“JMP”之类的指令时将为指令产生已触发事件。在高速缓存失效时,可以为诸如转换后备缓冲器之类的高速缓存产生已触发事件。取决于处理器的状态,例如在核心是空闲的时,可以为处理器核心产生已触发事件。在设置或写入标志或异常时,可以触发处理器异常或处理器标志。何时触发条件1010可以包括组合逻辑条件,例如对单个资源的多个条件(例如值范围)、对多个资源的条件(因而在多个条目1014中连结)或两者的组合。[0274]何时触发条件1010可以包含根据要捕获的资源的类型的条件。例如,在它被写入、用特定的值写入或读取时,可以触发寄存器。在另一示例中,在它被写入、用特定的值写入或读取时,可以类似地触发高速缓存或指针。在又一示例中,在核心是空闲的时,可以触发处理核心。在再一个示例中,在发送中断之前(在对中断表的全局空间的尝试访问时)或在发送中断之后(在写中断表之后),可以触发处理器间中断,例如被用来命令处理器核心停机、睡眠或激活的处理器间中断。[0275]触发器1012的执行阶段可以包括在指令执行的哪一阶段中将捕获已尝试访问且产生已触发事件的指示。触发器1012的执行阶段与何时触发条件1010组合用作对捕获给定资源的附加要求。为了捕获给定条目,在关联指令到达触发器1012的执行阶段中指定的执行阶段时,可以评估何时触发条件1010。触发器1012的执行阶段可以包括例如对应于处理器的五个指令执行阶段或步骤的条目。在一个实施例中,五个这样的指令执行阶段可以包括I)提取指令,2)解码指令,3)执行,4)访问存储器位置以便得到结果,以及5)把返回值写回到存储器、寄存器或另一位置。在这样的实施例中,触发器1012的执行阶段可以包括在五阶段中的任何阶段之前或之后触发的能力。这提供总共六个不同的示例触发选项一在提取之前、在解码之后(且因而在执行之前)、在执行之后(且因而在访问存储器位置之前)、在访问存储器位置之后(且因而在写返回值之前)以及在写返回值之后。基于执行阶段捕获的能力可以提供其他反恶意软件系统不可获得的显著灵活性。例如,执行特定指令的结果预先未知,且因而反恶意软件系统可以把触发器1012的执行阶段的值设置为在访问存储器位置以便得到结果之后,但在把返回值写回到寄存器之前,如该指令所命令的。这可以允许反恶意软件系统评估操作结果而无需允许写入它。如果该结果指示恶意操作,那么,可以把哑元值而不是从第四执行阶段返回的值写回到寄存器。基于已尝试执行,可以把关于已尝试执行的信息提供给已触发事件的应对程序,以便帮助判断该尝试是否恶意的。[0276]PRCS1000的每一资源1004可以具有多个条目对应于对资源1004与另一1004的访问的组合。这样的访问组合可以包括要捕获的两个步骤或更多进程。例如,条目1014可以包括用于以下的分离的条目:a)对对应于中断描述符表(“IDT”)的存储器位置的访问与对控制寄存器的访问的组合,以及b)对对应于中断描述符表的存储器位置的访问与对通用寄存器的访问的组合。此外,在图9中,这样的分离的条目可以由系统900的分离部分应对。例如,特定的0/S内部捕获代理919可以应对收集已捕获IDT的上下文信息——通用寄存器访问,同时其他0/S内部捕获代理919可以应对收集已捕获IDT的上下文信息——控制寄存器访问。[0277]返回到图9,0/S下层捕获代理920可以被配置为在PRCS926中设置标志或添加条目。0/S下层捕获代理920可以被配置为访问诸如安全规则908之类的一个或多个安全规则以判断这样的标志或条目。在一个实施例中,0/S下层捕获代理920可以被配置为从已触发事件应对程序922接收设置这样的标志或条目的指令,已触发事件应对程序922可以在查询安全规则908或保护服务器202之后调用0/S下层捕获代理920。可以由处理器902和/或0/S下层捕获代理920提供用于设置标志或向PRCS926添加条目的一组特定的特权例程。[0278]如果电子设备901包括多于一个的处理器,则每一个这样的处理器可以具有相应的PRCS926。在一个实施例中,系统900可以包括用于每一个这样的PRCS926的0/S下层捕获代理920。在另一实施例中,0/S下层捕获代理920可以被配置为捕获在每一个这样的PRCS926中表示的资源。[0279]如果系统900支持虚拟化,那么,PRCS926自身可以被虚拟化。虚拟化PRCS926的内容可以限于被相应的处理器902虚拟化的那些资源。这样的被虚拟化PRCS926可以被包括在虚拟机监视器中。在这样的情况中,0/S下层捕获代理920或已触发事件应对程序922可以被配置为在这样的虚拟机监视器中控制PRCS926。在另一实施例中,0/S下层捕获代理920可以被配置为捕获在每一个这样的PRCS926中表示的资源。此外,以每PRCS或每虚拟化处理器为基础,可以在每一个这样的虚拟化PRCS926中创建条目1014,且可以在每一个这样的虚拟化PRCS926中设置触发标志1002。[0280]0/S下层捕获代理920可以被配置为把从已捕获尝试或通信得到的已触发事件发送给已触发事件应对程序922。已触发事件应对程序922可以被配置为基于已触发事件的信息和一个或多个安全规则908执行任何合适的随后动作。例如,已触发事件应对程序922可以被配置为允许已尝试指令的执行,但是要求在执行之后通知结果。在另一示例中,已触发事件应对程序922可以被配置为完全跳过命令的执行或通信。如果没有要求返回值,则可以应用这样的示例。在又一示例中,例如通过使用“JMP”指令来把执行发送给修复例程的地址,可以把执行传递到新的位置。[0281]在操作中,0/S下层捕获代理920和已触发事件应对程序922可以在电子设备901上操作。Ο/s下层捕获代理920可以在低于电子设备901的操作系统的级别操作。此外,已触发事件应对程序922也可以在低于电子设备901的操作系统的级别操作。已触发事件应对程序922可以查阅安全规则908或保护服务器202以判断在PRCS926中设置什么标志1002或条目1014。已触发事件应对程序922可以向0/S下层捕获代理920指示在PRCS926中设置什么标志1002或条目1014。取决于检测到的各种条件,例如正在使用的应用910、所检测的恶意软件的其他指示、先前已触发事件或电子设备901的管理员设置,0/S下层捕获代理920和已触发事件应对程序922可以在电子设备901操作期间动态地改变触发标志1002或在PRCS926中添加新的条目1014。作为这样的动态改变的基础的信息可以来自,例如,0/S下层捕获代理920或0/S内部代理919。可以根据资源1004或资源类型1006标识PRCS926中的条目1014。触发器类型1008可以被设置为把随后的已捕获事件配置成同步的或异步的。何时触发条件1010可以被设置为配置在什么环境下已截取的请求将产生已触发事件,如同触发器1012的执行阶段那样。[0282]取决于系统900遇到的各种条件,可以动态地允许或禁用PRCS926中的条目。例如,0/S下层捕获代理920可以禁用昂贵的捕获操作,这是因为直到已触发事件应对程序922接收到电子设备901受到恶意软件攻击的指示的这样的时间之前,所捕获的已尝试访问频繁地发生,带有许多假阳性。然后,0/S下层捕获代理920可以允许捕获操作。在一个实施例中,在这样的条件下可以允许一个或多个处理器资源924上的广泛捕获以便防止未知的恶意软件动作进一步危害电子设备901。这样的广泛捕获可以扩展到本质上关闭处理器、虚拟化处理器、线程、进程或应用的整个执行环境。[0283]对处理器资源924的请求可以起因于处于系统900的操作系统的级别的实体,例如起因于应用910、驱动程序911或操作系统913。请求可以被传送给处理器资源924但被0/S下层捕获代理920截取。此外,通过各种处理器资源924可以从处理器产生信息或通信。信息或通信可以由0/S下层捕获代理920截取。[0284]如果信息或通信匹配PRCS926中的条目1014的任何何时触发1010字段,则0/S下层捕获代理920可以使用PRCS926来捕获对资源的访问,且随后,产生已触发事件。被设置为“0N”的触发标志1002已经允许的条目1014可以被匹配为已尝试访问或信息或通信。可以把要访问的资源与资源字段1004和/或资源类型字段1006进行比较。如果要访问的资源匹配这样的字段,那么,可以评估何时触发条件1010。如果何时触发条件1010匹配系统信息或关于该请求的信息,那么,PRCS926可以产生已触发事件。触发器1012的执行阶段可以被用来判断在何时产生已触发事件。例如,可以在在指令提取之前、在指令提取之后、在执行之后、在访问存储器以供随后写入、或在访问诸如寄存器之类的另一资源以供写回之后创建已触发事件。此外,可以为已尝试通信或诸如处理器间中断之类的信息的产生而产生已触发事件,类似于在中断被发送或被写到中断表之前或之后的“Interrupt_Sleep(中断_睡眠)”。取决于触发器类型1008,所产生的已触发事件可以是同步的或异步的。如果产生了同步的已触发事件,则0/S下层捕获代理920可以停止对资源的已尝试访问或通信的产生的执行,等待事件的应对。如果产生了异步的已触发事件,则0/S下层捕获代理920可以允许对资源的已尝试访问或通信的产生的执行。0/S下层捕获代理920可以把关于尝试的附加上下文信息添加到已触发事件,例如该尝试从其中起源的存储器地址、把结果写到何处或任何其他合适的信息。[0285]出于决定已触发事件是否可疑的目的,0/S下层捕获代理920可以包括与已触发事件相关的信息。例如,0/S下层捕获代理920可以确定诸如判断存储器的什么部分做出已尝试访问之类的信息。可以由已触发事件应对程序922把该存储器部分与在电子设备903上运行的已知的进程、应用或程序进行相关。如果已尝试访问起因于未知的或未经授权的进程、应用或程序,那么,该尝试可能是可疑的。已触发事件应对程序922可以使用来自0/S内部安全代理919的信息来判断这样的相关。在另一示例中,0/S下层捕获代理920可以提供关于先前已触发事件的信息,例如状态机中所记录的那些。与目前的已触发事件相关的这样的先前已触发事件可以提供关于该尝试是否可疑的上下文信息。[0286]0/S下层捕获代理920可以把已触发事件传送给已触发事件应对程序922,已触发事件应对程序922可以通过根据安全规则908评估已触发事件中的信息和/或来自0/S内部代理919的上下文信息来应对该事件。可以判断所得到的适当的动作并将其发送回到0/S下层捕获代理920以便应用到已捕获尝试。这样的动作可以包括允许尝试、拒绝指令执行或代入不同的数据或指令以便规避恶意软件的操作。[0287]0/S下层捕获代理920可以存储已触发事件以供在捕获将来的尝试访问时随后引用。例如,恶意操作可能要求要由处理器资源924执行多个指令。因而,这样的恶意行为的每一步骤可以被反映在PRCS926中的分离的条目1014中。0/S下层捕获代理920可以捕获恶意操作的第一步骤,该第一步骤自身可以不是恶意的但仅在与随后的步骤组合时是恶意的。在这样的情况中,可以把这样的步骤的条目1014设置为异步触发,这是由于该条件仅仅被记录到状态机中以使得0/S下层捕获代理920或PRCS926可以知晓先前所应对的尝试。恶意操作的第二步骤的捕获可以具有如同何时触发条件1010的对第一步骤的捕获。[0288]图11是用于调节对电子设备上的安全敏感的处理器资源的软件访问的方法1100的示例实施例。在步骤1105,可以访问安全规则以在步骤1110判断要保护什么处理器资源或处理器通信。在低于电子设备中的操作系统的级别操作的捕获代理可以判断要捕获什么资源和通信。这样的捕获代理可以在例如虚拟机监视器、固件或处理器的微代码中操作。[0289]在步骤1115,可以把对应于要捕获的资源或通信的条目写到处理器资源控制结构,处理器资源控制结构可以被配置为在指定条件下捕获对已指派资源或通信的操作、访问或其他使用。PRCS中的条目可以写上资源的标识、资源类型、将触发事件的条件、触发器将是异步还是同步以及已尝试访问或通信应在什么执行阶段(如果有的话)产生已触发事件。在步骤1120,PRCS中的条目也可以写上触发器或允许标志,其指示条目是否被激活以供是否捕获。如果不设置触发标志,那么,该条目可以蛰伏且不被用来捕获对资源的已尝试访问。[0290]在步骤1125,可以监视对资源的访问或通信的产生。这样的监视可以通过PRCS发送。电子设备中的实体可以试图尝试产生处理器通信或尝试访问处理器资源。对访问资源的这样的尝试可以起源于电子设备的操作系统的级别。如果指令、命令或对访问资源的其他尝试匹配PRCS中的条目的资源标识符,其中该条目已经被激活,那么,可以捕获该尝试。类似地,如果产生了匹配PRCS中的条目的资源标识符的处理器通信,其中该条目已经被激活,那么,可以捕获该尝试。在一个实施例中,如果满足指定何时触发的附加准则,则可以捕获对访问资源的尝试或通信的产生。例如,在曾经写入控制寄存器时可以捕获对控制寄存器的尝试写入。在另一示例中,在控制寄存器写有特定的值时可以捕获对控制寄存器的尝试与入。[0291]在步骤1130,可以判断是否捕获了已尝试访问或通信。如果没有捕获到尝试,那么,在步骤1140可以判断是否需要调整PRCS中的条目。这样的调整可以包括允许或禁用这样的条目、添加新的条目或调整准则或条目的设置。然后,方法1100可以返回到步骤1125。这样的调整可以是基于例如电子设备中所检测到的新的恶意软件、时间的流逝、先前已捕获尝试或管理员的设置。[0292]在步骤1145,如果已经捕获到尝试,则可以判断所得到的已触发事件应该是同步的还是异步的。如果触发器类型是不同步的,那么,方法1100可以返回到步骤1125,与进行到步骤1150并行发生。如果触发器类型是同步的,那么,在步骤1150可以存储关于已捕获尝试的信息。这样的信息可以例如被状态机用于将来判断已捕获尝试是否应该产生已触发事件。在步骤1155,可以判断是否满足触发器的所有条件。这样的条件可以要求例如把某些值写入到资源,或请求起源于(或不起源于)存储器中的特定位置。此外,这样的条件可以要求先前捕获了其他尝试。可以访问关于这样的尝试的信息并将其存储在状态机中。如果没有满足触发的所有条件,那么,方法1100可以返回到步骤1125。[0293]如果满足了触发的所有条件,那么,在步骤1155可以判断在哪一特定执行阶段(如果有的话)应产生已触发事件。这样的阶段可以包括,例如,在提取尝试中的指令之前、在提取指令之后、在执行指令之后、在访问存储器以便读取结构之后或在写回值之后。此夕卜,这样的阶段可以包括在执行处理器间中断之前或之后。一旦完成了所指派的执行阶段,则在步骤1165可以产生该尝试的已触发事件。在步骤1170,在已触发事件中可包括诸如该尝试的源地址或目的地地址之类的上下文信息或所涉及的资源,以便在步骤1175传递给应对程序。[0294]在步骤1180,可以查询安全规则,以便在步骤1185判断已触发事件是否可疑的、不为管理员设置所准许、或指示恶意软件。诸如已触发事件的上下文信息之类的上下文信息、电子设备的操作系统中的其他事件或管理员设置可以被用来评估安全规则对已触发事件的应用。如果已触发事件是不可疑的,那么,在步骤1187可以通知捕获代理,且方法1100可以返回到步骤1125。如果已触发事件是可疑的,那么,在步骤1190所得到的矫正动作可以被发送给捕获代理。这样的矫正动作可以取决于对访问资源或产生处理器通信的特定尝试。例如,恶意指令可以欺骗要读或写的值,或可以把跳转指令定向到修复例程。在步骤1195,可以应用矫正动作。方法1100可以返回到步骤1125。[0295]图12是使用电子设备1201上的操作系统下层捕获来调节软件访问以便保护存储器的系统1200的示例实施例。系统1200可以包括0/S下层安全代理1220,0/S下层安全代理1220被配置为在电子设备1201上操作以便检测对访问存储器的恶意尝试,该恶意尝试来自在电子设备1201的诸如操作系统1213之类的操作系统中运行的基于软件的实体。此外,0/S下层安全代理1220可以被配置为使用一个或多个安全规则1208和存储器映射1206来判断捕获对存储器的什么已尝试访问以及如何应对对应于已捕获操作而创建的已触发事件。0/S下层安全代理1220可以被配置为允许已触发事件、拒绝已触发事件或为已触发事件采取其他矫正动作。[0296]电子设备1201可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701、图9的电子设备901和/或其任何组合实现,或者配置为实现它们的功能性。电子设备1201可以包括被耦合到诸如物理存储器1203之类的存储器的一个或多个处理器1202。处理器1202可以全部地或部分地由图2的处理器208、图4的处理器408、图7的处理器702、图9的处理器902或其任何组合实现,或者被配置为实现它们的功能性。物理存储器1203可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703、图9的存储器903和/或其任何组合实现,或者被配置为实现它们的功能性。电子设备1201可以包括操作系统1213,操作系统1213可以包括被耦合到一个或多个安全规则1221的0/S内部安全代理1219。操作系统1213可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图9的操作系统913和/或其任何组合实现,或者被配置为实现它们的功能性。0/S内部安全代理1219可以全部地或部分地由图1的0/S内部安全代理218、图4的0/S内部安全代理418、和/或图7的0/S内部安全代理719、图9的安全规则908或其任何合适的组合实现,或者被配置为实现它们的功能性。[0297]0/S下层安全代理1220可以由图1的0/S下层捕获代理104或已触发事件应对程序108、图2的SVMM216或SVMM安全代理217、图4的固件安全代理440、442、0/S下层代理450或PC固件安全代理444、图5的固件安全代理516、或图7的微代码安全代理708或0/S下层代理712、图9的0/S下层捕获代理920或已触发事件应对程序922和/或其任何组合实现,或者被配置为实现它们的功能性。[0298]安全规则1208可以由图1的安全规则114、图2的安全规则222、图4的安全规则434、436、438、图5的安全规则518、图7的安全规则707、723、图9的安全规则908和/或其任何组合实现,或者被配置为实现它们的功能性。安全规则1221可以由图2的安全规则220、图4的安全规则420、图7的安全规则721、图9的安全规则921和/或其任何组合实现,或者被配置为实现它们的功能性。[0299]0/S下层安全1220可以被配置为截取对电子设备1201的存储器的访问。这样的存储器可以包括,例如,对物理存储器1203的地址的已尝试访问或对虚拟存储器1204的页面的已尝试访问。这样的尝试访问可以起源于操作系统1213或利用操作系统1213来在电子设备1201上运行的实体,例如应用1210或驱动程序1211。[0300]在一个实施例中,受0/S下层安全1220保护的存储器可以包括虚拟存储器1204。虚拟存储器1204可以包括诸如操作系统1213、应用1210或驱动程序1211之类的实体可用的存储器,已经从物理存储器和/或存储提取出该存储器。虚拟存储器1204可以是对诸如操作系统1213、应用1210或驱动程序1211之类的实体来说作为连续的一块存储器而出现,尽管所使用的实际空间可以跨越诸如物理存储器1203之类的实际物理存储器而分离地散布和/或在诸如盘的存储中。虚拟存储器1204可以根据处理器1202的扩展来虚拟化。虚拟存储器1204的地址空间可以被分割成存储器页面。存储器页面可以是每一相等的大小,例如四千字节。电子设备1201可以被配置为使用页面表来把虚拟存储器1204的虚拟地址转换成诸如物理存储器1203之类的存储器的物理地址或存储的地址。电子设备1201可以包括存储器管理单元1214(“MMU”),存储器管理单元1214被配置为把虚拟存储器1204的虚拟地址转换成诸如物理存储器1203之类的存储器的物理地址和/或存储的地址。可以索引虚拟存储器1204的页面。对虚拟存储器1204页面的已尝试访问可以包括页面的已尝试的读、写或执行,且0/S下层安全代理1220可以被配置为捕获该尝试。在一个实施例中,虚拟存储器1204的页面可以对应于物理存储器地址或存储的地址。在另一实施例中,每一虚拟存储器1204的页面可以对应于物理存储器地址。在又一实施例中,包含诸如操作系统1213的特定部分之类的某些内容页面可以被固定且在电子设备1201的操作期间可以不改变。[0301]在另一实施例中,受0/S下层安全代理1220保护的存储器可以包括物理存储器1203。可以通过物理存储器的地址访问物理存储器1203,如标记(A)、(B)、(C)、(D)、(E)、(F)、(G)、(H)、(I)、(J)和(K)中所示出的,物理存储器的地址指示物理存储器1203中的特定地址,该地址可以是包含已定义元素的存储器范围的基地址。可以通过对特定的存储器地址的已尝试的读、写或执行来访问物理存储器1203,且0/S下层安全代理1220可以被配置为捕获该尝试。例如,已尝试的写可以采取指令“MOVAddrl,Value(移动地址1,值)”的形式,其中,由变量“Value(值)”表示的值被写到由“Addrl(地址I)”表示的特定存储器地址。可以使用写到物理存储器1203地址的任何指令。已尝试的读可以采取诸如“MOVValue,Addrl(移动值,地址I)”之类的指令的形式,其中,由“Addrl”表示的特定存储器地址读取由变量“Value(值)”表示的值。可以使用从物理存储器1203地址读取的任何指令。已尝试执行可以采取用物理存储器1203地址加载例如诸如“EIP”之类的指令指针寄存器的指令的形式,例如“MOVEIP,Addrl(移动EIP,地址I)”。这样的指令可以被配置为执行在由“Addrl”表示的地址开始的代码。可以使用用于执行存储器中的地址的任何指令。[0302]0/S下层安全代理1220可以被配置为截取对虚拟存储器1204的已尝试访问。此夕卜,Ο/s下层安全代理1220可以是被配置为截取对物理存储器1203的已尝试访问。在一个实施例中,可以不截取对虚拟存储器1204的请求,但截取在MMU已经把虚拟存储器1204页面转换成物理存储器1203地址之后的对物理存储器1203的随后的相应尝试访问,0/S下层安全代理1220可以被配置为截取对物理存储器的已尝试访问。在另一实施例中,可以直接做出对物理存储器1203的已尝试访问而不需要通过虚拟存储器1204转换,且0/S下层安全代理1220可以被配置为截取该已尝试访问。在再一个实施例中,可以截取对虚拟存储器1204做出的已尝试访问,但0/S下层安全代理1220可以不被配置为截取对物理存储器1203地址的随后访问。[0303]0/S下层安全代理1220可以通信上耦合到0/S内部安全代理1219。0/S下层安全代理1220可以被配置为从0/S内部安全代理1219接收关于对电子设备1201的存储器的已尝试访问的上下文信息。由0/S内部安全代理1219提供的上下文信息可以包括已经尝试对电子设备1201的存储器的特定访问的实体的身份。[0304]0/S下层安全代理1220可以通信上耦合到或包括存储器映射1206。可以以文件、记录、数据结构或其他合适的实体实现存储器映射1206。存储器映射1206可以包括关于电子设备1201的各种实体在存储器中的位置的信息。例如,如果进程被加载到电子设备1201的存储器中以供执行,则存储器映射1206可以包括关于虚拟存储器1204中的哪些存储器页面或物理存储器1203中的哪些地址范围包含该进程的信息。取决于电子设备1201中的存储器的虚拟化的实现,该进程的所有内容可以或者不可以被加载到物理存储器1203中,这是因为一些内容可以被加载到诸如盘之类的存储中。对于要访问的这样的内容,它们可以被加载到物理存储器1203中。在这样的情况中,存储器映射1206可以包含关于内容被存储在其中的地址的信息,无论是在物理存储器1203中还是在诸如盘之类的存储中。0/S下层安全代理1220可以被配置为使用存储器映射1206来判断虚拟存储器1204页面或物理存储器1203地址中的任何给定内容的身份或所有者。例如通过剖析操作系统1213的操作,且然后判断各种敏感的组件位于存储器中的何处,0/S下层安全代理1220可以构建存储器映射1206。当做出对访问存储器的尝试时——例如加载操作系统1213内核,或执行内核模式指令一0/S下层安全代理1220可以被配置为与0/S内部安全代理1219通信以便判断加载或执行操作系统1213的什么部分。在另一示例中,0/S下层安全代理1220可以被配置为判断这样的虚拟存储器1204页面的存储器范围的内容的散列或数字签名。可以把散列或数字签名与安全规则1208中所包含的或从保护服务器202获得的已知值进行比较。已知的值可以是先前的表征的结果,其中例如已经标识操作系统1213的各部分。要映射的元素可以由安全规则1208确定。0/S下层安全代理1220可以被配置为在把元素从电子设备1201中的存储器的一个位置复制到另一位置时跟踪元素在存储器映射1206中的移动。[0305]图13是存储器映射的示例实施例的阐释。在一个实施例中,虚拟存储器映射1302可以包括要通过它们在虚拟存储器中的位置跟踪的元素的映射。在另一实施例中,物理存储器映射1304可以包括要通过它们在物理存储器中的位置跟踪的元素的映射。在各种实施例中,虚拟存储器映射1302和物理存储器映射1304可以被映射到一起,以使得可以在两种映射中跟踪元素。[0306]虚拟存储器映射1302可以反映十个不同的虚拟存储器页面。虚拟存储器映射1302可以阐释,例如,可以在存储器页面I和存储器页面2中找到这样的页面目录中的内核操作系统数据结构。在另一示例中,可以在存储器页面4-6中找到被称为“Fnl”的特定的进程、函数或例程的元素。在又一示例中,可以在页面8中找到用于系统服务分派表(“SSDT”)的权限的数据结构。在再一个示例中,可以在存储器页面8和存储器页面9中找到被称为“Fn2”的特定的进程、函数或例程的元素。[0307]物理存储器映射1304可以用物理存储器反映元素的位置。物理存储器中的元素的各部分可以跨越存储器散布在不邻近的片段或块中。此外,物理存储器中的元素的各部分可以跨越存储器以任意的次序散布。每一片段的大小在大小方面可以改变。片段可以在偏移基地址的地址处开始。图13中示出的示例基地址是00x000,在地址FFxFFF终止。表示物理存储器的各种片段的开始的地址被表示为(A)-(O)。对于被包含在物理存储器的多个片段内的元素,可以注意元素的次序。在物理存储器中,元素的多个片段可以由指针链接在一起,其中元素的一个片段的结束可以指向元素的下一片段。[0308]例如,Fnl可以被映射到在(A)和(B)、(J)和(K)以及(M)和(N)之间的片段。在另一示例中,SSDT权限可以被映射到在(G)和(H)之间的片段。在又一示例中,页面目录数据结构可以被映射到在(O)和FFxFFF、(F)和(G)以及(I)和(J)之间的片段。在再一个示例中,Fn2可以被映射到在(H)和(I)以及(B)和(C)之间的片段。[0309]返回到图12,0/S下层安全代理1220可以被配置为查阅安全规则1208以判断要保护存储器的什么部分以及如何保护它们。例如,安全规则1208可以被配置为指示页面目录数据结构仅可以由电子设备1201的某些经授权实体写入。因而,可以捕获对写入页面目录数据结构的尝试,且可以检查尝试写入的元素可以以便判断它们是安全的、未知的还是已知是不安全的。0/S下层安全代理1220可以被配置为查阅存储器映射1206以判断页面目录数据结构位于存储器中何处。如果例如完全地或部分地在虚拟机监视器中实现0/S下层安全代理1220,则0/S下层安全代理1220可以被配置为在控制结构中设置标志以便捕获对虚拟存储器1204的存储器页面I和/或2的任何尝试写入。在另一示例中,如果完全地或部分地以微代码实现0/S下层安全代理1220,则0/S下层安全代理1220可以被配置为在控制结构中设置标志以便捕获对在物理存储器1203的地址(O)和FFxFFF、(F)和(G)和(I)和(J)之间的地址范围内的存储器地址的任何尝试写入。[0310]在另一示例中,安全规则1208可以被配置为指示Fnl仅可以由电子设备的某些经授权实体调用。因而,可以捕获对执行Fnl的尝试,且可以检查调用Fnl元素以便判断它们是安全的、未知的还是已知为不安全的。0/S下层安全代理1220可以被配置为查阅存储器映射1206以判断Fnl驻留在存储器中何处。如果例如完全地或部分地在虚拟机监视器中实现0/S下层安全代理1220,则0/S下层安全代理1220可以被配置为在控制结构中设置标志以便捕获对虚拟存储器1204的存储器页面4、5和/或6的已尝试执行。在另一示例中,如果完全地或部分地以微代码实现Ο/s下层安全代理1220,则Ο/S下层安全代理1220可以被配置为在控制结构中设置标志以便捕获对物理存储器1203的存储器地址(A)的任何已尝试执行。在其中可以分离地执行Fnl的不同部分的一些情况中,Ο/S下层安全代理1220可以被配置为捕获对在物理存储器1203的(A)和(B)、(M)和(N)、地址(O)和FFxFFF、(F)和(G)、(J)和(K)或(I)和(J)之间的范围内的任何存储器地址的任何已尝试执行。[0311]在一个实施例中,0/S下层安全代理1220可以被配置为查阅0/S内部安全代理1219以判断什么实体已经做出对写入存储器的调用,然后这被用来判断实体是否得到授权来做出写入。在另一实施例中,0/S下层安全代理1220可以是被配置为判断请求来自其中的虚拟存储器1204的存储器页面并查阅存储器映射1206以便判断这样的存储器页面是否与其中映射的任何元素相关联。在又一实施例中,0/S下层安全代理1220可以被配置为确定请求元素的存储器页面的散列或签名并将其与已知实体的散列和签名进行比较。[0312]如果0/S下层安全代理1220完全地或部分地由微代码实现,则0/S下层安全代理1220可以被配置为判断尝试写入的指令的地址。在一个实施例中,0/S下层安全代理1220可以被配置为通过检查指令指针以判断在物理存储器1203中的何处做出该指令来做出这样的判断。在另一实施例中,通过访问存储器映射1206,0/S下层安全代理1220可以被配置为从与地址相关联的存储器映射1206确定元素。在又一实施例中,0/S下层安全代理1220可以被配置为确定请求元素的散列或签名并将其与已知实体的散列和签名比较。[0313]一旦已经捕获对存储器的已尝试访问,则0/S下层安全代理1220可以被配置为访问安全规则1208以基于已标识的请求实体判断如何应对已捕获尝试。安全规则1208可以定义,例如,仅操作系统1213的某些指定的内核部分可以调用和执行Fnl,或者仅已知为安全的且在白名单上的实体可以写入SSDT的权限。然后,0/S下层安全代理1220可以被配置为采取任何适当的动作,例如允许请求进行、拒绝请求、欺骗响应或所写的值或执行矫正的进程。[0314]在操作中,0/S下层安全代理1220可以在低于诸如操作系统1213之类的电子设备1201的操作系统的级别运行。0/S下层安全代理1220可以访问安全规则1208以判断保护电子设备1201的什么存储器资源。0/S下层安全代理1220可以确定、开发和/或增殖存储器映射1206的内容,为了这样做,0/S下层安全代理1220可以访问安全规则1208、保护服务器202或任何其他合适的信息源以便在存储器映射1206中增殖信息。0/S下层安全代理1220可以截取来自诸如操作系统1213、应用1210或驱动程序1211之类的处于操作系统级别的实体的对物理存储器1203或虚拟存储器1204的请求,以便在存储器映射1206中映射存储器的所有权和内容。0/S下层安全代理1220可以访问0/S内部安全代理1219以判断什么实体被加载到存储器中以使得可以增殖存储器映射1206。存储器映射1206可以包含用于物理存储器1203、虚拟存储器1204和/或在两者之间的映射的存储器映射。[0315]0/S下层安全代理1220可以查阅安全规则1208以判断保护虚拟存储器1204和/或物理存储器1203的什么部分。安全规则1208可以指定,在动态的基础上保护存储器的一些部分,其中,可以由0/S下层安全代理1220取决于各种考虑允许或禁用对存储器的保护。这样的考虑可以包括,例如,管理员设置、恶意行为或可疑行为的检测、时间、先前所检测的对存储器的访问或任何其他合适的准则。如果保护电子设备1201的存储器在计算资源方面是昂贵的,这样的动态允许和禁用可以允许0/S下层安全代理1220更好地保护电子设备1201的存储器的关键部分,同时减少对电子设备1201执行其他任务的能力的副作用。例如,存储器包含操作系统1213的内核代码的内容可以总是受到Ο/S下层安全代理1220的保护,同时包含第三方应用1210的代码的内容的存储器可以仅在其他指示恶意软件存在或可以影响第三方应用1210时受到保护。[0316]0/S下层安全代理1220可以在控制结构中设置标志以便捕获对物理存储器1203和/或虚拟存储器1204的已尝试访问。在一个实施例中,当从操作系统1213中的实体做出对被指派为要捕获的虚拟存储器1204中的存储器页面的请求时,0/S下层安全代理1220可以截取所尝试的请求。在另一实施例中,当做出对虚拟存储器1204中的存储器页面的请求时,0/S下层安全代理可以允许由MMU1214把请求转换成对物理存储器1203中的地址的请求,在此0/S下层安全代理可以截取所尝试的请求。在又一实施例中,当直接地做出对物理存储器1203中的地址的、来自操作系统1213中的实体的请求时,0/S下层安全代理1220可以截取所尝试的请求。[0317]一旦已经截取了请求,0/S下层安全代理1220就可以使用任何合适的机制来评估所截取的对存储器的请求。安全规则1208可以被用来判断该尝试是否可疑,指示恶意软件对使用电子设备1201的资源的恶意尝试。安全规则1208可以包括以下考虑:例如,是否尝试读、写或执行;什么实体做出尝试;所访问的存储器地址或页面;相同的请求者的先前的尝试或动作;电子设备1201的管理员的安全设置,例如基于电子设备1201的用户或多或少带有限制性的规则;或由存储器位置和/或数字签名或散列确定或根据相关的页面或存储器地址的请求者的身份。[0318]例如,对虚拟存储器1204的页面2中的或物理存储器1203的地址(J)处的页面目录数据结构尝试写入可以由Ο/s下层安全代理1220截取。如果写入是来自未知的进程的存储器的部分,则0/S下层安全代理1220可以判断该写入是可疑的。然而,如果该尝试写入是来自操作系统1213内核的已知的经验证部分,那么,可以判断该尝试不是可疑的。同样地,可以截取对在虚拟存储器1204的页面8或在物理存储器1203的地址(H)处的Fn2的已尝试执行。如果该已尝试执行是从用户输入做出的,那么,可以判断该执行不是可疑的。如果已尝试执行是从另一程序的存储器做出的,且该程序不在经核准列表上,那么,可以判断该尝试是可疑的或恶意的。[0319]在另一示例中,如果Fnl是出于互操作性的目的通常向其他应用公开其高速缓存的web浏览器,则0/S下层安全代理1220可以允许Fnl的存储器页面或存储器地址的指定部分由其他应用读取。然而,如果Fnl包含应保持私有的元数据或其他信息,那么,0/S下层安全代理1220可以保护Fnl的存储器页面或存储器地址的那些部分免遭来自不同于Fnl自身的任何进程的读取。[0320]一旦已经判断程序是可疑的、恶意的或以另外方式指示恶意软件,那么,0/S下层安全代理1220可以采取任何合适的矫正动作。0/S下层安全代理1220可以,例如,拒绝对虚拟存储器1204的存储器页面2或物理存储器1203的地址(J)的写请求,但仍返回该值被写入的所得到的指示。可以监视产生该请求的进程以便发现对访问电子设备1201的资源的附加尝试,可以停止该进程,或者可以从电子设备1201清除该进程。在另一示例中,对虚拟存储器1204的页面8或物理存储器1203的地址(H)的已尝试执行可以改为涉及蜜罐(honeypot)进程或清除进程的执行。[0321]受0/S下层安全代理1220保护的存储器的内容可以包括可能受到恶意软件攻击的数据、代码或任何其他有用的系统资源。Ο/s下层安全代理1220可以保护存储器的内容免遭恶意软件,该恶意软件尝试例如读、写或钩住显示在电子设备1201上运行的进程的机制、把其代码注射到被加载在存储器中的应用的部分、或改变虚拟存储器1204的映射表的权限和访问标志。通过在低于操作系统1213的级别操作,0/S下层安全代理1220可以避免在操作系统1213中以内核模式级别运行的恶意软件。0/S下层安全代理1220可以完成零日检测,这是由于在一些情况中不需要请求实体的身份先前已经被判断为是恶意的知识——实体是未知的这一事实可以被用来拒绝对电子设备1201的存储器的一些部分的访问。如果操作系统1213或在操作系统1213中运行的反病毒或反恶意软件措施被完全危害,则可以完全锁定存储器,使之免遭在操作系统的级别运行的实体。[0322]0/S下层安全代理1220的一个应用可以是甚至在尝试对特定内容读、写或执行之前就通过检测对特定存储器页面的权限的改变来检测对虚拟存储器1204的内容的已尝试访问。MMU1214所使用的存储器表可以驻留在存储器中、在虚拟存储器1204的页面自身中和/或在物理存储器1203的地址中。对改变存储器表的值例如把进程的代码部分的权限从“读”改变为“写”的尝试,本身可以被0/S下层安全代理1220捕获。存储器虚拟存储器1204的页面或物理存储器1203的地址可以受0/S下层安全代理1220保护,且对于把新值写到这样的位置的权限的已捕获尝试,0/S下层安全代理1220可以判断是否允许该尝试的请求者做出这样的改变。例如,如果改变进程的代码部分的权限的请求起因于不同的进程,则可以拒绝对权限的尝试改变。[0323]图14是使用对电子设备的已尝试访问的操作系统下层捕获来保护存储器的方法1400的示例实施例。在步骤1405,可以映射电子设备的虚拟存储器或物理存储器以便确定存储器的内容的身份或所有者。为了映射存储器,例如,可以访问保护服务器;可以跟踪存储器的读、写和执行;和/或扫描存储器的内容并为该内容产生和签名。[0324]在步骤1410,可以访问安全规则以便在步骤1415确定要保护的物理存储器的地址或虚拟存储器的页面。要保护的存储器可以取决于,例如,安全规则,电子设备的用户,诸如恶意软件的指示、对访问受保护存储器的先前尝试之类的在电子设备中其他观察到的行为,或管理员设置。要保护的存储器可以动态地改变,这是由于电子设备的操作条件可以改变。安全规则可以指定要保护的电子设备的实体,且可以通过访问存储器映射来确定该实体在物理或虚拟存储器中的位置。[0325]在步骤1420,可以根据安全规则要求在控制结构中设置标志以便捕获对存储器的已尝试访问。可以为虚拟存储器的页面和/或物理存储器的地址设置这样的标志。标志可以包含要保护的存储器的指示以及要标识的访问方法的种类(例如一读、写或执行)。在步骤1425,可以监视对受保护存储器的访问以便查看是否已经对已指派的地址或页面做出对所指派的类型的已尝试访问。在步骤1430,可以判断是否已经捕获对访问存储器的尝试。如果不是,那么,在步骤1435可以判断要保护的存储器的标志是否要求改变。如果是,那么,方法1400可以返回到步骤1410以便访问安全规则以更新用户保护对存储器的访问的标志。如果不是,那么,方法1400可以返回到步骤1425以便监视对受保护存储器的已尝试访问。[0326]如果已经捕获对访问存储器的尝试,那么,在步骤1440开始,可以评估已捕获尝试。为了评估该尝试,可以查询存储器映射以判断从何处做出请求,并标识请求者。可以确定和评估要写的数据的值以便发现它们的内容。可以考虑尝试的本质一读、写或执行。可以与安全规则联合使用这些示例考虑,以便在步骤1445判断已尝试访问是否指示恶意软件。如果已尝试访问指示恶意软件,那么,在步骤1450,可以采取矫正动作。这样的矫正动作可以包括拒绝所请求的访问、返回经欺骗的值或发起蜜罐进程或矫正进程。如果已尝试访问不指示恶意软件,那么,在步骤1455可以允许该请求。方法1400可以根据继续保护电子设备的存储器的要求返回到步骤1425。[0327]图15是用于保护电子设备1504的操作系统1512内核的系统的示例实施例。系统1500可以包括0/S下层安全代理1516,0/S下层安全代理1516被配置为在电子设备1504上操作,以便防备恶意软件对访问操作系统1512的组件(例如,函数、数据和/或其他组件)以及与操作系统相关联的可信驱动程序的尝试。此外,0/S下层安全代理1516可以被配置为使用一个或多个安全规则1522来判断捕获什么尝试操作以及如何响应这样的已捕获操作。0/S下层安全代理1516可以被配置为对已捕获操作允许、拒绝或采取其他矫正动作。[0328]如图15中所示出,电子设备1504可以包括被耦合到存储器1508的处理器1506、一个或多个应用1510、一个或多个驱动程序1511、操作系统1512、0/S下层安全代理1516和安全规则1522。电子设备1504可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701、图9的电子设备901、图1201的电子设备和/或其任何组合实现,或者被配置为实现它们的功能性。处理器1506可以被全部地或部分地由图2的处理器208、图4的处理器408、图7的处理器702、图9的处理器902、图12的处理器1202和/或其任何组合实现,或者被配置为实现它们的功能性。存储器1508可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703、图9的存储器903、物理存储器1203或图12的虚拟存储器和/或其任何组合实现,或者被配置为实现它们的功能性。应用1510可以全部地或部分地由图1的应用110、图2的应用210、图4的应用410、图7的应用709、图9的应用910、图12的应用1210和/或其任何组合实现,或者被配置为实现它们的功能性。驱动程序1511可以全部地或部分地由图1的驱动程序111、图2的驱动程序211、图4的驱动程序411、图7的驱动程序711、图9的驱动程序911、图12的驱动程序1211和/或其任何组合实现,或者被配置为实现它们的功能性。操作系统1512可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图9的操作系统913、图12的操作系统1213和/或其任何组合实现,或者被配置为实现它们的功能性。0/S下层安全代理1516可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442,PC固件安全代理444或0/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708、图9的0/S下层捕获代理920、图12的0/S下层安全代理1220和/或其任何组合实现,或者被配置为实现它们的功能性。[0329]如图15中所示出,0/S下层安全代理1516可以包括安全规则1522。安全规则1522可以由图1的安全规则114、图2的安全规则222、图4的安全规则434、436、438、图5的安全规则518、或图7的安全规则707、723、图9的安全规则908、图12的安全规则1208和/或其任何组合实现,或者被配置为实现它们的功能性。可以以任何合适的方式(例如,由电子设备1504的用户设置的政策、包括电子设备1504的企业的管理员设置的政策、0/S下层安全代理1516的创建者设置的政策等等)建立安全规则1522。在一些实施例中,Ο/S下层安全代理1516可以从保护服务器202经由网络244请求和/或接收对安全规则1522的更新或修改(例如,由于对恶意软件定义的更新)。[0330]如图15中所示出,安全规则1522可以包括访问映射1562和政策1564。访问映射1562可以包括陈述操作系统1512的各种个体组件(例如,函数,数据和/或其他组件)和驱动程序1511的一个或多个可信访问以及关于一个或多个可信访问的上下文信息的日志、列表、映射或其他数据结构。图16是访问映射1562的示例实施例。在某些实施例中,可以通过仿真另一电子设备(例如,图18的电子设备1800)上充分地免遭恶意软件的操作系统(例如,图18的操作系统1812)及其充分地免遭恶意软件的可信驱动程序(例如,可信驱动程序1811)的执行来创建访问映射1562。下面相对于图18和19进一步详述根据这样的实施例的访问映射1562的创建。如图16中所示出,访问映射1562可以包括一个或多个函数访问子映射1602、一个或多个数据访问子映射1604和/或一个或多个栈区访问映射1606。[0331]对于操作系统1512或可信驱动程序1511的特定函数,函数访问子映射1602可以定义其他可信函数对特定函数的可信访问。函数访问子映射1602也可以包括与对函数的这样的可信访问相关联的上下文信息,在一些实施例中,这样的上下文信息包括特定驱动程序内可信访问的调用函数位于其中的代码段(例如,如由存储器位置所标识的)。[0332]对于操作系统1512或驱动程序1511的特定数据项,数据访问子映射1604可以定义可信函数对特定数据的可信访问。数据访问子映射1604也可以包括与对数据项的这样的可信访问相关联的上下文信息,在一些实施例中,这样的上下文信息包括与可信函数相关联的特定存储器位置,在其中可信函数位于特定的驱动程序内和/或可信访问是读访问还是写访问的代码段(例如,如由存储器位置所标识的)。[0333]栈区访问子映射1606可以定义描述在多个函数当中的经准许的调用关系的函数栈区。在栈区访问子映射1606中,栈区中的每一特定函数访问在函数栈区中出现在它下面的函数是受到信任的。栈区访问子映射1606可以包括与函数访问子映射1602的上下文信息类似的上下文信息。栈区访问子映射1606可以示出,例如,特定的函数F2可以调用函数F3,且函数F3可以调用F4,而F4调用F3以及F3调用F2不是可信的函数调用路径。[0334]在访问映射1562中陈述的各种函数、数据、代码段、驱动程序和其他实体的身份可以由在存储器中特定的函数、数据、代码部分、驱动程序或实体被存储在其中的存储器位置(例如,物理存储器地址或虚拟存储器地址)来定义。图17是进一步阐释在图16的示例访问映射1562中所定义的函数和数据当中的相互关系的虚拟存储器1700的示例实施例。如图17中所叙述的,存储器1700可以包括分别位于存储器地址1701、1706、1710和1714的驱动程序Yl、Y2、Y3和Y4。驱动程序Yl可以包括在地址1702处的代码部分Xl内的地址1703处的函数F1。驱动程序Yl也可以包括在地址1704处的数据部分Dl内的数据指针1705。驱动程序Y2可以包括在地址1707处的代码部分X2内的地址1708处的函数F2。驱动程序Y3可以包括在地址1711处的代码部分X3内的地址1712处的函数F3。驱动程序Y4可以包括在地址1715处的代码部分X3内的地址1716处的函数F4。函数F2的存储器地址Z2可以驻留在存储器位置1709。函数F3的存储器地址Z3可以驻留在存储器位置1713。函数F4的存储器地址Z4可以驻留在存储器位置1717。图17中各种箭头描绘在图16的访问映射1562陈述的函数和数据当中的可信访问。例如,函数访问子映射1602可信访问由以下箭头叙述:指示在地址1708处的函数F2和地址1703处的函数Fl之间的可信执行调用的箭头、指示在地址1712处的函数F3和地址1703处的函数Fl之间的可信执行调用的箭头、以及指示在地址1716处的函数F4和地址1703处的函数Fl之间的可信执行调用的箭头。[0335]返回到图15,政策1564可以包括陈述要应用的政策以便定义要由0/S下层安全代理1516捕获的事件和/或已捕获事件的应对的日志、列表或其他数据结构。在特定的实施例中,政策可以规定,响应于驱动程序函数对操作系统1512或可信驱动程序1511的存储器存储组件的一部分的已尝试访问(例如,读、写、执行、函数调用,如果访问映射1562中的条目指示这样的驱动程序函数拥有对这样的组件的访问权(包括,在一些实施例中,指示驱动程序函数出现在驱动程序的特定代码部分中,如访问映射1562中所定义的),则0/S下层安全代理1516可以允许这样的尝试访问。在相同的或替代的实施例中,政策可以规定,响应于驱动程序函数对操作系统1512或可信驱动程序1511的存储器存储组件的一部分的已尝试访问(例如,读、写、执行、函数调用),如果访问映射1562中没有条目指示这样的驱动程序函数拥有对这样的组件的访问权(包括,在一些实施例中,指示驱动程序函数出现在驱动程序的特定代码部分中,如访问映射1562中所定义的),则0/S下层安全代理1516可以拒绝这样的尝试访问。在这些和其他实施例中,政策可以规定,对于未知的驱动程序函数对操作系统1512或可信驱动程序1511的组件的已尝试访问,可以允许某些已尝试访问,且拒绝其他已尝试访问,和/或关于这样的访问的信息可以作为取证迹象而被传输到保护服务器202,以供进一步分析。[0336]在操作中,0/S下层安全代理1516可以根据在本公开内容中陈述的任何捕获技术捕获对操作系统1512和驱动程序1511的组件的已尝试访问。在一些实施例中,0/S下层安全代理1516可以根据安全规则1522捕获事件。响应于捕获对操作系统1512和驱动程序1511的组件的已尝试访问,0/S下层安全代理1516可以把与已尝试访问相关联的上下文信息与访问映射1562进行比较,以判断该已尝试访问是否可信。如果已尝试访问是可信的(例如,如果已尝试访问在访问映射1562中具有相应的条目),则0/S下层安全代理1516可以允许访问。如果已尝试访问是不可信的(例如,如果已尝试访问在访问映射1562中不具有相应的条目),0/S下层安全代理1516可以发起矫正动作。矫正动作可以包括拒绝已尝试访问、查询政策1564以便判断允许还是拒绝访问、和/或把关于这样的访问取证数据(例如,上下文信息)报告给保护服务器202以供进一步处理。因此,0/S下层安全代理1516连同访问映射1562和政策1564,可以防备对操作系统1512和驱动程序1511的组件的恶意攻击。[0337]在一些实施例中,政策1564可以规定,由0/S下层安全代理1516响应于非可信尝试访问而发起的矫正动作可以取决于是潜在地非恶意的实体还是潜在地恶意的实体实施已尝试访问。潜在地恶意的实体可以是0/S下层安全代理1516未知(例如,不出现在白名单或黑名单中的任何中)的、发起非可信已尝试访问(例如,在访问映射1562中不具有相应的条目)的以及表现出指示潜在的恶意软件的存在行为(例如,尝试访问电子设备1504的敏感资源,尝试访问子函数而没有使用操作系统1512提供的函数路线等等)的应用、驱动程序或其他实体。潜在地非恶意的实体可以是不以另外方式被认为是潜在地恶意的实体的任何实体。在潜在地非恶意的实体情况中,政策1564可以允许某些已尝试访问而拒绝其他。例如,对于潜在地非恶意的实体,可以允许网络调用和文件系统调用,而可以拒绝对修改内部网络分派例程指针、修改内部网络驱动程序接口规范(NDIS)指针、或写入到内核代码部分、数据部分或系统服务分派表(SSDT)的已尝试访问。另一方面,对于潜在地恶意的实体,可以拒绝所有尝试访问。[0338]在其他实施例中,政策1564可以规定,可以允许未知实体(例如,不出现在白名单或黑名单中的实体)有限制地执行一次已尝试访问,在此之后可以把关于访问的信息传输给保护服务器202且进一步评估以判断任何进一步的矫正动作。[0339]图18是用于产生访问映射1562的系统1800的示例实施例。系统1800可以包括0/S下层安全代理1816,0/S下层安全代理1816被配置为在电子设备1804上操作以便基于所观察到的操作系统1812和可信驱动程序1811的行为在访问映射1562中产生条目。如图18中所示出的,电子设备1804可以包括处理器1806、存储器1808、驱动程序1811、操作系统1812和0/S下层安全代理1816。电子设备1804可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701、图9的电子设备901、图1201的电子设备和/或其任何组合实现,或者被配置为实现它们的功能性。[0340]处理器1806可以包括,例如微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)或被配置为解释和/或执行程序指令和/或进程数据的任何其他数字或模拟电路。在一些实施例中,处理器1806可以解释和/或执行被存储在存储器1808中的程序指令和/或处理数据。存储器1808可以部分地或整体地被配置为应用存储器、系统存储器或两者。存储器1808可以包括被配置为持有和/或容纳一个或多个存储器模块的任何系统、设备或装置;例如,存储器1808可以包括只读存储器、随机存取存储器、固态存储器、或基于盘的存储器。每一存储器模块可以包括被配置为在一段时间内保留程序指令和/或数据的任何系统、设备或装置(例如,计算机可读的非暂态介质)。[0341]0/S下层安全代理1816可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442、PC固件安全代理444、或0/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708、图9的0/S下层捕获代理920、图12的0/S下层安全代理1220、图15的0/S下层安全代理1516和/或其任何组合实现,或者被配置为实现它们的功能性。[0342]操作系统1812可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图9的操作系统913、图12的操作系统1213、图15的操作系统1512和/或任何组合实现,或者被配置为它们的实现功能性。可信驱动程序1811可以全部地或部分地由图1的驱动程序111、图2的驱动程序211、图4的驱动程序411、图7的驱动程序711、图9的驱动程序911、图12的驱动程序1211、图15的驱动程序1511和/或其任何组合实现,或者被配置为实现它们的功能性。然而,结合在电子设备1804中的使用,操作系统1812可以免遭恶意软件且可信驱动程序1811可以仅包括已知是非恶意的且免遭恶意软件的那些驱动程序。例如,可以对电子设备1804多加小心,以便确保操作1812和可信驱动程序1811不包括恶意实体。作为特定的示例,操作系统1812和可信驱动程序1811可以被安装在电子设备1804的空的或新近格式化的计算机可读介质上,且可以小心保证没有不同于0/S下层安全代理1816的其他实体被安装在电子设备1804。[0343]在操作中,0/S下层安全代理1816可以根据在本公开内容中陈述的任何捕获技术捕获对操作系统1812和可信驱动程序1811的组件的已尝试访问。响应于捕获对系统1812和可信驱动程序1811的组件的访问,Ο/S下层安全代理1816可以确定与访问相关联的上下文信息并存储访问的记录和上下文信息(例如,作为函数访问子映射1602、数据访问子映射1604、函数栈区访问子映射1606或其他合适的方式的一部分)。因而,充分地免遭恶意软件的电子设备1804的执行和在操作系统1812及其可信驱动程序1811当中的可信信赖可以由Ο/S下层安全代理1816观察到,以产生访问映射1562的条目,其中,每一条目定义对操作系统1812或可信驱动程序1811的组件的可信访问。因为基于已知充分地免遭恶意软件的实体的仿真执行产生访问映射1562的条目,访问映射1562可以包括操作系统1812及其可信驱动程序1811的标准预期行为的表示,而没有附加实体。因而,访问映射1562可以仅包括拥有对操作系统1812及其可信驱动程序1811的组件的合法、非恶意的访问权的条目。[0344]因此,一旦电子设备1804的0/S下层安全代理1816产生访问映射1562,就可以使得访问映射1562对0/S下层安全代理1516可用(例如,通过经由网络244访问访问映射1562,通过把访问映射下载到电子设备1504,通过经由计算机可读存储介质传递到电子设备1504等等),其中如上所述,0/S下层安全代理1516可以捕获对操作系统1512和/或驱动程序1511的组件的已尝试访问,以判断已尝试访问中哪些是可信的或非可信的,并基于这样的判断采取进一步的动作。结果,0/S下层安全代理可以保护操作系统1512和可信驱动程序1511免遭恶意访问。[0345]图19是用于保护电子设备的操作系统内核的方法1900的示例实施例。在方法1900,在其上安装有充分地免遭恶意软件的操作系统和关联可信驱动程序的第一电子设备上执行的第一0/S下层安全代理可以被用来创建访问映射(例如参见步骤1905-1910)。另外,在第二电子设备上执行的第二0/S下层安全代理可以通过引用访问映射来保护被安装在第二电子设备上的第二操作系统及其相关的驱动程序的组件(例如参见步骤1915-1930)。[0346]在步骤1905,在其上安装有充分地免遭恶意软件的操作系统和关联可信驱动程序的第一电子设备上运行的第一0/S下层安全代理可以捕获对操作系统和/或可信驱动程序的组件(例如,函数和数据)的访问。在步骤1910,第一0/S下层安全代理可以把关于访问的信息(包括与访问相关联的上下文信息)记录到访问映射。相对于另一调用函数对函数的访问,这样的上下文信息可以包括其中可信访问的调用函数位于特定的驱动程序内的代码段(例如,由存储器位置所标识的)。相对于调用函数对数据项的访问,这样的上下文信息可以包括与可信函数相关联的特定存储器寄存器、其中可信函数位于特定的驱动程序内和/或可信访问是读访问还是写访问的代码段。[0347]在步骤1915,在第二电子设备上执行的第二0/S下层安全代理可以捕获对在第二电子设备上执行的操作系统和/或驱动程序的组件的已尝试访问。在步骤1920,响应于捕获对组件的已尝试访问,第二0/S下层安全代理可以把与已尝试访问相关联的上下文信息与访问映射进行比较,以判断已尝试访问是否可信。如果已尝试访问在访问映射中具有相应的条目,则已尝试访问可以是可信的。如果已尝试访问是可信的,则法1900可以进行到步骤1925。如果已尝试访问是不可信的,则法1900可以进行到步骤1930。[0348]在步骤1925,响应于判断已尝试访问是可信的,第二0/S下层安全代理可以允许已尝试访问。在完成步骤1925之后,方法1900可以再次进行到步骤1915。[0349]在步骤1930,响应于判断已尝试访问是不可信的,第二0/S下层安全代理可以发起矫正动作。矫正动作可以包括拒绝已尝试访问、查询政策以便判断允许还是拒绝访问和/或把关于这样的访问的取证数据(forensicdata)(例如,上下文信息)报告给保护服务器以供进一步处理。在完成步骤1925之后,方法1900可以再次进行到步骤1915。[0350]图20是提供操作系统执行环境以便安全地执行操作系统的、被配置为保护电子设备2001免遭恶意软件的系统2000的示例实施例。来自图20的元素可以与图21和图22中它们的同名配对物相同。系统2000可以包括被配置为提供操作系统执行环境2008(“OSEE”)的受保护起动的起动模块2020。起动模块2020可以被配置为通过确保诸如操作系统(“0/S”)下层安全代理2004、操作系统2012和0/S内部安全代理2016之类的0SEE2008的组件在起动之前不受恶意软件禁用来提供0SEE2008的受保护起动。在起动模块2020成功地提供0SEE2008的安全起动之后,0SEE2008的诸如0/S下层安全代理2004和0/S内部安全代理2016之类的组件,可以协作以便防止恶意软件感染电子设备2001的诸如起动模块2020之类的组件。[0351]电子设备2001可以包括被配置为提供0SEE2008的受保护起动的起动模块2020。0SEE2008可以包括0/S下层安全代理2004和0/S内部安全代理2016以提供用于执行一个或多个操作系统2012的安全环境。电子设备2001也可以通信上耦合到保护服务器2022,以便辅助提供用于执行一个或多个操作系统2012的安全环境。保护服务器2022可以包括备份存储设备2024。电子设备2001可以全部地或部分地由图1的电子设备103、图2的电子设备104、图4的电子设备404、图7的电子设备701和/或其任何组合实现,或者被配置为实现它们的功能性。电子设备2001可以包括资源2026,例如一个或更多处理器2002、存储器2003或存储设备2006。处理器2002可以全部地或部分地由图2的处理器208、图4的处理器406、图7的处理器702和/或其任何组合实现,或者被配置为实现它们的功能性。存储器2003可以全部地或部分地由图2的存储器207、图4的存储器408、图7的存储器703和/或其任何组合实现,或者被配置为实现它们的功能性。操作系统2012可以由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713和/或其任何组合实现,或者被配置为实现它们的功能性。可以在图22的0/S内部安全代理2206的讨论中找到0/S内部安全代理2016的示例实施例的描述。可以在图22的0/S下层安全代理2208的讨论中找到0/S下层安全代理2004的示例实施例的描述。[0352]存储设备2006可以由图1的资源106、图2的系统资源214、图4的存储426、图5的I/o设备502和/或其任何组合实现,或者被配置为实现它们的功能性。存储设备2006可以包括用于存储数据或其他信息的任何合适的资源。例如,存储设备2006可以包括但不限于直接访问存储设备(例如,硬盘驱动器或软盘)、连续访问存储设备(例如,磁带磁盘驱动器)、紧致盘、⑶-ROM、DVD、随机存取存储器(RAM)和/或闪速存储器(例如,基于闪存的固态驱动器)。存储设备2006可以被分割成一个或多个扇区,每一扇区能够存储固定量的数据。例如,存储设备2006可以被分割成每个512字节的扇区,但可以使用任何合适的扇区大小。在各种实施例中,存储设备2006可以被定位为远离电子设备2001,例如在保护服务器2022上。在其他实施例中,存储设备2006可以是电子设备2001的本地资源2026。[0353]备份存储设备2024可以包括用于存储数据或其他信息的任何合适的资源。例如,备份存储设备2024可以由存储设备2006实现,或者被配置为实现它的功能性。备份存储设备2024可以由电子设备2001的诸如存储设备2006之类的本地存储设备实现。在其他实施例中,备份存储设备2024可以由位于网络上的远程存储设备实现,例如在保护服务器2022上。如果备份存储设备2024位于网络上,则Ο/S下层安全代理2004可以使用网络连接来访问备份存储设备2024。可以在低于操作系统2012的优先级水平实现网络连接以便避免使用操作系统内核的网络设备驱动程序,网络设备驱动程序可能感染恶意软件。可以使用主动管理技术(AMT)来实现网络连接,主动管理技术可以允许通过直接地访问电子设备2001的网卡使用HTTPS、iSCS1、NFS或CIFS客户机来访问备份存储设备2024。在这样的实施例中,尽管访问备份存储设备2024要求有网络连接,但备份存储设备2024可以与在电子设备2001的操作系统2012上执行的任何恶意软件隔离。[0354]保护服务器2022可以被定位为远离电子设备2001且可以被配置为与电子设备2001的诸如起动模块2020、0/S下层安全代理2004和0/S内部安全代理2001之类的组件通信,以提供安全规则2018或发送和接收其他信息。例如,保护服务器2022可以接收关于对访问资源2026的可疑尝试的信息且可以存储这种信息以供随后分析。保护服务器2022可以由图1的保护服务器102、图2的保护服务器202和/或其任何组合实现,或者被配置为实现它们的功能性。[0355]安全规则2018可以包括任何合适的规则、逻辑、命令、指令、标志或用于指定要求捕获的事件和每一事件的适当响应的其他机制。安全规则2018可以由图1的安全规则114、图2的安全规则220、222、图4的安全规则420、422、434、436、438、图5的安全规则518、图7的安全规则707、721、723和/或其任何组合实现,或者被配置为实现它们的功能性。[0356]起动模块2020可以被配置为通过确保0SEE2008的诸如0/S下层安全代理2004、操作系统2012和0/S内部安全代理2016之类的组件在起动之前不被恶意软件禁用来提供0SEE2008的受保护起动。起动模块2020可以通过检验与0/S下层安全代理2004、操作系统2012和0/S内部安全代理2016相关联的一个或多个受保护文件的完整性来估定0/S下层安全代理2004、操作系统2012和0/S内部安全代理2016是否被恶意软件禁用。如果起动模块2020在任何受保护文件中检测到恶意软件,则起动模块2020可以被配置为从备份副本还原受保护文件。在起动模块2020验证0SEE2008的组件不被恶意软件禁用或起动模块2020成功地恢复被恶意软件禁用的0SEE2008的任何组件之后,起动模块2020可以起动0SEE2008。在起动0SEE2008时,起动模块2020可以在起动诸如操作系统2012之类的0SEE2008的其他组件之前起动0/S下层安全代理2004。[0357]在起动模块2020成功地提供0SEE2008的安全起动之后,诸如0/S下层安全代理2004和0/S内部安全代理2016之类的0SEE2008的组件可以协作以便防止恶意软件感染电子设备2001的资源2026。例如,0/S下层安全代理2004和/或0/S内部安全代理2016可以被配置为截取对访问存储设备2026上的各种受保护文件的尝试,如安全规则2018所指定的。受保护文件可以包括与起动模块2020、0/S下层安全代理2004、或0/S内部安全代理2016、或操作系统2012的核心文件相关联的文件。保护这些文件免遭恶意软件可以帮助确保这些组件所采用的防护设施不被恶意软件破坏。例如,通过在操作系统2012执行的同时保护起动模块2020免遭恶意软件,电子设备2001的下次启动起动模块2020将免遭恶意软件。以这种方式,在电子设备2001被引导时可以由起动模块2020检查诸如0/S下层安全代理2004、0/S内部安全代理2016和操作系统2012之类的0SEE2008的组件以便发现恶意软件,且在操作系统2012执行的同时可以由0SEE2008的组件保护起动模块2020免遭恶意软件。[0358]图21是用于提供受保护操作系统执行环境的系统中的起动模块2102的示例实施例。来自图21的元素可以与图20和图22中它们的同名配对物相同。例如,可以使用起动模块2102来实现来自图20的系统的起动模块2020或来自图22的系统的起动模块2226的功能性。起动模块2102可以被配置为通过安全地起动0/S下层安全代理2128、操作系统2124和0/S内部安全代理2126提供受保护操作系统执行环境2122。[0359]起动模块2102可以包括引导代理2104、受保护起动代理2110和恢复代理2112。引导代理2104可以被配置为确保,在电子设备2101启动时,在操作系统2124和任何其他软件(例如,恶意软件)之前引导受保护起动代理2110。受保护起动代理2110可以被配置为安全地起动0SEE2122。0SEE2122可以是用于安全地执行操作系统2124的执行环境。通过利用安全规则2116来判断0/S下层安全代理2128、操作系统2124和/或0/S内部安全代理2126是否已经感染了恶意软件,受保护起动代理2110可以提供0SEE2122的受保护起动。例如,通过扫描存储设备2114上每一组件的盘映像以便发现已知的模式的恶意软件、通过比较每一组件的盘映像的密码散列值、和/或通过使用检测恶意软件的任何其他合适的方法,受保护起动代理2110可以检查0SEE2122的组件以便发现恶意软件。如果受保护起动代理2110检测到恶意软件感染,则可以利用恢复代理2112来从恶意软件感染恢复。如果受保护起动代理2110没有检测到恶意软件感染,或者如果恢复代理2112完成了成功恢复,则受保护起动代理2110可以被配置为起动0/S下层安全代理2128、操作系统2124和/或0/S内部安全代理2126。0/S下层安全代理2128可以由图22的0/S下层安全代理2208实现,或者被配置为实现它的功能性。0/S内部安全代理2126可以由图22的0/S内部安全代理2206实现,或者被配置为实现它的功能性。操作系统2124可以由图20的操作系统2012实现,或者被配置为实现它的功能性。存储设备2114可以由图20的存储设备2006实现,或者被配置为实现它的功能性。安全规则2116可以由图20的安全规则2018实现,或者被配置为实现它的功能性。[0360]引导代理2104可以包括主引导记录(“MBR”)管理器2106和引导程序加载器2108,且可以被配置为确保在电子设备2101启动时,在操作系统2124和诸如恶意软件之类的任何其他软件之前引导受保护起动代理2110。MBR管理器2106可以被配置为用引导程序加载器2108替换存储设备2114上的现有MBR2130。MBR2130可以位于存储设备的第一扇区(即,扇区0),且可以负责在电子设备2101启动时引导操作系统2124或其他软件。通过用引导程序加载器2108替换MBR2130,引导程序加载器2108可以变成新的MBR2130。将不执行原始MBR2130,且因此,将不引导与原始MBR2130相关联的操作系统2124或其他软件。相反,在电子设备2101启动时,由于引导程序加载器2108已经变成了新的MBR2130,将执行引导程序加载器2108。引导程序加载器2108可以被配置为引导受保护起动代理2110,受保护起动代理2110负责起动0SEE2122。以这种方式,可以在操作系统2124和/或任何其他软件之前弓I导受保护起动代理2110,允许受保护起动代理2110在加载0/S下层安全代理2128、0/S内部安全代理2126和/或操作系统2124之前检查恶意软件。[0361]受保护起动代理2110可以被配置为起动0SEE2122。0SEE2122可以被配置成用于安全地执行操作系统2124的执行环境,且可以包括0/S下层安全代理2128、操作系统2124和/或Ο/S内部安全代理2126。受保护起动代理2110可以由能够提供盘I/O功能性、网络I/O功能性、和基本控制台I/O功能性的瘦嵌入式操作系统实现。在另一实施例中,受保护起动代理2110可以由Ο/S下层安全代理2128实现。受保护起动代理2110可以被配置为检测Ο/S下层安全代理2128、操作系统2124和/或Ο/S内部安全代理2126是否已经感染了恶意软件。为了检测恶意软件感染,受保护起动代理2110可以使用密码散列算法来验证与Ο/S下层安全代理2128、操作系统2124和/或Ο/S内部安全代理2126相关联的各种受保护文件2120的完整性。受保护文件可以包括,例如,MBR2130、操作系统2124的核心文件和Ο/S下层安全代理2128和/或Ο/S内部安全代理2126的可执行映像。为了验证受保护文件2120的完整性,受保护起动代理2110可以使用散列算法来计算受保护文件2120的散列值。然后,可以把所计算散列值与先前产生的受保护文件2120的散列值进行比较。如果散列值不同,那么,受保护文件2120可能已经被恶意软件修改或变更。在各种实施例中,安全代理2110可以利用盘映射位图(“DMB”)2118来验证受保护文件2120的完整性。盘映射位图2118可以指定每一受保护文件2120在存储设备2114上的位置,且也可以提供先前产生的每一受保护文件2120的散列值。可以在来自图23的盘映射位图2301的讨论中找到盘映射位图2118的示例实施例的描述。受保护起动代理2110可以查阅盘映射位图2118,以便标识受保护文件2120在存储设备2114上的位置、计算受保护文件2120的散列值并将所计算的散列值与由盘映射位图2118提供的先前所产生的散列值进行比较。如果受保护文件2120的散列值不匹配,则受保护文件2120可能已经被恶意软件变更或修改。受保护起动代理2110可以起动恢复代理2112以便从潜在的恶意软件感染恢复。如果没有检测到潜在的恶意软件感染,或者如果由恢复代理2112成功地恢复所有潜在被感染的文件,则受保护起动代理2110可以进行到加载Ο/S下层安全代理2128、操作系统2124和Ο/S内部安全代理2126。安全起动代理2110可以被配置为在起动OSEE2122之后终止。[0362]恢复代理2112可以被配置为从与0/S下层安全代理2128、操作系统2124和/或0/S内部安全代理2126相关联的一个或多个受保护文件2120的恶意软件感染恢复。为了从恶意软件感染恢复,恢复代理2112可以被配置为从备份存储设备检索备份文件并用相应的备份文件替换受感染的受保护文件2120。备份文件可以本地存储在电子设备2101上,例如在存储设备2114上。备份文件也可以是被存储在远离电子设备2101的位置。例如,备份文件可以存储在网络上,例如在来自图20的保护服务器2022的备份存储设备2024上。可以维护备份文件的元数据,且其可以包括修订版本号以及创建备份文件的日期和时间。在把备份文件用于恢复受保护文件2120之前,恢复代理2112可以被配置为验证备份文件的完整性以便确保备份文件没有感染恶意软件。恢复代理2112可以以与受保护起动代理2110验证受保护文件2120的完整性类似的方式验证备份文件的完整性。例如,恢复代理2112可以计算备份文件的散列值且可以把所计算的散列值与来自盘映射位图2118的备份文件的相应散列值进行比较。如果散列值的比较指示备份文件可能感染了恶意软件,则不可以使用该备份文件和/或可以使用较旧的备份文件。恢复代理2112可以被配置为向受保护起动代理2110告知成功恢复,以便允许受保护起动代理2110进行起动0/S下层安全代理2128、操作系统2124、和0/S内部安全代理2126。[0363]图22是用于安全地执行操作系统的操作系统执行环境(“0SEE”)2202的示例实施例。来自图22的元素可以与图20和图21中它们的同名配对物相同。例如,可以使用0SEE2202来实现来自图20的0SEE2008或来自图21的OSEE2122的功能性。0SEE2202可以被配置成用于安全地执行操作系统2204的执行环境,且可以包括操作系统2204、Ο/S下层安全代理2208、Ο/S内部安全代理2206和/或盘安全代理2214。0SEE2202可以由起动模块2226安全地起动。此后,诸如Ο/S下层安全代理2208、0/S内部安全代理2206和盘安全代理2214之类的0SEE2202的组件可以协作以便防止恶意软件禁用电子设备2201的组件。例如,0SEE2202的组件可以协作以便保护起动模块2226免遭恶意软件。以这种方式保护起动模块2226可以帮助确保在电子设备2201的下次初始化中,不会破坏起动模块2226所使用的防护设施以便允许起动感染恶意软件的操作系统2204、0/S下层安全代理2208和/或Ο/S内部安全代理2206。[0364]0SEE2202可以包括0/S下层安全代理2208、操作系统2204、0/S内部安全代理2206和/或盘安全代理2214。0SEE2202可以由起动模块2226安全地起动。在起动模块2226成功地提供0SEE2202的安全起动之后,诸如0/S下层安全代理2208、0/S内部安全代理2206和盘安全代理2214之类的0SEE2202的组件可以协作以便防止恶意软件禁用诸如起动模块2226之类的电子设备2201的组件。[0365]0/S下层安全代理2208可以包括0/S下层捕获代理2210和已触发事件应对程序2212。0/S下层捕获代理2210可以由图1的0/S下层捕获代理104、图2的SVMM216、图4的固件安全代理440、442或PC固件安全代理444、图5的固件安全代理516、图7的微代码安全代理708和/或其任何组合实现,或者被配置为实现它们的功能性。已触发事件应对程序2010可以由图1的已触发事件应对程序108、图2的SVMM安全代理217、图4的0/S下层代理450、图7的0/S下层代理712和/或其任何组合实现,或者被配置为实现它们的功能性。在各种实施例中,0/S下层捕获代理2210的功能性中的一些可以由已触发事件应对程序2212实现,或已触发事件应对程序2212的功能性中的一些可以由0/S下层捕获代理2210实现。在一个实施例中,已触发事件应对程序2212可以与0/S下层安全代理2208相同的优先级水平操作。在另一实施例中,已触发事件应对程序2212可以被实现为0/S内部安全代理2206的部分,且可以在操作系统2204的优先级水平操作或者在高于操作系统2204的优先级水平操作。在再一个实施例中,已触发事件应对程序2212可以由两个或更多个已触发事件应对程序实现,其中,至少一个已触发事件应对程序在与0/S下层安全代理2208相同的优先级水平操作,且至少一个已触发事件应对程序在操作系统2204的优先级水平操作或在高于操作系统2204的优先级水平操作。[0366]0/S下层安全代理2208可以被配置为使用0/S下层捕获代理2210来截取对访问诸如存储设备2218之类的电子设备2201的资源的请求。在截取对访问存储设备2218的请求时,0/S下层捕获代理2210可以被配置为创建与已捕获访问尝试相关联的已触发事件,且可以被配置为把已触发事件发送给已触发事件应对程序2212以判断相对于该事件采取的适当动作。已触发事件可以包括诸如与请求相关联的存储设备2218的区域(例如,扇区和/或文件)、请求实体和所请求的访问的类型之类的信息。请求实体是负责发起请求的实体,例如操作系统2204、驱动程序2228或应用2230。所请求的访问的类型可以包括对读、写或执行来自存储设备2218的代码的请求。[0367]已触发事件应对程序2212可以被配置为接收和处理来自0/S下层捕获代理2210的已触发事件。已触发事件可以包含关于已经被0/S下层捕获代理2210捕获的、对访问存储设备2218的请求的信息。已触发事件应对程序2212可以被配置为结合与已触发事件相关联的上下文信息利用一个或多个安全规则2216来标识对访问存储设备2218的受保护区域的尝试,并且判断适当的响应。在标识对访问诸如受保护的扇区和/或文件之类的受保护区域的尝试之后,已触发事件应对程序2212可以被配置为查阅安全规则2216以便判断对访问受保护区域的尝试是否得到授权。已触发事件应对程序2212还可以被配置为向0/S下层安全代理2208提供适当动作的判断。例如,已触发事件应对程序2212可以告知0/S下层安全代理2208应当允许还是拒绝已触发事件,或者是否应当采取其他矫正动作。[0368]0/S内部安全代理2206可以全部地或部分地由图1的0/S内部安全代理218、图4的0/S内部安全代理418、图7的0/S内部安全代理719和/或其任何合适的组合实现,或者被配置为实现它们的功能性。0/S内部安全代理2206可以在操作系统2204的优先级水平执行或在高于操作系统2204的优先级水平执行,且可以被配置为查阅一个或多个安全规则2216以便保护电子设备2201免遭恶意软件。例如,安全规则2216可以要求0/S内部安全代理2206截取对访问存储设备2218上的某些受保护文件2222的尝试。安全规则2216还可以指定对访问受保护文件2222的特定尝试是否得到授权。然而,因为0/S内部安全代理2206在操作系统2204的优先级水平执行或在高于操作系统2204的优先级水平执行,0/S内部安全代理2206自身可能感染了在操作系统2204上执行的恶意软件,且0/S内部安全2206的防护设施可能被规避了。为了帮助防止这种可能性,0/S下层安全代理2208可以被配置为保护0/S内部安全代理2206免遭恶意软件。[0369]盘安全代理2214可以包括DMB产生器2232和盘保护器2234,且可以被用来保护诸如起动模块2226和0SEE2202的组件之类的电子设备2201的组件免遭恶意软件。盘安全代理2214可以以任何合适的方式实现。在一个实施例中,盘安全代理2214可以被实现为0/S下层安全代理2208的部分和/或可以在与0/S下层安全代理2208相同的优先级水平执行。在另一实施例中,盘安全代理2214可以被实现为0/S内部安全代理2206的部分和/或可以是在操作系统2204的优先级水平操作或在高于操作系统2204的优先级水平操作。在再一个实施例中,盘安全代理2214可以由两个或更多个盘安全代理实现,其中,至少一个盘安全代理在与0/S下层安全代理2208相同的优先级水平操作,且至少一个盘安全代理在操作系统2204的优先级水平操作或在高于操作系统2204的优先级水平操作。[0370]盘保护器2234可以被配置为通过截取对访问与这些组件相关联的各种受保护文件2222的未经授权的尝试来保护起动模块2226和0SEE2202的组件免遭恶意软件。受保护文件2222可以包括核心操作系统文件(例如,操作系统内核文件)、核心安全代理文件(例如,0/S下层安全代理2208和0/S内部安全代理2206的可执行映像)和/或这些文件的备份副本。通过截取对访问其中存储有受保护文件2222的存储设备2218的扇区的未经授权的尝试,盘保护器2234可以防止对受保护文件2222的未经授权的访问。在一些实施例中,盘保护器2234可以使用盘映射位图2220来标识受保护文件2222以及其中存储有受保护文件2222的存储设备2218上的扇区。可以在图23的盘映射位图2301的讨论中找到盘映射位图2220的示例实施例的描述。盘映射位图2220可以包含与各种受保护文件相关联的信息,例如,包括其中存储有每一受保护文件的存储设备的扇区或多个扇区。盘保护器2234可以查阅盘映射位图2220以便标识其中存储有受保护文件2222的存储设备2218的扇区。然后,盘保护器2234可以截取对访问与受保护文件2222相关联的扇区的尝试,且可以查阅安全规则2216以便判断该尝试是否得到授权。例如,安全规则2216可以指定,除非该请求是来自操作系统2204,否则应当拒绝对写入核心操作系统文件的请求。[0371]在一些实施例中,盘保护器2234的功能性可以由0/S下层安全代理2208的组件实现。通过把盘保护器2234实现为0/S下层安全代理2208的组件,盘保护器2234可以在低于操作系统2204的级别执行,且可以避免烦扰操作系统2204的大多数恶意软件。例如,可以由0/S下层捕获代理2210和已触发事件应对程序2212实现盘保护器2234的功能性。0/S下层捕获代理2210可以被配置为查阅盘映射位图2220以便标识要求保护的存储设备2218的扇区。0/S下层捕获代理可以还被配置为捕获对访问存储设备2218的已标识扇区的尝试,且可以利用安全规则2216来判断该尝试是否得到授权。以这种方式,可以保护由盘映射位图2220标识的受保护文件2222免遭未经授权的访问。[0372]在其他实施例中,盘保护器2234的功能性可以被实现为0/S内部安全代理2206的组件。例如,0/S内部安全代理2206可以包括盘过滤驱动程序以便实现盘保护器1133的功能性。过滤驱动程序可以是驱动程序2228,驱动程序2228可被插入到用于操作系统2204的特定设备的现有驱动程序栈区,且可以被用来补充先前存在的驱动程序功能性。例如,盘过滤驱动程序可以被插入到用于盘(例如,存储设备2218)的现有驱动程序栈区,且可以补充先前存在的盘驱动程序的功能性。通过查询盘映射位图2220以便标识要求保护的存储设备2218的扇区,盘过滤驱动程序可以实现盘保护器1133的功能性。然后,盘过滤驱动程序可以截取对访问存储设备2218的受保护扇区的尝试,且可以利用安全规则2216来判断该尝试是否得到授权。以这种方式,将保护由盘映射位图2220标识的受保护文件2222免遭未经授权的访问。然而,因为盘过滤驱动程序在操作系统2204的优先级水平执行或者在高于操作系统2204的优先级水平执行,盘过滤驱动程序可能自身感染了在操作系统2204上执行的恶意软件,且盘过滤驱动程序的防护设施可能被规避了。因此,在一些实施例中,盘保护器2234的功能性可以由0/S下层安全代理2208和0/S内部安全代理2206两者实现。例如,如上所述,0/S内部安全代理2206可以被配置为使用盘过滤驱动程序来截取对访问存储设备2218的未经授权的尝试,且0/S下层安全代理2208可以被实现为防止对修改存储器中或存储设备2218上的盘过滤驱动程序映像的未经授权的尝试,由此保护盘过滤驱动程序免遭在与操作系统2204相同的优先级水平运行的恶意软件的破坏。[0373]盘保护器2234还可以被配置为在关闭电子设备2201之前验证MBR的完整性。例如,在启动电子设备2201的关闭时,盘保护器2234可以被配置为计算MBR2224的散列值。然后,盘保护器2234可以查阅盘映射位图2220以便获得先前所产生的MBR2224的散列值且可以将所计算的散列值与先前所产生的散列值进行比较。如果散列值不同,那么,MBR2224可能已经被恶意软件变更,且盘保护器2234可以被配置为用备份副本替换MBR2224。以这种方式,在下次启动电子设备2201时,将不引导感染恶意软件的MBR2224。[0374]DMB产生器2232可以被配置为产生和更新盘映射位图2220。例如,DMB产生器2232可以被配置为确定其中存储每一受保护文件2222的存储设备2218上的扇区,且可以进一步被配置为产生每一受保护文件2222的散列值。DMB产生器2232可以把每一受保护文件2222的相应扇区和散列值存储在盘映射位图2220中。DMB产生器2220可以以任何合适的方式实现。例如,DMB产生器2220的功能性可以被实现为0/S下层安全代理2208或0/S内部安全代理2206的部分,或DMB产生器2220的功能性可以由0/S下层安全代理2208和Ο/S内部安全代理2206两者实现。[0375]在一个实施例中,DMB产生器2232可以通过截取对访问受保护文件2222的请求产生盘映射位图2220。例如,0/S内部安全代理2206可以包括文件系统过滤驱动程序,该文件系统过滤驱动程序被配置为截取对访问受保护文件2222的请求。文件系统过滤驱动程序截取针对文件系统或另一文件系统过滤驱动程序的请求。通过在请求到达其预期目标之前截取该请求,过滤驱动程序可以扩展或替换请求的原始目标提供的功能性。来自0/S内部安全代理2206的文件系统过滤驱动程序可以截取涉及受保护文件2222的文件I/O请求。然后,过滤驱动程序可以查询文件系统以便获得其中存储有受保护文件2222的内容的存储设备2218上的扇区。然后,过滤驱动程序可以访问文件系统的主格式表(MFT)以判断受保护文件2222的盘扇区布局。可以更新盘映射位图2220以便指定其中存储有受保护文件2222的所标识的扇区。如果没有为受保护文件2222产生散列值,则可以产生散列值,且可以更新盘映射位图2220以便包括新散列值。如果受保护文件2222被更新,则也可以产生新散列值并将其存储在盘映射位图2220中。例如,如果文件系统过滤驱动程序截取对写入受保护文件2222的请求,则需要使用受保护文件2222的经修改内容来产生新的散列值。[0376]图23是在用于提供受保护操作系统执行环境的系统或方法中使用的盘映射位图2301的示例实施例。例如,盘映射位图2301可以被用来实现图21的盘映射位图2118、图22的盘映射位图2220或图26的盘映射位图2628的功能性。盘映射位图2301可以是文件且可以包含与各种受保护的文件2302相关联的信息。例如,盘映射位图2301可以标识其中存储有每一受保护文件2302的存储设备的扇区2304,且可以包括每一受保护文件2302的散列值2306。盘映射位图2301可以被用来验证各种受保护文件2302的完整性。例如,图21的受保护起动代理2110和/或恢复代理2112可以使用来自盘映射位图2301的信息验证受保护文件2302的完整性。例如,可以由来自图22的DMB产生器2232产生盘映射位图2301。[0377]盘映射位图2301可以被存储在存储设备上的已指派扇区。已指派扇区可以驻留在被用来实现操作系统的文件系统的存储设备的相同部分。可以把已指派扇区标志为被占据以便防止各扇区被操作系统使用。也可以把存储设备进行分区,以便允许把盘映射位图2301存储在与操作系统不同的分区的已指派扇区。盘映射位图2301也可以是被存储在位于网络上的远程存储设备。例如,盘映射位图2301可以被存储在诸如来自图20的保护服务器2022或来自图26的保护服务器2602之类的保护服务器上。[0378]盘映射位图2301可以标识每一受保护文件2302、其中存储有受保护文件2302的存储设备的扇区或多个扇区2304和受保护文件2302的散列值2306。由盘映射位图2301标识的受保护文件2302可以包括核心安全代理文件2308、核心操作系统文件2310和备份文件2312。核心安全代理文件2308可以包括MBR和可执行的0/S下层安全代理和0/S内部安全代理。核心操作系统文件2310可以包括操作系统内核文件和其他操作系统文件。例如,如果操作系统是微软Windows?的变种,则核心操作系统文件2310可以包括ntoskrnl.exe、hal.sys>win32k.sys>ntfs.sys、disk.sys和/或tcpip.sys。核心操作系统文件2310可以取决于特定的操作系统而改变。备份文件2312可以包括每一核心安全代理文件2308和每一核心操作系统文件2310的备份副本。在各种实施例中,备份文件2312可以不被存储在与核心安全代理文件2308和核心操作系统文件2310相同的存储设备上。在这样的实施例中,盘映射位图2301也可以标识其中存储有备份文件2312的特定存储设备。替代地,分离的盘映射位图2301可以被用来存储与备份文件2312相关联的信息,例如扇区2304和散列值2306。[0379]对于每一受保护文件2302,盘映射位图2301可以存储使用密码散列算法产生的散列值2306。散列算法可以包括可以接收作为输入的数据块且可以产生作为输出的位串或散列值的算法。不同数据集的散列值通常是不同的。把每一受保护文件2302的内容用作对散列算法的输入,产生每一受保护文件2302的散列值2306。可以使用任何合适的密码散列算法,例如,包括安全散列算法2(“SHA-2”)或消息摘要算法5(“MD5”)。[0380]盘映射位图2301可以例如由图21的受保护起动代理2110和/或恢复代理2112、或来自图22的0/S下层安全代理2208、0/S内部安全代理2206和/或盘安全代理2214、图26的0/S下层安全2616和/或0/S内部安全代理2618用来检测受保护文件2301的潜在恶意软件感染。为了检测受保护文件2302的潜在恶意软件感染,可以使用散列算法用来验证受保护文件2302的完整性。可以查询盘映射位图2304以便标识其中存储有受保护文件2302的存储设备上的扇区2304,且然后可以从存储设备的适当扇区2304检索受保护文件的内容。然后,可以使用诸如SHA-2或MD5之类的所选择的散列算法来使用受保护文件2302的内容产生散列值,且可以把所产生的散列值与来自盘映射位图2301的相应散列值2306进行比较。如果散列值不同,那么,受保护文件2302可能已经被恶意软件修改或变更。[0381]可以以任何合适的方式产生盘映射位图2301。在一个实施例中,可以通过截取对访问受保护文件2302的请求、获得与受保护文件2302相关联的信息以及用关于受保护文件信息更新盘映射位图2301来产生盘映射位图2301。在一些实施例中,可以由诸如例如来自图26的0/S下层安全代理2616之类的在比操作系统较低的优先级环执行的软件截取请求。在其他实施例中,可以由诸如例如来自图26的0/S内部安全代理2618之类的在与操作系统相同的优先级环执行的软件截取请求。例如,来自图26的0/S内部安全代理2618可以包括文件系统过滤驱动程序。文件系统过滤驱动程序可以截取涉及受保护文件2302的文件I/O请求。然后,过滤驱动程序可以查询文件系统以便获得其中存储有受保护文件2302的内容的存储设备上的扇区2304。然后,过滤驱动程序可以访问文件系统的主文件表(MFT)以判断受保护文件2302的盘扇区布局。可以更新盘映射位图2301以便指定其中存储有受保护文件2302的已标识扇区2304。如果文件系统过滤驱动程序截取对写入受保护文件2302的请求,则可以使用受保护文件2302的经更新内容来产生新的散列值,且可以更新盘映射位图2301以便存储新的散列值。[0382]图24是用于起动受保护操作系统执行环境的方法的示例实施例。在步骤2410,可以用被配置为引导受保护起动环境的替代MBR来替换存储设备的现有MBR。MBR可以位于存储设备的第一扇区(即,扇区O)且可以在电子设备的启动时就执行。以这种方式,在启动电子设备时,可以不执行原始MBR,且因此,可以不加载与原始MBR相关联的操作系统或其他软件。相反,可以执行替代MBR且其可以加载受保护起动环境。在步骤2420,可以启动电子设备,且因此可以执行来自步骤2410的替代MBR。替代MBR可以进行到加载受保护起动环境。[0383]在步骤2430,可以获得安全规则。安全规则可以被本地存储在存储设备上,或者可以远程存储例如在保护服务器上。这样的安全规则可以被用来在步骤2440-2480做出判定。在步骤2440,可以判断是否已经创建了各种受保护文件的备份副本。可以在安全规则中指定要求备份的受保护文件。备份文件可以包括例如替代MBR、与受保护起动环境相关联的文件、与一个或多个安全代理相关联的文件和核心操作系统文件。如果还没有创建备份副本,那么,在步骤2450创建备份副本。备份副本可以被本地存储在存储设备上,或者可以远程存储例如在保护服务器上。[0384]在步骤2460可以判断安全代理或操作系统是否感染了恶意软件。安全代理可以包括Ο/s下层安全代理和/或和Ο/S内部安全代理。在一个实施例中,可以通过检验与安全代理和操作系统相关联的各种受保护文件的完整性来检查安全代理和操作系统以便发现恶意软件。散列算法可以被用来验证受保护文件的完整性。例如,可以使用受保护文件的内容来计算每一受保护文件的散列值,且可以把所计算的散列值与先前所产生的受保护文件的散列值进行比较。如果受保护文件的散列值不同,那么,受保护文件可能已经被恶意软件修改。在一些实施例中,盘映射位图可以标识存储设备上的其中存储有每一受保护文件的扇区,且也可以包括先前所产生的每一受保护文件的散列值。在这样的实施例中,可以查询盘映射位图以判断其中存储有受保护文件的内容的扇区,并且可以使用受保护文件的内容来计算散列值。也可以查询盘映射位图以检索先前所产生的受保护文件的散列值以使得可以把先前所产生的散列值与所计算的散列值进行比较。如果受保护文件的散列值不同,那么,可以假定是恶意软件感染,且在步骤2470,可以从潜在的恶意软件感染恢复受保护文件。如果受保护文件的散列值匹配,那么,受保护文件没有受到变更,且因此没有感染恶意软件。在这种情况中,该方法可以进行到步骤2480,步骤2480中可以加载安全代理和操作系统。[0385]在步骤2470,可以对潜在的恶意软件感染执行恢复。通过检索已经受到感染的每一受保护文件的备份副本并用相应的备份副本替换潜在地受感染的受保护文件,执行恢复。备份副本可以位于本地存储设备上或可以远程位于例如保护服务器上。在使用备份副本来替换潜在地受感染的受保护文件之前,也可以验证备份文件的完整性以便确保备份文件它们自身没有感染恶意软件。[0386]在已经使用相应的备份副本来恢复受保护文件之后,在步骤2480,可以加载安全代理和操作系统。安全代理可以包括ο/s下层安全代理和/或ο/s内部安全代理。ο/s下层安全代理可以在低于操作系统的优先级水平执行,且ο/s内部安全代理可以执行在操作系统的优先级水平执行或在高于操作系统的优先级水平执行。ο/s下层安全代理和ο/s内部安全代理可以协作以便保护电子设备免遭恶意软件。例如,ο/s下层安全代理和/或0/S内部安全代理可以保护诸如存储设备之类的电子设备的资源免遭未经授权的访问。在一些实施例中,可以给可以负责提供Ο/s下层安全代理、ο/s内部安全代理和/或操作系统的安全起动的电子设备的组件提供保护。例如,Ο/s下层安全代理和/或ο/s内部安全代理可以保护负责执行步骤2410-2470的那些组件。以这种方式,在下一次启动电子设备时,在步骤2420加载的受保护起动环境可以不受恶意软件禁用。[0387]根据保护存储设备的需要,可以连续地、周期性地、根据需求或在事件触发时重复来自图24的方法的步骤,事件的触发可以包括恶意软件和/或其他可疑行为的检测。[0388]图25是提供用于安全地执行操作系统的操作系统执行环境的方法2500的示例实施例。在步骤2505,可以认证0/S下层安全代理、0/S内部安全代理和保护服务器的身份和安全。可以使用任何合适的方法执行这样的认证,包括通过使用密码散列和/或使用密钥来定位和检验每一组件的存储器中的映像。直到完成步骤2505,可以停止其他步骤的操作。在步骤2510,可以获得安全规则。安全规则可以被Ο/S下层安全代理和/或Ο/S内部安全代理本地存储在存储设备上,或者可以远程存储在例如保护服务器上。这样的安全规则可以被用来在步骤2515-1475做出判定。[0389]在步骤2515,可以截取访问受保护文件的尝试。所截取的尝试可以在操作系统级别发生或者在高于操作系统级别发生,例如由0/S内部安全代理进行,或者它可以在低于操作系统的级别发生,例如由Ο/s下层安全代理进行。受保护文件可以包括MBR、与一个或多个安全代理相关联的文件、用来起动一个或多个安全代理(例如,来自图21的加载模块2102)的文件和核心操作系统文件。可以由安全规则指定受保护文件。在步骤2520,可以判断是否需要把受保护文件的条目添加到盘映射位图。盘映射位图可以被实现为文件或其他数据结构,且可以存储关于受保护文件的某些信息,例如每一受保护文件位于其中的存储设备上的扇区和与每一受保护文件相关联的散列值。如果盘映射位图不包含在步骤2515正在被访问的受保护文件的这种信息,可以把受保护文件的条目添加到盘映射位图。例如,盘映射位图可以不指定其中存储有受保护文件的扇区,或者可以不指定受保护文件的散列值。如果盘映射位图丢失了这种信息,那么,在步骤2525可以更新盘映射位图以便包括这信息。为了更新盘映射位图,可以标识存储受保护文件的内容的扇区,并且可以使用受保护文件的内容来产生散列值。确定其中存储有受保护文件的存储设备上的扇区可以涉及查询文件系统和访问主格式表(MFT)以判断受保护文件的扇区布局。然后,可以从存储设备的适当扇区检索受保护文件的内容,且然后可以把受保护文件的内容用作密码散列算法的输入来计算散列值。然后,可以把受保护文件的相应扇区和所计算散列值存储在盘映射位图中。[0390]在步骤2530,可以判断对受保护文件的访问是否得到授权。这种判断可以在操作系统级别发生或者在高于操作系统级别发生,例如由Ο/s内部安全代理进行,或者它可以在低于操作系统的级别发生,例如由Ο/s下层安全代理进行。可以结合安全规则分析与访问受保护文件的尝试请求相关联的上下文信息,以便判断是否可以授权请求实体访问受保护文件。例如,安全规则可以指定可以或不可以授权操作系统、特定应用和/或特定设备驱动程序访问受保护文件。安全规则也可以指定可以得到授权访问受保护文件的请求实体的访问权限,例如读、写或执行。如果对受保护文件的访问没有得到授权,那么,在步骤2555,可以拒绝访问。如果对受保护文件的访问得到授权,那么,在步骤2535,可以判断受保护文件是否已更新。如果受保护文件已更新,那么,在步骤2540,也可以更新盘映射位图。例如,如果对受保护文件更新引起被用来存储文件的存储设备上的扇区的改变,可以更新盘映射位图以便标识用来存储受保护文件的适当扇区。另外,可以产生受保护文件的新散列值并将其存储在盘映射位图中。在步骤2545,也可以更新受保护文件的备份副本以便反映对受保护文件的近来更新。[0391]如果对受保护文件的访问得到授权,那么,在步骤2550,可以允许对受保护文件的访问。如果对受保护文件的访问没有得到授权,那么,在步骤2555,可以拒绝访问,并且在步骤2560,可以把关于该访问尝试的任何可疑信息报告给保护服务器。[0392]在步骤2565,可以判断是否检测到电子设备的关机。如果没有检测到关机,那么,该方法可以在步骤2515再次继续,以便继续截取对访问受保护文件的尝试。如果检测到关机,那么,在步骤2570可以验证MBR的完整性,以便确保在电子设备下次启动不引导感染恶意软件的MBR。可以通过使用MBR的内容计算散列值并把所计算的散列值与来自盘映射位图的先前所产生的散列值进行比较来验证MBR的完整性。如果散列不同,则MBR已经被变更,且可以用备份副本替换。在验证了MBR的完整性之后,在步骤2575,可以关闭电子设备。[0393]根据保护存储设备的要求,可以连续地、周期性地、根据需求或在事件触发时重复来自图25的方法的步骤。[0394]图26是用于保护存储设备2606免遭未经授权的访问的系统900的示例实施例。系统900可以包括通信上耦合到已触发事件应对程序2608的操作系统(“0/S”)下层安全代理2616。0/S下层安全代理2616可以包括被配置为捕获对访问电子设备2601的存储设备2606的尝试的0/S下层捕获代理2604。0/S下层捕获代理2604可以被配置为创建与已捕获的访问请求相关联的已触发事件并把已触发事件发送给已触发事件应对程序2608。已触发事件应对程序2608可以被配置为查阅一个或多个安全规则2614或保护服务器2602以判断如何应对已触发事件。已触发事件应对程序2608也可以被配置为评估已触发事件的倾向是恶意软件或破坏存储设备2606的恶意尝试的指示。此外,已触发事件应对程序2608可以被配置为向0/S下层捕获代理2604提供应当允许还是拒绝已触发事件的判断,或者可以被配置为产生另一矫正动作。0/S下层安全代理2616可以通信上耦合到在操作系统2612中运行的0/S内部安全代理2618。系统900可以被配置为使用备份存储设备2620还原存储设备2606上的数据。[0395]电子设备2601可以全部地或部分地由图1的电子设备103、图2的电子设备104、图4的电子设备404和/或图7的电子设备701或其任何组合实现,或者被配置为实现它们的功能性。电子设备2601可以包括被耦合到存储器2603的一个或多个处理器2602。处理器2602可以全部地或部分地由图2的处理器208、图4的处理器406和/或图7的处理器702或其任何组合实现,或者被配置为实现它们的功能性。存储器2603可以全部地或部分地由图2的存储器207、图4的存储器408和/或图7的存储器703或其任何组合实现,或者被配置为实现它们的功能性。电子设备2601可以包括操作系统2612,操作系统2612可以包括0/S内部安全代理2618。操作系统2612可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412和/或图7的操作系统713或其任何组合实现,或者被配置为实现它们的功能性。0/S内部安全代理2618可以全部地或部分地由图1的0/S内部安全代理218、图4的0/S内部安全代理418和/或图7的0/S内部安全代理719或其任何合适的组合实现,或者被配置为实现它们的功能性。[0396]存储设备2606可以由图1的资源106、图2的系统资源214、图4的存储426、或图5的I/O设备502实现,或者被配置为实现它们的功能性。存储设备2606可以包括用于存储数据或其他信息的任何合适的资源。例如,存储设备2606可以包括但不限于直接访问存储设备(例如,硬盘驱动器或软盘)、连续访问存储设备(例如,磁带磁盘驱动器)、紧致盘、⑶-ROM、DVD、随机存取存储器(RAM)盘和/或闪速存储器(例如,基于闪存的固态驱动器)。存储设备2606可以包括大容量存储设备。不考虑与系统总线的连接类型或接口方法,存储设备2606可以包括被连接到电子设备2601的存储设备,系统总线可以包括但不限于PC1、串行ATA、USB或火线。存储设备2606可以包括永久的块设备。存储设备2606可以被分割成一个或多个扇区924,每一扇区能够存储固定量的数据。例如,存储设备2606可以被分割成每个512字节的扇区,但可以使用任何合适的扇区大小。存储设备2606上的扇区924可以是静态的或动态的。静态扇区的位置固定,而动态扇区不固定。例如,主引导记录2626(MBR)是静态的且位于扇区0,即存储设备2606上的第一扇区。要求保护的动态扇区包括存储主文件表(即,包含与存储在文件系统上的所有文件相关联的元数据的文件)、操作系统内核文件、设备驱动程序和诸如Ο/S下层安全代理2616或Ο/S内部安全代理2618之类的反恶意软件应用的扇区。因为动态扇区不固定,必须把存储在动态扇区上的文件从它们在文件系统上的概念存在映射到来自文件的数据驻留在其中的存储设备2606的物理扇区。[0397]0/S下层安全代理2616可以由图1的0/S下层捕获代理104、图2的SVMM216、图4的固件安全代理440、442或PC固件安全代理444、图5的固件安全代理516或图7的微代码安全代理708实现,或者被配置为实现它们的功能性。在借助于图4的固件安全代理440或442或图5的固件安全代理516的功能性来实现0/S下层安全代理2616的实施例中,可以在存储设备2606的固件中实现0/S下层安全代理2616。已触发事件应对程序2608可以由图1的已触发事件应对程序108、图2的SVMM安全代理217、图4的0/S下层代理450或图7的0/S下层代理712实现,或者被配置为实现它们的功能性。在借助于图4的固件安全代理440或442或图5的固件安全代理516的功能性来实现已触发事件应对程序2608的实施例中,可以在存储设备2606的固件中实现已触发事件应对程序2608。在各种实施例中,0/S下层安全代理2616的功能性中的一些可以由已触发事件应对程序2608实现,或已触发事件应对程序2608的功能性中的一些可以由0/S下层安全代理2616实现。此外,0/S下层安全代理2616和已触发事件应对程序2608可以在相同的软件模块中实现。[0398]可以在比电子设备2601的操作系统2612较低的功能的级别实现0/S下层安全代理2616。例如,0/S下层安全代理2616可以截取操作系统2612、驱动程序2611或应用2610对存储设备2606的已尝试访问。0/S下层安全代理2616可以在电子设备2601的处理器上运行而无需使用操作系统。在一个实施例中,0/S下层安全代理2616可以在裸机环境或执行级别上操作。另外,0/S下层安全代理2616可以在比电子设备2601的所有操作系统2612更高的优先级环上执行,如由电子设备2601的处理器所定义的。例如,在其中较低的数字表示较高的优先级的使用保护环的分级保护域模型的上下文中,操作系统2612可以是在“O环”操作而0/S下层安全代理2616可以“I环”操作。驱动程序2611和应用2610可以在“O环”或“3环”操作。电子设备2601的操作系统可以在O环运行。[0399]通过在“I环”运行,0/S下层安全代理2616可以避免烦扰诸如操作系统2612之类的操作系统的大多数恶意软件。Ο/s下层安全代理2616可以对在O环或更高运行的实体透明地操作。因而,可以由操作系统2612或另一实体以相同的方式请求访问存储设备2606的尝试,而不考虑是否存在0/S下层安全代理2616。在强加访问存储设备2606的请求时,0/S下层安全代理2616可以允许请求、拒绝请求、破坏存储设备2606上的数据、破坏存储设备2606的介质表面、加密存储设备2606上的数据或采取其他矫正动作。为了拒绝请求,0/S下层安全代理2616可以简单地防止请求到达存储设备2606或处理器2602,或者可以向该请求提供经欺骗的或哑元应答以便使得操作系统2612相信该动作已经发生。为了允许请求,0/S下层安全代理2616可以简单地把请求传送给存储设备2606或处理器2602。为了破坏数据,0/S下层安全代理2616可以被配置为重写或以另外方式移除存储设备2606上的数据。为了破坏存储设备2606的介质表面,Ο/S下层安全代理2616可以执行动作以便把存储设备2606呈现为不可操作为读或写数据。为了加密存储设备2606上的数据,0/S下层安全代理2616可以使用任何合适的加密算法来加密存储设备2606上的数据并用经加密的数据替换存储设备2606上的未经加密的数据。[0400]0/S下层安全代理2616可以包括被配置为捕获对访问存储设备2606的请求的0/S下层捕获代理2604。可以由操作系统2612、驱动程序2611或应用2610发起对访问存储设备2606的请求。0/S下层捕获代理2604可以被配置为标识负责发起请求的请求实体。0/S下层捕获代理2604还可以被配置为创建与已捕获访问尝试相关联的已触发事件并把已触发事件发送给已触发事件应对程序2608以便判断相对于该事件要采取的适当动作。已触发事件可以包括诸如与请求相关联的存储设备2606的区域(例如,扇区和/或文件)、请求实体和所请求的访问的类型之类的信息。与请求相关联的存储设备2606的区域可以是存储设备2606的一个或多个扇区,或者可以是被存储在存储设备2606上的文件。请求实体可以是操作系统2612、驱动程序2611或应用2610。例如,如果应用2610或驱动程序2611请求访问存储设备2606,则已触发事件可以指示请求访问的特定的应用2610或驱动程序2611。如果请求是来自操作系统2612而非特定的应用2610或驱动程序2611,则已触发事件可以指示该请求是来自操作系统2612。所请求的访问的类型可以包括从存储设备2606读取、向存储设备2606写入或执行存储设备2606上的代码的请求。[0401]在一个实施例中,0/S下层捕获代理2604可以被配置为仅在检测到诸如对系统的攻击、恶意软件感染或任何其他潜在的安全威胁之类的事件之后捕获对访问存储设备2606的请求。在这样的实施例中,保存系统100的资源直到已经检测到潜在的安全威胁。在另一实施例中,0/S下层捕获代理2604可以被配置为在所有时刻捕获对访问存储设备2606的请求,而不考虑是否已经检测到潜在的安全威胁。[0402]在另一实施例中,0/S下层安全代理2616可以被配置为通过捕获对用于文件输入和输出的驱动程序或系统函数的调用的执行来捕获对存储设备2606的已尝试访问。这样的调用的捕获可以虚拟存储器页面级别完成,其中,可以由0/S下层安全代理2616标识和保护包含这样的驱动程序或系统函数的存储器页面。在这样的情况中,0/S下层安全代理2616可以部分地或完全地例如由虚拟机监视器或在微代码中实现。这样的调用的捕获可以在物理存储器地址级别完成,其中,可以由0/S下层安全代理2616标识和保护这样的驱动程序或系统函数的代码段的存储器地址。在这样的情况中,0/S下层安全代理2616可以完全地或部分地例如以微代码实现。恶意软件可以直接调用这样的函数,在这种情况中,0/S下层安全代理2616可以确定这样的函数的调用者,以便标识该调用者是否拥有访问存储设备2606的特定部分的权限。通过例如调用未经建档的文件函数的子函数或者直接地分支到函数的代码部分而根本无需调用函数,恶意软件可以间接地调用这样的函数。这样的尝试可以被用来隐藏调用者的身份或以另外方式模糊恶意软件对文件I/O的使用。在这样的情况中,通过捕获子函数的执行或通过捕获通向文件I/O函数的代码部分的JMP或分支指令,0/S下层安全代理2616可以捕获已尝试文件I/O。这样的行为本身是可疑的,因此即使调用者是未知的,0/S下层安全代理2616也可以被配置为判断这样的已尝试访问的宿主是可疑的且该尝试可以指示恶意软件。[0403]在又一实施例中,0/S下层安全代理2616可以被配置为通过捕获为访问盘而产生的中断来捕获对存储设备2606的已尝试访问。这样的中断可以由正常的文件I/O函数调用,或者可以由避免使用函数并尝试直接写入到存储设备2606恶意软件产生。Ο/S下层安全代理2616可以被配置为确定中断的源、标识中断的本质、标识任何上下文信息或参数、标识中断的目标、并判断该尝试是否可疑。例如,该尝试是否可疑的判定可以包括调用者的身份,或者动作自身是可疑的。例如,恶意软件可以执行一系列指令,其中,可以把要写的扇区的计数(例如“MOVal,count(移动al,计数)”)、要写的磁道的标识(例如“MOVch,track(移动ch,磁道)”)、要写的扇区的标识(例如“MOVcldectoK移动Cl,扇区)”),要写的首部的标识(例如“MOVdh,head(移动dh,首部)”),要写的卷的标识(例如“MOVdl,drive(移动dl,驱动程序)”)、要执行的文件的类型的标识(例如“MOVah,03h”)以及要写到文件的数据的存储器位置(例如“MOVbx,buf”)移动到通用寄存器。把这样的信息指派给特定的通用寄存器可以是用于加载用于随后的文件I/O中断的信息的已知方法。可以用“MOV(移动)”指令做出这些指派。随后,可以执行产生中断13的指令,例如“INT13h”。0/S下层安全代理2616可以被配置为捕获命令并检查关联寄存器的内容以判断已尝试文件I/O的本质以及存储设备2606的所针对的部分。Ο/S下层安全代理2616可以被配置为查阅安全规则以便判断这样的操作的调用者是否拥有写入到存储设备2606的指定部分的权限。Ο/S下层安全代理2616可以被配置为检查执行历史以便判断这样的命令序列是否起因于经授权文件I/O驱动程序,或者它们是否由未知的或恶意进程直接执行。在这样的情况中,基于这样的行为,即使先前不已知调用者的状态是恶意的,也可以判断调用者是恶意的。最终,即使做出标准文件I/O驱动程序调用以便执行中断,也可以标识驱动程序的调用者,且Ο/S下层安全代理2616可以被配置为判断调用者是否拥有访问所考虑的存储设备2606的部分的权限。[0404]0/S下层安全代理2616可以包括映射代理2622。映射代理2622可以被配置为把文件从其在文件系统上的概念存在映射到该文件存储在其中的存储设备2606的扇区924。在一个实施例中,映射代理2622可以在与0/S下层安全代理2616相同的优先级环操作。在另一实施例中,映射代理2622可以被实现为0/S内部安全代理2618的部分且可以在与操作系统2612、驱动程序2611或应用2610相同的优先级环是操作。在再一个实施例中,映射代理2622可以由两个或更多个映射代理实现,其中,至少一个映射代理在与0/S下层安全代理2616相同的优先级环操作,且至少一个映射代理在操作系统2612、驱动程序2611或应用2610的优先级环操作。映射代理2622可以接收对映射来自0/S下层捕获代理2604或已触发事件应对程序2608的文件的请求,且可以响应通过提供该文件存储在其中的存储设备2606上的扇区。这样的实施例可以允许0/S下层捕获代理2604和/或已触发事件应对程序2608标识对访问不总是被存储在存储设备2606的相同扇区上的动态定位的文件或数据的请求。例如,主文件表、操作系统内核文件、设备驱动程序和反恶意软件软件的位置可以不总是在存储设备2606的相同扇区924上,且映射代理2622可以被用来标识这些文件存储在其中的扇区。在一些实施例中,映射代理2622可以查询文件系统以判断受保护文件存储在其中的扇区。映射代理2622也可以使用盘映射位图2628来标识受保护文件存储在其中的存储设备2606上的扇区924。盘映射位图2628可以由图23的盘映射位图2301实现,或者被配置为实现它的功能性。盘映射位图2628可以包含与各种受保护文件相关联的信息,例如,包括其中每一受保护文件存储在其中的存储设备的扇区或多个扇区。如果受保护文件经过更新,则也可以更新来自盘映射位图2628的信息。以这种方式,在映射代理2622接收对把受保护文件从其在文件系统上的概念存在映射到该文件驻留在其中的存储设备2606的扇区924的请求时,映射代理2622可以查阅盘映射位图2628以便标识对应于受保护文件的扇区924。[0405]已触发事件应对程序2608可以由通信上耦合到一起的一个或多个事件应对程序或安全代理实现。可以在相同的安全代理中实现已触发事件应对程序2608和0/S下层捕获代理2604。在一个实施例中,已触发事件应对程序2608可以在与0/S下层捕获代理2604相同的优先级环操作。在另一实施例中,已触发事件应对程序2608可以被实现为0/S内部安全代理2618的部分且可以在与操作系统2612、驱动程序2611或应用2610相同的优先级环操作。在再一个实施例中,已触发事件应对程序2608可以由两个或更多个已触发事件应对程序实现,其中,至少一个已触发事件应对程序在与0/S下层安全代理2616相同的优先级环操作,且至少一个已触发事件应对程序操作系统2612、驱动程序2611或应用2610的优先级环操作。通过在0/S下层捕获代理2604的优先级环运行,已触发事件应对程序2608可以类似地避免“O环”或“3环”恶意软件感染该代理自身的问题。然而,“O环”或“3环”与操作系统2612、驱动程序2611或应用2610—起运行的已触发事件应对程序2608可以提供从“I环”代理的角度来看不可用的关于对存储设备2606的已尝试访问的上下文信息。[0406]已触发事件应对程序2608可以被配置为接收和处理来自0/S下层捕获代理2604的已触发事件。已触发事件应对程序2608也可以被配置为把安全规则2614提供给0/S下层安全代理2616和/或0/S下层捕获代理2604。已触发事件可以包含关于已经被0/S下层捕获代理2604捕获的、对访问存储设备2606的请求的信息。已触发事件应对程序2608可以被配置为结合与已触发事件相关联的上下文信息利用一个或多个安全规则2614或保护服务器2602来标识对存储设备2606的访问受保护区域尝试并判断适当的响应。例如,已触发事件应对程序2608可以使用安全规则2614来标识对访问诸如受保护的扇区和/或文件之类的存储设备2606的受保护区域的尝试。已触发事件应对程序2608可以使用映射代理2622来帮助标识对访问受保护文件的请求。例如,已触发事件应对程序2608可以向映射代理2622发送对把受保护文件映射到存储设备2606上的相应扇区的请求。映射代理2622可以用对应于受保护文件的扇区响应。已触发事件应对程序2608可以通过标识对对应于文件的访问扇区的尝试来标识对访问受保护文件的尝试。在标识对访问诸如受保护的扇区和/或文件之类的受保护区域的尝试之后,已触发事件应对程序2608可以被配置为查阅安全规则2614以便判断对访问受保护区域的尝试是否得到授权。已触发事件应对程序2608还可以被配置为向0/S下层安全代理2616提供适当动作的判断。例如,已触发事件应对程序2608可以告知0/S下层安全代理2616应当允许还是拒绝已触发事件,是否应当破坏特定的数据或介质表面,或者是否应当加密数据。[0407]单独地或与诸如已触发事件应对程序2608或0/S内部安全代理2618之类的组件结合,Ο/s下层安全代理2616可以被配置为确定访问存储设备2606的典型、可信的方法。例如,通常通过文件I/O驱动程序的调用做出对扇区存储设备2620的写或读。因而,可以由检查被用来做出尝试过程或函数的0/S下层安全代理2616评估对写入受保护扇区的已捕获尝试。可以观察和评估访问扇区时对预期行为的背离,以便指示恶意软件。如果例如0/S下层安全代理2616判断,通过直接调用中断13而不使用正常的文件I/O函数或驱动程序来做出对受保护扇区的尝试写入,那么,这样的尝试写入是可疑的。[0408]备份存储设备2620可以被用来备份和还原存储设备2606上的数据。例如,0/S下层安全代理2616和/或0/S内部安全代理2618可以被配置为备份来自存储设备2606的数据并在各种环境下还原数据。安全规则2614可以指定经授权为要备份的存储设备2606的特定扇区924。当来自存储设备2606的数据要求还原时,可以使用来自备份存储设备2620的相应扇区的数据来写存储设备2606的适当扇区。如果必要,在还原过程期间期间可以使用对存储设备2606的多次写入。在一些实施例中,如果判断数据损坏或以另外方式感染了恶意软件,则可以恢复来自存储设备2606的数据。可以通过扫描存储设备2606的扇区以便检测恶意软件的存在来执行这种判断。在扫描存储设备2606的扇区的同时,可以使用黑名单来标识已知包括恶意软件或与恶意软件相关联的数据的模式。黑名单可以由安全规则2614定义。如果找到了已知与恶意软件相关联的数据的模式,那么,从备份存储设备2620恢复受感染扇区。在一些实施例中,盘映射位图2628可以被用来判断各种受保护文件是否感染了恶意软件。例如,在图23的盘映射位图2301的讨论中可以找到盘映射位图2628的示例实施例的描述。盘映射位图2628可以指定存储设备2606上受保护文件的位置且也可以提供先前所产生的受保护文件的散列值。可以查询盘映射位图2628以便标识受保护文件的位置,可以使用受保护文件的内容来计算的散列,并且可以把所计算的散列与来自盘映射位图2628的先前所产生的散列值进行比较。如果散列值不匹配,则受保护文件可能已经被恶意软件变更,且从恢复备份存储设备2620文件。在一些实施例中,在被用来还原存储设备2606上的数据之前也检查备份存储设备2620以便发现恶意软件。如果备份存储设备2620被感染,则不可以使用来自备份存储设备2620的备份数据和/或可以使用较旧的备份可以被使用,或者可以拒绝对访问存储设备2606的请求。[0409]可以由0/S下层安全代理2616把来自备份存储设备2620的数据写到存储设备2606,以便避免使用可能感染了恶意软件的操作系统2612的文件系统机制。然而,可以使用任何其他安全进程来用来自备份存储设备2620的数据把数据还原到存储设备2606。可以维护每一备份的元数据,且其可以包括修订版本号、创建备份的日期和时间以及与该备份相关联的应用2610或其他实体。备份存储设备2620可以被定位为远离存储设备2606,例如在网络上。例如,备份存储设备2620可以与保护服务器2602相关联。如果备份存储设备2620位于网络上,则0/S下层安全代理2616可以使用带外网络连接来访问备份存储设备2620,以便避免使用可能感染了恶意软件的操作系统内核网络设备驱动程序。在一个实施例中,可以使用主动管理技术(AMT)来实现这种带外网络连接,主动管理技术可以允许通过直接地访问电子设备2601的网卡使用HTTPS、iSCS1、NFS或CIFS客户机来访问备份存储设备22620。[0410]保护服务器2602可以在网络上操作且可以实现云计算方案。保护服务器2602可以被配置为存储安全规则2614并与诸如0/S下层安全代理2616、0/S内部安全代理2618和/或已触发事件应对程序2608之类的系统900的元素通信,以提供安全规则2614和其他信息。保护服务器2602可以包括备份存储设备2620。备份存储设备2620可以用于存储安全规则2614和/或备份来自存储设备2606的数据。[0411]安全规则2614可以由图1的安全规则114、图2的安全规则220、222、图4的安全规则420、422、434、436、438、图5的安全规则518或图7的安全规则707、721、723实现,或者被配置为实现它们的功能性。可以在下面的图27的讨论中找到安全规则2614的示例实施例的描述。[0412]图27是与用于保护存储设备免遭未经授权的访问的系统或方法一起使用的安全规则的示例实施例。安全规则2700可以包括用于指定要求捕获的事件和每一事件的适当响应的任何合适的规则、逻辑、命令、指令、标志或其他机制。例如,安全规则2700可以由来自图26的0/S下层安全代理2616、0/S内部安全代理2618和/或已触发事件应对程序2608用来标识要求捕获的事件并判断每一事件的适当响应。安全规则2700可以要求捕获对访问存储设备的所有请求,或者可以仅要求捕获特定类型的请求,例如读、写和/或执行请求。安全规则2700还可以包括指定存储设备的受保护区域2702的规则,受保护区域2702例如要求保护的存储设备的特定扇区或存储设备上的文件。对于每一受保护区域2702,安全规则2700可以指定诸如操作系统、应用或驱动程序之类的可以授权或者不可以授权访问每一受保护区域2702的请求实体2704。安全规则2700也可以指定经授权为访问受保护区域2702的每一实体2704对受保护区域2702的访问权限2706,例如读2706a、写2706b或执行2706c。[0413]某些安全规则2700可以是应用无关的或应用专用的。应用无关的规则不考虑请求访问存储设备的受保护区域2702的应用就适用。应用专用的规则可以取决于发起请求的应用而授权或禁止对受保护区域2702的访问。规则2710a是指定应当拒绝任何实体写入主引导记录的请求的应用无关的规则的示例。规则2710b是允许安全代理写入存储设备上其自己的映像同时禁止任何其他实体写入存储设备上的安全代理映像的应用专用的规则的示例。规则2710c和27IOd也是应用专用的规则的示例。规则2710c指定任何实体不可以写入因特网浏览器应用的代码页面。规则2710d指定如果请求是来自因特网浏览器应用则可以允许写入因特网浏览器应用的数据页面的请求,而将会拒绝来自任何其他实体的写入因特网浏览器应用的数据页面的请求。[0414]安全规则2700可以由应用或操作系统定义为允许应用和操作系统指定诸如数据或代码页面之类的它们各自的信息的必要保护。安全规则2700也可以由管理员设置,且可以被远程存储,例如存储在来自图26的保护服务器2602上。可以从远程位置检索和/或更新安全规则2700。[0415]在一些实施例中,在允许访问存储设备之前,安全规则2700可以要求到诸如来自图26的保护服务器2602之类的保护服务器的网络连接。如果到保护服务器的连接不可用,则安全规则2700可以禁止访问存储设备且可以破坏存储设备的数据或介质表面。例如,安全规则2700可以指定,如果诸如来自图26的0/S下层安全代理2616之类的安全代理不能够连接到保护服务器且已经持续指定的天数,则安全代理可以假设存储设备的安全已经受到危害。在这样的实施例中,即使存储设备上的数据物理上已经受到危害,也保护存储设备上的数据。[0416]图28是用于保护电子设备的存储设备免遭未经授权的访问的方法的示例实施例。在步骤2805,可以认证0/S下层安全代理、0/S内部安全代理、已触发事件应对程序和保护服务器的身份和安全。可以使用任何合适的方法执行这样的认证,包括通过定位和检验每一组件的存储器中的映像、密码散列或密钥。直到完成了步骤2805之前,在某些实施例中可以停止其他步骤的操作。[0417]在步骤2810,获得安全规则。安全规则可以由0/S下层安全代理、0/S内部安全代理或已触发事件应对程序本地存储,或者安全规则可以远程存储,例如在保护服务器上。这样的安全规则可以被用来在步骤2815-2860做出判定。在步骤2815,判断是否已经检测到安全威胁。例如,0/S下层安全代理和/或0/S内部安全代理可以标识电子设备上的恶意软件,或者可以标识恶意软件感染电子设备的尝试。如果还没有检测到安全威胁,那么,可以不采取动作。如果已经检测到安全威胁,那么,在步骤2820,指示0/S下层安全代理捕获对存储设备的访问。在一些实施例中,指示0/S下层安全代理在认证进程之后捕获对存储设备的访问,而不考虑是否检测到安全威胁。[0418]在步骤2825,捕获到对访问存储设备的请求。可以由在比电子设备上运行的操作系统较低的优先级环执行的软件实施这样的捕获。例如,0/S下层安全代理可以执行捕获功能性。在步骤2830,判断与已捕获请求相关联的存储设备的扇区是否已经感染了恶意软件。可以通过扫描存储设备的扇区以便检测恶意软件的存在来执行这种判断。在扫描存储设备的扇区的同时,可以使用黑名单来标识已知包括恶意软件或与恶意软件相关联的数据的模式。如果找到了数据已知与恶意软件相关联的数据的模式,那么,在步骤2835从备份存储设备恢复受感染扇区。在一些实施例中,在使用备份存储设备来还原存储设备之前也扫描备份存储设备以便发现恶意软件。如果备份存储设备受感染,则可以不适用该备份和/或可以使用较旧的备份,或者可以拒绝对访问存储设备的请求。[0419]在步骤2840,判断是否已经请求了访问存储设备的受保护扇区。受保护扇区由安全规则定义。安全规则可以要求保护特定扇区,或者可以要求保护动态定位的特定的文件和/或数据。例如,安全规则可以要求保护主引导记录,主引导记录是静态的且位于存储设备的第一扇区(扇区O)。作为另一示例,安全规则也可以要求保护主文件表、操作系统内核文件、设备驱动程序或反恶意软件软件。这些文件可以具有动态的位置且不总被存储在相同的扇区上。如果动态存储的文件或数据需要保护,则把文件或数据从其在文件系统上的概念存在转换到的文件或数据驻留在其中的存储设备的实际扇区。如果对访问存储设备的请求不涉及受保护扇区,那么,在步骤2850,允许对访问存储设备的请求。如果对访问存储设备的请求涉及受保护扇区,那么,在步骤2845判断对受保护扇区的访问是否得到授权。可以结合安全规则分析与对访问存储设备的尝试请求相关联的上下文信息,以便判断是否授权该请求实体访问受保护扇区。例如,安全规则可以指定,可以或不可以授权操作系统、特定的应用或特定的设备驱动程序访问受保护扇区。安全规则也可以为经授权访问受保护扇区的请求实体指定诸如读、写或执行之类的访问权限。[0420]如果对受保护扇区的访问得到授权,那么,在步骤2850,允许对访问存储设备的请求。如果访问受保护扇区未被授权,那么,在步骤2855,拒绝对访问存储设备的请求。在一些实施例中,可以采取其他矫正动作。例如,可以破坏或加密存储设备上的数据,或者可以破坏存储设备的介质表面。如果对访问存储设备的请求没有得到授权,则在步骤2860把对访问存储设备的尝试报告给保护服务器。这样的报告可以包括关于任何关联的恶意软件或可疑行为的信息。[0421]根据保护存储设备的要求,可以连续地、周期性地、根据需求或在事件触发时重复来自图28的方法的步骤。[0422]图29是用于保护在应用和输入/输出设备之间的写访问的输入/输出路径的系统2900的示例实施例。系统2900可以包括电子设备2904,要保护电子设备2904免遭对电子设备2904的应用输入/输出(I/O)路径的恶意软件攻击。电子设备2904可以包括操作系统下层安全代理2916、1/0设备2926、应用2910、操作系统2912和驱动程序2911。电子设备2904可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备401、图7的电子设备701和/或其任何组合实现,或者被配置为实现它们的功能性。[0423]0/S下层安全代理2916可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442、PC固件安全代理444或0/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708和/或其任何组合实现,或者被配置为实现它们的功能性。0/S下层安全代理2916可以被配置为保护电子设备2904的应用I/O路径免遭恶意软件。I/O设备2926可以全部地或部分地由图2的设备226、图4的显示器424或存储426、图5输入-输出设备502和/或其任何组合实现,或者被配置为实现它们的功能性。应用2910可以全部地或部分地由图1的应用110、图2的应用210、图4的应用410、图7的应用709和/或其任何组合实现,或者被配置为实现它们的功能性。驱动程序2911可以全部地或部分地由图1的驱动程序111、图2的驱动程序211、图4的驱动程序411、图7的驱动程序711和/或其任何组合实现,或者被配置为实现它们的功能性。操作系统2912可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713和/或其任何组合实现,或者被配置为实现它们的功能性。[0424]如图29中的箭头所示出的,且如结合下面的图30所描述的,0/S下层安全代理2916可以捕获经由应用I/O路径的数据传送。一旦捕获,0/S下层安全代理2916可以截取结合I/O写访问要从应用2910递送到I/O设备2926的内容。0/S下层安全代理2916可以修改所截取的I/O内容并通过正常的I/O路径(例如,经由操作系统3112和驱动程序3111)传送经修改内容。这样的经修改内容可以包括“经欺骗的”或“哑元”内容,以使得能够截取I/O路径数据的任何恶意软件将截取哑元数据而不是实际的用户数据。当经修改的I/O内容到达I/O设备2926的设备驱动程序时,0/S下层安全代理2916可以截取经修改的I/O内容,并用原始内容来替换它,因而保护I/O传送免遭恶意软件攻击。另外,基于规则(例如,安全规则114、220、222、438、434、436、518、707、721和/或723),0/S下层安全代理2916可以检测在正常的I/O路径上传送的经修改内容是否受到类似恶意软件的行为(例如,指示经修改内容被嗅探、被钩住和/或以另外方式受到攻击的行为)影响,并且如果检测到类似恶意软件的行为就采取矫正动作。在一些实施例中,0/S下层安全代理2916可以把关于发生类似恶意软件的行为的信息传输给保护服务器202。例如,0/S下层安全代理2916可以把取证信息传输给保护服务器202,取证信息可以辅助保护服务器202标识引起类似恶意软件的行为的恶意软件和/或防止进一步感染电子设备2904和/或其他电子设备。这样的取证信息可以包括但不限于在其中发生该行为的电子设备的身份、标识类似恶意软件的行为的0/S下层安全代理、其中发生类似恶意软件的行为的设备2926和/或应用I/O路径、被0/S下层安全代理放置到I/O路径的经修改内容和/或已截取的经修改数据(指示潜在恶意软件对经修改数据做出的修改)。[0425]尽管在应用2910和输入/输出设备2926之间的路径被示出为带有一定数量的元素,但这样的路径可以包括实现在应用2910和输入/输出设备2926之间的输入或输出路径所需要的多个组件。例如,操作系统2912和驱动程序111可以包括多个子组件以便在应用2910和输入/输出设备2926之间传送信息。操作系统2912和驱动程序111和它们的子组件可以被配置为使用系统定义的函数或驱动程序定义的函数来相互调用。Ο/S下层安全代理2916可以被配置为捕获沿着在应用2910和输入/输出设备2926之间的输入/输出路径的任何这样的通信或操作。例如,在Windows?环境中,为了把映像放置在设备2926中,应用2910可以被配置为使用BitBlt函数来调用gdi32.dll,gdi32.dll可以被配置为使用Nt⑶IBitBlt函数来调用ndtll.dll,ndtll.dll可以被配置为使用Nt⑶IBitBlt函数来调用win32k.sys,win32k.sys可以被配置为调用图形I/O驱动程序,I/O驱动程序可以处理到由设备2926实现的显示器的输入和输出。Ο/S下层安全代理2916可以被配置为捕获任何这样的函数调用的执行,例如通过捕获包含这样的函数的代码段的存储器位置的执行。存储器位置可以包括,例如,虚拟存储器页面或物理存储器的地址范围。[0426]0/S下层安全代理2916可以被配置为判断用于沿着在应用2910和设备2926之间的路径传输命令或信息的这样的函数的调用者,并判断它们是否已经被经授权实体执行。例如,驱动程序2911函数可以被恶意进程直接地调用,而不是使用由系统提供的方法(例如操作系统2912中的函数)来访问2911的函数。0/S下层安全代理2916可以被配置为捕获驱动程序2911的函数的执行,并基于该访问起源于其中的存储器地址判断,例如,应用2910被驱动程序2911直接地调用,并且该调用不起源于在操作系统2912内的经授权实体。这样的访问可能已经完成,以便避免在操作系统2912内的安全设置。0/S下层安全代理2916可以被配置判断这样的访问指示恶意软件,并拒绝已尝试访问。[0427]此外,0/S下层安全代理2916可以被配置为通过捕获对对应于输入和输出缓冲器的存储器位置的尝试读或写信息来捕获在应用2910和设备2926之间的信息通信。例如,操作系统2912可以把信息写到I/O缓冲器并调用驱动程序2911的函数来检索在缓冲器内要发送给设备2926信息。由于信息大小,可以使用这样的缓冲器,而不是直接作为参数传送信息。因而,0/S下层安全代理2916可以被配置为捕获例如对虚拟存储器页面或I/O缓冲器的物理地址范围的读或写访问。0/S下层安全代理2916可以被配置为判断访问I/O缓冲器的实体的身份,以便判断该实体是否得到授权读或写I/O缓冲器。例如,0/S下层安全代理2916可以被配置为捕获对键盘数据缓冲器的已尝试访问。如果应用2910尝试直接(即在通过操作系统2912的正常调用链的范围之外)从缓冲器读信息,则0/S下层安全代理2916可以被配置为拒绝访问,这是由于对缓冲器中的键盘数据的已尝试直接访问指示诸如键盘记录器之类的恶意软件。在另一示例中,可以保护显示器数据的缓冲器免遭访问以便防止抓屏恶意软件。在又一示例中,可以保护网络输出的缓冲器免遭访问以便防止拒绝服务攻击产生或分组修改。[0428]因而,在一些实施例中,0/S下层安全代理2916可以被配置为阻止对没有已知得到授权读或写缓冲器的访问I/o缓冲器的实体的所有访问。在这样的实施例中,可以阻止其恶意软件状态是未知的应用2910或其他实体,即使先前通过扫描实体以便发现恶意签名没有把该实体标识为恶意软件。在其他实施例中,0/S下层安全代理2916可以被配置为使得对缓冲器的访问仅限于在已知的调用链内直接在该缓冲器的下面或上面的驱动程序、接口、应用或其他实体。类似地,0/S下层安全代理2916可以被配置为使得对驱动程序2911或操作系统2912的函数的访问仅限于仅在已知的调用链内直接在该缓冲器的下面或上面的驱动程序、接口、应用或其他实体。通过观察已知安全系统的典型操作以便理解、概况分析(profiIe)和测试什么实体沿着在应用2910和设备2926之间的路径相互调用,可以定义这样的已知的调用链。可以在Ο/S下层安全代理2916可访问的安全规则中实现这样的已知安全操作的表征。可以拒绝在这样的已知链路外对诸如驱动程序2911或操作系统2912之类的驱动程序的组件的任何调用或对I/O缓冲器的调用。[0429]0/S下层安全代理2916可以捕获在应用2910和设备2926之间的路径内的调用、读取要传送的数据、加密数据、把数据重新插入到路径并允许操作进行。在一个实施例中,设备2926可以包含被配置为解密这样的数据的固件安全代理。这样的固件安全代理和0/S下层安全代理2916可以通信上耦合以便协调这样的加密,和/或均可以具有协调这样的加密的相似安全规则。相反地,0/S下层安全代理2916可以被配置为捕获在路径内的调用、解密来自设备的数据、把数据重新插入到路径并允许操作进行。在另一实施例中,0/S下层安全代理2916可以被配置为捕获进一步在路径下面和上面的调用、读取要传送的数据、解密数据、把数据重新插入到路径并允许操作进行。[0430]此外,0/S下层安全代理2916可以被配置为检查要沿着在应用2910和设备2926之间的路径传送的数据并扫描数据以便发现恶意软件的指示。0/S下层安全代理2916可以被配置为控制在路径内的实体之间传送的数据或替换作为参数而传送的数据(例如哑元数据)。[0431]图30是用于保护在应用和输入/输出设备之间的写访问的输入/输出路径的方法3000的示例实施例。在步骤3002,0/S下层安全代理可以判断应用I/O路径是否易受恶意软件攻击的攻击。因为在此公开的用于保护应用I/O路径的系统和方法可以消耗显著的处理器、存储器和/或其他资源,期望仅在应用I/O路径特别易受恶意软件攻击感染时采用这样的系统和方法。在应用或操作系统正在执行其中可以传输潜在敏感信息的I/O操作时,应用I/O路径可以易受恶意软件攻击的攻击的。例如,如果应用正在访问银行业务或其他金融网站,这可能在应用I/O路径上暴露敏感信息,例如财务数据、企业人事数据、账户号、用户名、密码、社会保障号和/或电子设备的用户的其他标识数据,则0/S下层安全代理可以判断应用I/o路径易受恶意软件攻击的攻击。[0432]在步骤3003,如果判断应用I/O路径易受攻击,则方法3000可以进行到步骤3005。否则,方法3000可以返回到步骤3002,且可以不采取应用I/O路径保护,直到判断应用I/O路径易受攻击的时刻。[0433]在步骤3005,0/S下层安全代理可以捕获来自应用的对设备(例如,显示器、盘驱动器、键盘等等)的I/o写访问。例如,如果I/O写访问包括在Windows操作系统中把数据从应用传送到显示设备,则0/S下层安全代理可以捕获应用对位块传送操作(例如,BitBlt)的调用或对显示器I/O函数的库(例如,gdi32.dll,ntdll.dll等等)的调用的执行。I/O写或读访问可以包括一系列或一连串的、对驱动程序和驱动程序的函数并且在驱动程序和驱动程序的函数之间的调用,以便到达最终设备。例如,在Windows?中,应用可以使用BitBlt函数来调用gdi32.dll,gdi32.dll可以使用NtGDIBitBlt函数来调用ntdll.dll,ntdll.dll可以使用NtGDIBitBlt来调用win32k.sys,win32k.sys可以调用图形I/O驱动程序,图形I/O驱动程序可以访问显示设备。[0434]在步骤3010,0/S下层安全代理可以截取I/O操作的内容(例如,在显示设备上显示的图像、写到盘驱动器的数据等等)。[0435]在步骤3015,0/S下层安全代理可以修改I/O内容。例如,可以用“经欺骗的”或“哑元”内容来修改内容,以使得尝试攻击应用I/o路径的恶意软件仅可以访问经修改内容而不是构成原始内容的敏感信息。ο/s下层安全代理可以以任何合适的方式修改I/O内容。例如,为了替换要显示给显示设备的图像,可以把经修改内容代替原始内容作为参数传送给位块传送操作。在特定的示例中,ο/s下层安全代理可以用预先确定的哑元内容替换敏感的文件或电子邮件的文本内容。[0436]在步骤3020,0/S下层安全代理可以通过应用I/O路径传送用于正常操作的经修改内容,包括该应用在其上执行的操作系统的操作,以及在操作系统和设备之间的驱动程序。在这一步骤期间,影响应用I/o路径恶意软件会尝试利用I/O内容。然而,所利用的任何数据可以是由ο/s下层安全代理插入的经修改的哑元内容,因而保护原始内容免遭利用。[0437]在步骤3025,0/S下层安全代理可以在经修改内容到达I/O设备(例如,在设备的通信端口或具有I/o设备的电子设备处)时截取经修改内容。在步骤3030,0/S下层安全代理可以用原始内容替换经修改内容。例如,如果I/O写访问包括在Windows操作系统中把数据从应用传送到显示设备,则可以通过钩住具有显示设备的电子设备的I/O端口、图形I/O驱动程序的存储器挂钩或通过钩住或触发来自图形I/O驱动程序的显示命令的执行来实现替换映像。因此,可以在应用和设备之间带外传输原始内容,保持受到保护免遭尝试在传统应用I/O路径中利用该内容的恶意软件。[0438]在步骤3035,0/S下层安全代理可以判断经修改内容是否受到类似恶意软件的行为影响。例如,基于规则(例如,安全规则114、220、222、438、434、436、518、707、721和/或723),0/S下层安全代理可以判断已截取的经修改内容是否具有指示其受到恶意软件影响的特性(例如,当已修改数据自身在应用I/O路径中被修改时,如果已修改数据通过应用I/O路径)。另外,如果0/S下层安全代理判断经修改内容受类似恶意软件的行为影响,则0/S下层安全代理可以采取矫正动作(例如,移除、隔离和/或以另外方式使恶意软件失效的动作)。另外,在一些实施例中,0/S下层安全代理可以把关于发生类似恶意软件的行为的信息(例如,取证信息)传输给保护服务器。[0439]图31是用于保护在应用和输入/输出设备之间的读访问的输入/输出路径的系统3100的示例实施例。系统3100可以包括电子设备3104,要保护电子设备3104免遭对电子设备2104的应用输入/输出(I/O)路径的恶意软件攻击。电子设备3104可以包括操作系统下层安全代理3116、I/O设备3126、应用3110、操作系统3112和驱动程序3111。系统3100可以包括电子设备3104,要保护电子设备3104免遭对电子设备2104的应用输入/输出(I/O)路径的恶意软件攻击。电子设备3104可以包括操作系统下层安全代理3116、I/O设备3126、应用3110、操作系统3112和驱动程序3111。电子设备3104可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备401、图7的电子设备701、图29的电子设备2904和/或其任何组合实现,或者被配置为实现它们的功能性。[0440]0/S下层安全代理3116可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442、PC固件安全代理444或0/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708、图29的0/S下层安全代理2916和/或其任何组合实现,或者被配置为实现它们的功能性。Ο/S下层安全代理3116可以被配置为保护电子设备3104的应用I/O路径免遭恶意软件。I/O设备3126可以全部地或部分地由图2的设备226、图4的显示器424或存储426、图5的输入-输出设备502、图29的I/O设备2926和/或其任何组合实现,或者被配置为实现它们的功能性。应用3110可以全部地或部分地由图1的应用110、图2的应用210、图4的应用410、图7的应用709、图29的应用2910和/或其任何组合实现,或者被配置为实现它们的功能性。驱动程序3111可以全部地或部分地由图1的驱动程序111、图2的驱动程序211、图4的驱动程序411、图7的驱动程序711、图29的驱动程序2911和/或其任何组合实现,或者被配置为实现它们的功能性。操作系统3112可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图29的操作系统2912和/或其任何组合实现,或者被配置为实现它们的功能性。[0441]0/S下层安全代理3116可以被配置为保护电子设备3104的应用I/O路径免遭恶意软件。如图31中的箭头所示出的,以及如结合下面的图32所描述的,0/S下层安全代理3116可以经由应用I/O路径捕获数据的传送。一旦捕获,0/S下层安全代理3116可以截取结合I/O读访问要从I/O设备3126递送到应用3110的内容。0/S下层安全代理3116可以修改已截取的I/O内容并通过正常的I/O路径传送经修改内容(例如,经由操作系统3112和驱动程序3111)。这样的经修改内容可以包括“经欺骗的”或“哑元”内容,以使得能够截取I/O路径数据的任何恶意软件将截取哑元数据而不是实际的用户数据。当经修改的I/O内容到达I/O设备3126的设备驱动程序时,0/S下层安全代理3116可以截取经修改的I/O内容,并用原始内容来替换它,因而保护I/O传送免遭恶意软件攻击。另外,基于规则(例如、安全规则114、220、222、438、434、436、518、707、721和/或723),0/S下层安全代理3116可以检测在正常的I/O路径上传送的经修改内容是否受到类似恶意软件的行为(例如,指示经修改内容被嗅探、被钩住和/或以另外方式受到攻击的行为)影响,并且如果检测到类似恶意软件的行为就采取矫正动作。在一些实施例中,0/S下层安全代理3116把关于发生类似恶意软件的行为的信息传输给保护服务器202。例如,0/S下层安全代理3116可以把取证信息传输给保护服务器202,取证信息可以辅助保护服务器202标识引起类似恶意软件的行为的恶意软件和/或防止进一步感染电子设备3104和/或其他电子设备。这样的取证信息可以包括但不限于在其中发生该行为的电子设备的身份、标识类似恶意软件的行为的0/S下层安全代理、其中发生类似恶意软件的行为的设备3126和/或应用I/O路径、被0/S下层安全代理放置到I/O路径的经修改内容和/或已截取的经修改数据(指示潜在恶意软件对经修改数据做出的修改)。[0442]图32是用于保护在应用和输入/输出设备之间的读访问的输入/输出路径的方法3200的示例实施例。在步骤3202,0/S下层安全代理可以判断应用I/O路径是否易受恶意软件攻击的攻击。步骤3202可以类似于方法3000的步骤3002。在步骤3203,如果判断应用I/O路径易受攻击,则方法3200可以进行到步骤3205。否则,方法3200可以返回到步骤3202,且可以不采取应用I/O路径保护,直到判断应用I/O路径易受攻击的时刻。步骤3203可以类似于方法3000的步骤3003。[0443]在步骤3205,0/S下层安全代理可以捕获来自设备的对应用(例如,显示器、盘驱动器、键盘等等)的I/o读访问。在步骤3210,0/S下层安全代理可以截取I/O操作的内容(例如,从键盘接收到的击键、要从盘驱动器读取的数据等等)。[0444]在步骤3215,0/S下层安全代理可以修改I/O内容。例如,用“经欺骗的”或“哑元”内容来修改内容,以使得尝试攻击应用I/o路径的恶意软件仅可以访问经修改内容而不是构成原始内容的敏感信息。Ο/s下层安全代理可以以任何合适的方式修改I/O内容。[0445]在步骤3220,0/S下层安全代理可以通过应用I/O路径传送用于正常操作的经修改内容,包括该应用在其上执行的操作系统的操作,以及在操作系统和设备之间的驱动程序。在这一步骤期间,影响应用I/o路径恶意软件会尝试利用I/O内容。然而,所利用的任何数据可以是由ο/s下层安全代理插入的经修改的哑元内容,因而保护原始内容免遭利用。[0446]在步骤3225,0/S下层安全代理可以在经修改内容到达应用时截取经修改内容。在步骤3230,0/S下层安全代理可以用原始内容替换经修改内容。因此,可以在应用和设备之间带外传输原始内容,保持受到保护免遭尝试在传统应用I/O路径中利用该内容的恶意软件。[0447]在步骤3235,0/S下层安全代理可以判断经修改内容是否受到类似恶意软件的行为影响(例如,当已修改数据自身在应用I/o路径中被修改时,如果已修改数据通过应用I/O路径)。例如,基于规则(例如、安全规则114、220、222、438、434、436、518、707、721和/或723),0/S下层安全代理可以判断已截取的经修改内容是否具有指示其受到恶意软件影响的特性。另外,如果0/S下层安全代理判断经修改内容受类似恶意软件的行为影响,0/S下层安全代理可以采取矫正动作(例如,例如,移除、隔离和/或以另外方式使恶意软件失效的动作)。另外,在一些实施例中,0/S下层安全代理可以把关于发生类似恶意软件的行为的信息(例如,取证信息)传输给保护服务器。[0448]另外,在一些实施例中,在应用I/O路径上传送的哑元数据(例如,在方法3000的步骤3015和3020和/或方法3200的步骤3215和3220中)可以被用来跟踪电子设备2904和/或电子设备3104上恶意软件的存在。例如,当在第一设备的应用在网络(例如,由第二电子设备主控的银行业务或其他金融网站)上把敏感信息传输给第二电子设备,0/S下层安全代理可以把哑元信息插入到I/O路径中,该哑元信息可以欺骗对第二电子设备的访问(例如,可以把“假的”用户名和密码提供给银行业务网站的哑元信息)。第二电子设备可以包括其自己的安全代理,使得在以这种方式欺骗第二设备时,第二电子设备的安全代理可以被配置为跟踪在访问期间采取的动作(例如,在欺骗访问期间在银行业务网站采取的动作,例如改变概况信息或其他动作),以判断是否已经发生了类似恶意软件的行为。如果第二电子设备处的安全代理判断已经发生了类似恶意软件的行为,那么,第二电子设备可以采取矫正动作。例如,第二电子设备处的安全代理可以传输适当的消息(例如,传输到通信上耦合到第二电子设备的保护服务器102)以便指示类似恶意软件的行为的存在。这样的消息可以包括取证迹象,取证迹象包括,例如,类似恶意软件的行为和/或第一电子设备的身份(例如,因特网协议地址或其他标识信息)的描述。[0449]图33是用于检测和修复电子设备3304上的隐藏进程的系统3300的示例实施例。0/S内部安全代理3318和/或0/S下层安全代理3316可以在电子设备3304上操作以便检测和修复恶意感染,例如被配置为隐藏电子设备3304上正在运行的进程的操作恶意软件。电子设备3304可以包括被耦合到存储器3308的处理器3306、操作系统3312和一个或多个进程3373。电子设备3304可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701和/或其任何组合实现,或者被配置为实现它们的功能性。处理器3306可以全部地或部分地由图2的处理器208、图4的处理器408、图7的处理器702和/或其任何组合实现,或者被配置为实现它们的功能性。存储器3308可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703和/或其任何组合实现,或者被配置为实现它们的功能性。操作系统3312可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713和/或其任何组合实现,或者被配置为实现它们的功能性。Ο/S内部安全代理3318可以全部地或部分地由图2的Ο/S内部安全代理218、图4的Ο/S内部安全代理418、图7的Ο/S内部安全代理719和/或其任何组合实现,或者被配置为实现它们的功能性。Ο/S下层安全代理3316可以全部地或部分地由图1的Ο/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442、PC固件安全代理444或Ο/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708和/或其任何组合实现,或者被配置为实现它们的功能性。[0450]进程3373可以被配置为在电子设备3304上操作。在电子设备3304上操作的一个或多个进程3373可以是与恶意软件相关联的恶意进程。电子设备3304上的恶意软件可以操作为掩饰一个或多个恶意进程3373的存在,以便避免反恶意软件软件的检测。例如,操作系统3312可以包括操作系统内核存储器3380。操作系统内核存储器3380可以包括用于跟踪电子设备3304上的进程的执行的一个或多个机制。在一个示例中,这样的机制可以包括活动进程列表3384。活动进程列表3384可以以数据结构、记录、文件或用于跟踪在电子设备3304上操作的进程的任何其他合适的方法实现。例如,如果进程3373b是与恶意软件相关联的恶意进程,则电子设备3304上的恶意软件可以修改活动进程列表3384以便移除对进程3373b的引用。因而,在判断哪些进程在电子设备上3304活动运行且应检查以便发现恶意软件时,在电子设备3304上运行的安全软件不把进程3373b识别为活动进程以供检查。[0451]操作系统3312可以包括就绪队列3322。就绪队列3322可以包括一个或多个合适的数据结构(例如,数组、表、列表等等)陈述在电子设备3304上操作的活动线程。活动进程3373可以包括一个或多个个体线程。线程可以被认为是在活动进程3373内的、可以与从活动进程3373的其他线程分离地独立调度以便由电子设备3304执行的处理单元(例如,一个或多个指令)。作为Windows?操作系统中的就绪队列3322的说明性示例,就绪队列3322可以由被称为KiDispatcherReadyListHead变量实现。就绪队列3322也可以包括关于活动线程的各种元数据,例如,包括该线程的进程的标识符,这样的进程的映像名称、开始地址、用户模式地址、设备对象和/或其他合适的信息。在Windows?操作系统中,这样的活动进程信息可以被包括在与该线程相关联的执行线程(“ETHREAD”)数据结构中。[0452]在系统3300的操作期间,0/S内部安全代理3318和/或0/S下层安全代理3316可以引起安全设备驱动程序3370在操作系统3312上执行。安全设备驱动程序3370可以以驱动程序、模块、可执行程序、DLL或用于提供内核模式设备驱动程序服务的任何其他合适的机制实现。安全设备驱动程序3370可以被配置为调用操作系统3312的各种部分来列举在电子设备3304上运行的进程。例如,安全设备驱动程序3370可以被配置为检查内核存储器3380或活动进程列表3384。安全设备驱动程序3370可以被配置为传输安全设备驱动程序3370可以检测的活动进程的第一列表3373(例如,活动进程列表3384)。安全设备驱动程序3370可以被配置为把活动进程列表3384传输给Ο/S内部安全代理3318和/或Ο/S下层安全代理3316。在一个实施例中,安全设备驱动程序3370可以被配置为经由超级调用把与给定的已检测进程相关联的执行进程(“EPROCESS”)结构传送给Ο/S下层安全代理3316。因为安全设备驱动程序3370在与操作系统相同的特权的执行环或比操作系统较少特权的执行环运行,由安全设备驱动程序3370列举的活动进程可以限于出现在活动进程列表3384上的那些活动进程,这意味着已经修改活动进程列表3384以便移除对它们自身的引用的恶意进程不会被安全设备驱动程序3370列举。在Windows?操作系统中,安全设备驱动程序3370可以被配置为使用函数ZwQuerySystemlnformation来从操作系统请求进程列表,标识要判断的SystemProcessInformation。0/S下层安全代理3316可以被配置为也使用这样的函数,且在执行这样的动作时更加安全。安全设备驱动程序3370可以把所列举的进程放置在活动进程的第一列表3385。在某些实施例中,第一列表3385可以基本上等效于活动进程列表3384。在其他实施例中,可以不创建分离的第一列表3385,且安全设备驱动程序3370可以改为使用活动进程列表3384代替这样的第一列表3385。[0453]相反,0/S内部安全代理3318和/或0/S下层安全代理3316可以在与操作系统3312相同特权的执行环或比操作系统3312更多特权的执行环运行,且因此,可以列举在电子设备3304上执行的个体线程。至少基于这样的已列举线程,0/S内部安全代理3318和/或0/S下层安全代理3316可以确定在电子设备3304上执行的所有活动进程3373,包括已经从活动进程列表3384移除对它们自身的引用的恶意进程。例如,在某些实施例中,0/S内部安全代理3318和/或0/S下层安全代理3316可以扫描就绪队列3322并列举就绪队列3322中的所有线程,把线程放置在列表中。对于每一线程,0/S内部安全代理3318和/或0/S下层安全代理3316可以定位持有该线程的进程和关于这样的进程的其他信息(例如,通过引用元数据,例如与该线程相关联的ETHREAD信息),因而允许0/S内部安全代理3318列举活动进程3373的第二列表3386,包括已经从活动进程列表3384移除对它们自身的引用的恶意进程。[0454]为了进一步阐释特定的实施例,与线程相关联的ETHREAD数据结构可以包括多个兀数据字段,包括ThreadsProcess字段、StartAddress字段、DeviceToVerify字段、Win32StartAddress字段和ThreadListEntry字段。通过分析ThreadsProcess字段,0/S内部安全代理3318和/或0/S下层安全代理3316可以标识持有线程的进程,从中可以确定该进程的进程标识符和映像名称。从StartAddress和Win32StartAddress,0/S内部安全代理3318和/或0/S下层安全代理3316可以标识存储器中的哪些代码正在执行进程,因而允许如果发现持有该线程的进程是可疑的则进一步标识可疑驱动程序、应用和/或其他程序。基于DeviceToVerify,0/S内部安全代理3318和/或0/S下层安全代理3316可以判断设备对象是否与线程相关联,且因而,如果持有该线程的进程被发现是可疑的则标识驱动程序对象和恶意软件驱动程序。ThreadListEntry可以辅助在相同的进程内列举线程。[0455]然后,0/S内部安全代理3318可以比较活动进程3373的第一列表3385和活动进程3373的第二列表3386,并把出现在第二列表3386中且不出现在第一列表3385的活动进程3373标识标识为可疑进程。这样可疑进程的迹象可以是对在电子设备3304上运行的防病毒或反恶意软件软件以及操作系统3312隐藏的恶意软件的迹象。[0456]在其他实施例中,至少基于已标识线程,0/S下层安全代理3316可以扫描就绪队列3322以便列举线程并列举活动进程3373的第二列表3386(例如,通过引用元数据,例如与线程相关联的ETHREAD信息)。在这样的实施例中,0/S下层安全代理3316可以从0/S内部安全代理3318接收由安全设备驱动程序3370产生的活动进程的第一列表3385,或者可以通过直接从存储器读取访问活动进程3373的第一列表3385。然后,0/S下层安全代理3316可以比较活动进程3373的第一列表3385和活动进程3373的第二列表3386,并把出现在第二列表3386中且不出现在第一列表3385中的活动进程3373标识可疑进程。这样可疑进程可以对在电子设备3304上运行的防病毒或反恶意软件软件以及操作系统3312隐藏。这样可疑进程的迹象可以是对在电子设备3304上运行的防病毒或反恶意软件软件以及操作系统3312隐藏的恶意软件的迹象。[0457]如果0/S内部安全代理3318和/或0/S下层安全代理3316判断存在在电子设备3304上运行的隐藏进程的迹象,0/S内部安全代理3318和/或0/S下层安全代理3316可以被配置为扫描操作系统3312、操作系统内核存储器3380或电子设备3304的其他元素,以便判断是否已经做出与这样的进程相关的任何修改。例如,0/S内部安全代理3318和/或0/S下层安全代理3316可以被配置为扫描以便发现已知由恶意软件实施的任何存储器修改。在一些实施例中,0/S内部安全代理3318或0/S下层安全代理3316可以被配置为扫描操作系统代码部分3382以及活动进程列表3384。在这些和其他实施例中,0/S内部安全代理3318和/或0/S下层安全代理3316可以利用与可疑进程相关联的线程的线程元数据(例如,ETHREAD信息)来确定要扫描以便发现修改的电子设备3304的元素和/或其部分。[0458]如果找到了恶意修改,则0/S内部安全代理3318或0/S下层安全代理3316可以采取矫正动作。例如,0/S内部安全代理3318或0/S下层安全代理3316可以被配置为修复操作系统内核存储器3380中找到的任何恶意修改。作为另一示例,0/S内部安全代理3318或0/S下层安全代理3316可以被配置为移除通过其对操作系统内核存储器380中的存储器修改的观察所判断的任何检测到的rootkit感染。作为进一步的示例,0/S内部安全代理3318或0/S下层安全代理3316可以被配置为修复对任何内部数据结构或代码段的任何感染。在这些和其他实施例中,0/S内部安全代理3318和/或0/S下层安全代理3316可以利用与可疑进程相关联的线程的线程元数据(例如,ETHREAD信息)来判断要采取的矫正动作(例如,这样的元数据可以标识恶意软件进程的具体存储器位置、负责可疑行为的驱动程序等等)。0/S内部安全代理3318或0/S下层安全代理3316可以被配置为对在由安全设备驱动程序3370确定的进程的第一列表3385和从就绪队列3322中出现的线程元数据的分析确定的进程的第二列表3386之间出现的每一矛盾重复扫描过程以便发现隐藏进程的修改。[0459]图34是用于检测和修复电子设备上的隐藏进程的方法的示例实施例。在步骤3405,一个或多个安全代理(例如,0/S内部安全代理3318和/或0/S下层安全代理3316)可以引起安全设备驱动程序在电子设备的操作系统上执行。在步骤3410,安全设备驱动程序可以经由对电子设备的操作系统的标准系统调用列举在电子设备上运行的活动进程。安全设备驱动程序可以把所列举的进程放置在活动进程的第一列表。因为安全设备驱动程序可以在与操作系统相同特权的执行环运行或在比操作系统较少特权的执行环运行,安全设备驱动程序所列举的活动进程可以限于出现在操作系统的活动进程列表上的那些活动进程,这意味着已经修改活动进程列表以便移除对它们自身的引用的恶意进程不会被安全设备驱动程序列举。[0460]在步骤3415,一个或多个安全代理可以扫描线程就绪队列,且至少基于这样的扫描,列举在电子设备上执行的个体线程并把它们放置字在线程列表中。在步骤3420,至少基于与该线程相关联的元数据(例如,与线程相关联的ETHREAD信息或陈述持有线程的进程的其他元数据),一个或多个安全代理可以定位持有线程的进程并产生活动进程的第二列表。第二列表可以包括已经从活动进程列表移除对它们自身的引用的恶意进程。[0461]在步骤3425,一个或多个安全代理可以比较活动进程的第一列表和活动进程的第二列表。在步骤3430,一个或多个安全代理可以把出现在第二列表且不出现在第一列表的活动进程标识为可疑进程。这样可疑进程的迹象的可以是对在电子设备上运行的防病毒或反恶意软件软件和/或在电子设备上执行的操作系统隐藏的恶意软件的迹象。[0462]在步骤3435,如果一个或多个安全代理判断存在在电子设备上运行的隐藏进程的迹象,一个或多个安全代理可以判断是否已经由可疑进程做出对电子设备的部分的修改。为了判断是否已经做出修改,一个或多个安全代理可以扫描操作系统和/或操作系统内核存储器,以便判断是否已经做出与这样的进程相关的任何修改。例如,一个或多个安全代理可以扫描以便发现由恶意软件实施的任何存储器修改,和/或可以扫描操作系统内核存储器的操作系统代码部分和/或活动进程列表。[0463]在步骤3440,如果已经找到修改,则一个或多个安全代理可以采取矫正动作。例如,一个或多个安全代理可以修复在操作系统内核存储器中找到的任何恶意修改。作为另一示例,一个或多个安全代理可以移除通过其对操作系统内核存储器中的存储器修改的观察确定的任何检测到的rootkit感染。作为进一步的示例,一个或多个安全代理可以修复对任何内部数据结构或代码段的任何感染。可以对每一已标识的可疑进程重复的方法3400的各部分。因此,一个或多个安全代理可以对在由安全设备驱动程序3370确定的进程的第一列表3385和从就绪队列3322中出现的线程元数据的分析确定的进程的第二列表3386之间出现的每一矛盾重复扫描过程以便发现隐藏进程的修改。[0464]有利地,以上所描述的方法和系统可以提供对rootkit和/或其他恶意软件的标识,而不要求对操作系统内核的任何函数的挂钩或捕获。[0465]图35是用于检测和修复电子设备3504上的隐藏进程的系统3500的示例实施例。0/S下层安全代理3516、安全设备驱动程序3570和安全动态链接库(DLL)3572可以在电子设备3504上操作以便检测和修复恶意感染,例如被配置为隐藏在电子设备3504上正在运行的进程的操作的恶意软件。电子设备3504可以包括被耦合到存储器3508的处理器3506、操作系统3512、安全DLL3572、0/S下层安全代理3516、虚拟机控制结构3552(“VMCS”)一个或多个进程3573(例如,进程3573a、3573b和3573c)、与这样的进程相关联的地址空间3587(例如,地址空间3587a、3587b和3587c)和一个或多个系统资源,例如类似于CR3控制寄存器3560的控制寄存器。处理器寄存器3530可以包括诸如例如CR3寄存器3560或任何其他寄存器3568的此类寄存器。尽管作为处理器寄存器3530的示例给出CR3,但可以使用任何合适的控制寄存器。CR3寄存器3560可以是被配置为控制或改变电子设备3504上的CPU的一般行为的处理器寄存器。CR3寄存器3560可以被配置为允许诸如在电子设备3504上运行的处理器3506之类的处理器把虚拟存储器地址转换成物理存储器地址。CR3寄存器3560可以被配置为定位用于当前所请求的任务的页面目录和页面表,当前所请求的任务例如驻留在栈区中且被选择为供Ο/S调度程序操作的任务。可以以任何合适的虚拟定址控制寄存器实现CR3寄存器3560。根据电子设备3504的特定的设计或实现,其他寄存器268可以出现在处理器寄存器3530。处理器寄存器3530可以与处理器3506或电子设备3504的另一处理器相关联。[0466]电子设备3504可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701、图33d的电子设备3304和/或其任何组合实现,或者被配置为实现它们的功能性。处理器3506可以全部地或部分地由图2的处理器208、图4的处理器408、图7的处理器702、图33的处理器3306和/或其任何组合实现,或者被配置为实现它们的功能性。存储器3508可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703、图33的存储器3308和/或其任何组合实现,或者被配置为实现它们的功能性。操作系统3512可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图33的操作系统3312和/或其任何组合实现,或者被配置为实现它们的功能性。0/S下层安全代理3516可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442、PC固件安全代理444或0/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708、图33的0/S下层安全代理3316和/或其任何组合实现,或者被配置为实现它们的功能性。[0467]电子设备3504可以包括虚拟机控制结构1152。在一个实施例中,虚拟机控制结构1152可以驻留在0/S下层安全代理3516中。在另一实施例中,虚拟机控制结构1152可以通信上耦合到0/S下层安全代理3516。在这样的实施例中,虚拟机控制结构1152的功能性中的一些或全部可以由0/S下层安全代理3516实现。此外,在这样的实施例中,0/S下层安全代理3516的功能性中的一些或全部可以由虚拟机控制结构1152实现。虚拟机控制结构1152可以完全地或部分地由图1的0/S下层捕获代理104、图2的VMCS、图4的固件安全代理440、442或PC固件安全代理444、图5的固件安全代理516、或图7的微代码安全代理706实现。虚拟机控制结构1152可以在数据结构、记录、文件、模块或用于捕获对诸如处理器寄存器3530或其他资源之类的资源的请求的任何其他合适的实体实现。在一个实施例中,例如其中系统3500可以完全地或部分地由图2的系统200实现的实施例,虚拟机控制结构1152和0/S下层安全代理3516可以被配置为虚拟化对诸如处理器寄存器3530或任何其他合适的系统资源之类的电子设备3504的系统资源的访问。[0468]虚拟机控制结构1152可以包括用于捕获操作系统3512对诸如处理器寄存器3530之类的系统资源所请求的操作的一个或多个标志1154。标志1154可以包括捕获的标志,例如,进程上下文切换标志3556和/或读函数标志3558。标志1154可以包括适用于捕获对诸如处理器寄存器3530之类的系统资源的访问的任何标志。0/S下层安全代理3516可以被配置为设置虚拟机控制结构1152的哪些标志1154将被用来捕获对系统资源的访问。可以被虚拟机控制结构1152和0/S下层安全代理3516捕获和/或守护的系统资源可以包括但不限于处理器寄存器3530。[0469]进程3573可以被配置为在电子设备3504上操作。电子设备3504上的一个或多个进程3573操作可以是与恶意软件相关联的恶意进程。电子设备3504上的恶意软件可以操作为掩饰进程3573的一个或多个恶意进程的存在以便避免被反恶意软件软件检测。例如,操作系统3512可以包括操作系统内核存储器3580。操作系统内核存储器3580可以包括用于跟踪电子设备3504上的进程的执行的一个或多个机制。在一个示例中,这样的机制可以包括活动进程列表3584。活动进程列表3584可以以数据结构、记录、文件或用于跟踪在电子设备3504上操作的进程的任何其他合适的方法实现。例如,如果进程3573b是与恶意软件相关联的恶意进程,则电子设备3504上的恶意软件可以修改活动进程列表3584以便移除对进程3573b的引用。因而,在判断哪些进程在电子设备上3504活动运行且应检查以便发现恶意软件时,在电子设备3504上运行的安全软件将不把进程3573b识别为活动进程以供检查。[0470]进程3573或在电子设备3504上操作的其他实体,在使用虚拟存储器时,作为正常操作的一部分,可以要求使用与进程3573中的一个相关联的进程上下文切换。为了促进虚拟存储器的使用,操作系统3512可以被配置为实施进程上下文切换、读取或附接到给定进程。这样的动作可以要求操作系统3512尝试访问系统资源,包括诸如CR3寄存器3560之类的控制寄存器。操作系统3512可以产生以命令“movevalue,CR3(移动值,CR3)”的形式的对CR3寄存器3560的读取。操作系统3512可以被配置为以命令“moveCR3,value(移动CR3,值)”的形式尝试改变CR3寄存器3560的值。[0471]虚拟机控制结构1152可以被配置为截取操作系统3512对访问包括寄存器3530的电子设备3504的系统资源的尝试。虚拟机控制结构1152可以被配置为尝试捕获操作系统3512访问电子设备3504的系统资源的某些尝试命令。虚拟机控制结构1152可以被配置为使用标志来截取操作系统3512的命令。在一个实施例中,虚拟机控制结构1152可以包括标志3556-3558以便截取进程上下文切换和对CR3寄存器3560的读命令。0/S下层安全代理3516可以被配置为在虚拟机控制结构1152中设置这样的标志3556-3558。虚拟机控制结构1152可以被配置为产生VM退出,这是对诸如与CR3寄存器3560相关联的读取或进程上下文切换命令之类的已标记操作的截取所产生的事件。在一个实施例中,虚拟机控制结构1152可以被配置为为对与虚拟存储器相关联的控制寄存器的任何已尝试访问产生VM退出。每当在电子设备3504上运行的进程3573中的一个尝试实施进程上下文切换,或读取与进程相关联的进程空间,虚拟机控制结构1152可以被配置为产生VM退出并把关于所尝试的命令信息传递给0/S下层安全代理3516。为了阐释,0/S下层安全代理3516可以被配置为把对CR3寄存器3560(或另一寄存器3568)的所有这样的动作记录在寄存器改变3576中。寄存器改变3576可以以文件、结构、数据结构、记录或用于把改变的历史存储到CR3寄存器3560或另一寄存器3568的任何其他合适的机制实现。通过记录对CR3寄存器3560的所有访问,0/S下层安全代理3516因而可以拥有已经在电子设备3504中尝试进程上下文切换的所有进程3573的记录。作为寄存器改变3576的这样的改变记录可以被配置为充当在电子设备3504上运行的进程的记录。0/S下层安全代理3516可以被配置为从寄存器改变3576列表确定正在运行的进程3586,包括在电子设备3504上运行的所有进程。[0472]通过截取对CR3寄存器的访问,0/S下层安全代理3516可以通过拒绝在进出执行时交换进程的能力来冻结执行。通过冻结执行,0/S下层安全代理3516可以被配置为收集正在运行的进程的列表而无需进入与恶意软件的竞态条件,恶意软件可以工作为避免或破坏矫正措施或检测措施。[0473]替代地,0/S下层安全代理3516可以被配置为通过监视用于上下文交换的操作系统函数(例如,Windows?函数SwapContext)确定运行进程3586的列表。对操作系统上下文交换函数的监视可以经由与函数调用的代码段相关联的存储器的处理器级别监视或通过观察指向这样的代码段执行指令指针(“EIP”)执行。例如,可以在安全规则中映射和描述SwapContext驻留在其中的物理存储器位置或虚拟存储器位置。SwapContext驻留在其中的物理地址或虚拟存储器地址的标志可以被设置为以使得可以捕获对存储器的任何已尝试执行。例如,如果Ο/S下层安全代理3516完全地或部分地由图2的SVMM安全代理217实现,那么,Ο/S下层安全代理3516可以设置VMCSl152以便捕获对SwapContext驻留在其中的虚拟存储器页面的已尝试执行。在另一示例中,如果Ο/S下层安全代理3516完全地或部分地由图7的微代码安全代理708实现,那么,Ο/S下层安全代理3516可以设置VMCS1152以便捕获对开始SwapContext函数的代码部分的物理存储器地址的已尝试执行。[0474]操作系统3512可以包括安全设备驱动程序3570。安全设备驱动程序3570可以以驱动程序、模块、可执行程序、DLL或用于提供内核模式设备驱动程序服务的任何其他合适的机制实现。安全设备驱动程序3570可以被配置为调用操作系统3512的各种部分以便列举在电子设备3504上运行的运行进程。例如,安全设备驱动程序3570可以被配置为检查内核存储器3580或活动进程列表3584。安全设备驱动程序3570可以被配置为传输安全设备驱动程序3570可以检测的运行进程列表3580。安全设备驱动程序3570可以被配置为把运行进程列表3580传输给0/S下层安全代理3516。在一个实施例中,安全设备驱动程序3570可以被配置为经由超级调用把与给定的已检测进程相关联的EPROCESS结构传送给0/S下层安全代理3516。一旦接收到安全设备驱动程序3570所检测的活动进程的EPROCESS结构,0/S下层安全代理3516可以被配置为计算与从安全设备驱动程序3570接收到的每一个这样的EPROCESS结构相关联的CR3寄存器3560值(或其他寄存器3568值)。0/S下层安全代理3516可以被配置为把从安全设备驱动程序3570接收到的运行进程列表3580与0/S下层安全代理3516从寄存器改变3576确定的运行进程列表3586进行比较。0/S下层安全代理3516可以被配置为判断,相比于0/S下层安全代理3516已经编译的寄存器改变3576,是否丢失了从来自安全设备驱动程序3570的运行进程列表3580导出的任何CR3值。这样的矛盾可以指示隐藏进程。这样的进程可以对安全设备驱动程序3570、在电子设备3504上运行的任何防病毒或反恶意软件软件以及操作系统3512隐藏。然而,这样的进程的迹象对0/S下层安全代理3516来说是可见的,这是因为这样的隐藏进程尝试例如进程上下文切换或进程地址空间的读取。隐藏进程的这样的迹象可以是经由内核根设备驱动程序的内核模式感染的迹象,因为内核模式安全设备驱动程序3570不能检测隐藏进程。[0475]0/S下层安全代理3516可以判断,丢失的进程不是隐藏进程,而是在编译列表编译的时间之间的正常执行过程中被删除的进程。为了帮助防止把这样的线程错误标识为隐藏进程,0/S下层安全代理3516可以被配置为监视用于创建和删除进程的函数的执行。这样的函数可以包括例如pspProcessCreate或pspTerminateProcess。0/S下层安全代理3516可以被配置为做出其列举动作和观察创建或删除函数的时间戳记录,以使得如果进程丢失,则可以判断在进程被标识为丢失之前是否用删除函数删除了该进程。[0476]如果0/S下层安全代理3516判断存在在电子设备3504上运行的隐藏进程的迹象,则Ο/s下层安全代理3516可以被配置为扫描操作系统3512和操作系统内核存储器3580,以便判断是否已经做出与这样的进程相关的任何修改。0/S下层安全代理3516可以被配置为扫描以便发现已知由恶意软件实施的任何存储器修改。在一些实施例中,0/S下层安全代理3516可以被配置为扫描操作系统代码部分3582以及活动进程列表3584。0/S下层安全代理3516可以被配置为修复在操作系统内核存储器3580中找到的任何恶意修改。0/S下层安全代理3516可以被配置为移除移除通过其对操作系统内核存储器3580中的存储器修改的观察确定的任何检测到的rootkit感染。0/S下层安全代理3516可以被配置为修复对任何内部数据结构或代码段的任何感染。0/S下层安全代理3516可以被配置为对在由0/S下层安全代理3516和安全设备驱动程序3570确定的进程之间出现的每一矛盾重复扫描过程以便发现隐藏进程的存储器修改。安全设备驱动程序3570可以被配置为从0/S下层安全代理3516接收最终的进程列表,例如运行进程列表3586。安全设备驱动程序3570可以被配置为通过对0/S下层安全代理3516的超级调用访问运行进程列表3586。[0477]安全DLL3572可以被配置为在电子设备3504上操作。安全DLL3572可以以动态链接库(DLL)、共享库、可执行程序或用于如下所示执行其函数的任何其他合适的机制实现。安全设备驱动程序3570可以被配置为把安全DLL3572或对安全DLL3572的引用注入到在电子设备3504上运行的每一进程的地址空间,例如进程地址空间3587。进程地址空间3587中的每一个因而可以包含指向安全DLL3572的指针。安全DLL3572可以被配置为列举在电子设备3504上运行的所有用户模式进程。安全DLL3572可以被配置为使用任何合适的技术来列举用户模式进程。例如,安全DLL3572可以被配置为使用Windows?操作系统中的NtQuerySystemlnformation函数,并使用ProcessFirst和ProcessNext函数导航进程。这样的函数也可以由0/S下层安全代理执行。安全DLL3572可以被配置为把其结果编译到运行进程列表3588中。安全DLL3572可以被配置为把运行进程列表3588发送给安全设备驱动程序3570。安全DLL3572可以被配置为经由受保护输入和输出调用发送这样的运行进程列表3588。安全设备驱动程序3570可以被配置为把所接收的运行进程列表3588与它从0/S下层安全代理3516接收运行进程列表3586的列表进行比较。安全设备驱动程序3570可以被配置为判断这样的进程列表中的任何差异可以包括用户模式rootkit攻击。安全设备驱动程序3570或安全DLL3572可以被配置为检查与进程地址空间3587相关联的存储器中的进程代码和数据部分,以便判断是否已经做出任何存储器修改。安全设备驱动程序3570可以被配置为修复在进程地址空间3587中做出的任何存储器修改。安全设备驱动程序3570可以被配置为对在来自安全DLL3572的运行进程列表3588和来自0/S下层安全代理3516的运行进程列表3586之间出现的每一矛盾重复扫描进程地址空间3587、检测存储器修改、和修复这样的存储器修改的过程。[0478]在操作中,进程3573可以在电子设备3504上操作。进程3573中的一个或多个可以被隐藏。例如,进程3573b可以与恶意软件相关联,且可以对在电子设备3504上运行的防病毒或反恶意软件软件隐藏以便掩饰其恶意操作。进程3573可以通过操作系统3512访问电子设备3504的系统资源。为了访问存储器的不同部分,或为了由处理器3508执行,进程3573可以要求访问电子设备3504的控制寄存器。这样的访问可以包括引起进程上下文切换或进程地址空间的读取。这样的要求可以由操作系统3512应对,其中,操作系统3512访问诸如CR3寄存器3560之类的寄存器。虚拟机控制结构1152可以截取这样的请求并为该请求产生VM退出。虚拟机控制结构1152可以把与这样的尝试相关联的信息提供给0/S下层安全代理3516。Ο/S下层安全代理3516可以设置标志,例如在虚拟机控制结构1152上捕获指令“moveCR3,value”3556或“movevalue,CR3”3558的那些标志。0/S下层安全代理3516可以记录对CR3寄存器3560和寄存器改变3576的所有尝试读取或改变。[0479]为了判断在电子设备3504上运行的一个或多个进程3573是否被隐藏,安全设备驱动程序3570可以从操作系统3512判断什么内核模式进程正在操作系统3512上运行。安全设备驱动程序3570可以扫描诸如活动进程列表3584之类的操作系统内核存储器3580的部分来确定这样的进程。安全设备驱动程序3570因而可以具有运行进程列表3580的列表,该列表可以检测电子设备3504的内核模式中的操作。安全设备驱动程序3570可以把运行进程列表3580发送给0/S下层安全代理3516。通过经由超级调用把运行进程列表3580所检测的每一进程的EPROCESS结构传送给0/S下层安全代理3516,安全设备驱动程序3570可以把运行进程列表3580发送给0/S下层安全代理3516。0/S下层安全代理3516可以计算在运行进程列表3580内包含的每一这样的EPROCESS的CR3值。0/S然后,下层安全代理3516可以把运行进程列表3580中的起因于安全设备驱动程序3570的CR3值与它在电子设备3504的操作期间编译的寄存器改变3576进行比较。在运行进程列表3580和寄存器改变3576之间任何矛盾可以是在电子设备3504上隐藏了进程3573中的一个或多个的结果。[0480]如果0/S下层安全代理3516判断存在在电子设备3504上运行的隐藏进程的迹象,则0/S下层安全代理3516可以扫描操作系统3512和操作系统内核存储器3580,以便判断是否已经做出与这样的进程相关的任何修改。0/S下层安全代理3516可以扫描以便发现已知由恶意软件实施的任何存储器修改。在一个实施例中,0/S下层安全代理3516可以扫描操作系统代码部分3582以及活动进程列表3584以便发现存储器修改。0/S下层安全代理3516可以修复在操作系统内核存储器3580中找到的任何恶意修改。0/S下层安全代理3516可以移除通过其对操作系统内核存储器3580中的存储器修改的观察所确定的任何检测到的rootkit感染,或修复对任何内部数据结构或代码段的任何感染。0/S下层安全代理3516可以被配置为对在由0/S下层安全代理3516和安全设备驱动程序3570确定的进程之间出现的每一矛盾重复扫描过程,以便发现隐藏进程的存储器修改。0/S下层安全代理3516可以产生诸如运行进程列表3586之类的最终进程列表并把这样的列表发送给安全设备驱动程序3570。[0481]安全设备驱动程序3570可以把安全DLL3572或对安全DLL3572的引用注入到在电子设备3504上运行的每一进程的地址空间,例如运行进程列表3586。进程地址空间3587中的每一个因而可以包含指向安全DLL3572的指针。安全DLL3572可以列举在电子设备3504上运行的所有用户模式进程。安全DLL3572可以把其结果编译到运行进程列表3588并把运行进程列表3588发送到安全设备驱动程序3570。[0482]安全设备驱动程序3570可以把所接收的运行进程列表3588与从0/S下层安全代理3516接收到的运行进程列表3586的列表进行比较。安全设备驱动程序3570可以判断,这样的进程列表中的任何差异可以指示恶意软件感染,例如用户模式rootkit攻击。安全设备驱动程序3570可以检查与进程地址空间3587相关联的存储器中的进程代码和数据部分,以便判断是否已经做出任何存储器修改,并做出任何必要的修复。安全设备驱动程序3570可以对在来自安全DLL3572的运行进程列表3588和来自Ο/S下层安全代理3516的运行进程列表3586之间出现的每一矛盾重复扫描进程地址空间3587、检测存储器修改和修复这样的存储器修改的过程。[0483]图36是用于检测和修复电子设备上的隐藏进程的方法3600的示例实施例。[0484]在步骤3605,可以截取和记录对控制寄存器的已尝试访问。这样的控制寄存器可以是CR3控制寄存器。可以通过捕获VM退出来截取这样的尝试访问。可以通过在虚拟机控制结构中设置标志来实现这样的截取。可以重复步骤3605,以便在步骤3610构建0/S级别下层的进程列表,该列表可以包括给定时间周期内访问控制寄存器的所有进程的记录。在使用虚拟存储器的系统中,可以访问控制寄存器以便切换和访问这样的虚拟存储器。可以借助于0/S下层安全代理的辅助来实现步骤3605-3610。在方法3600的操作期间根据需要,可以周期性地或按需重复步骤3605-3610,以便为方法3600中要做出的各种比较提供经更新的基准。[0485]在步骤3615,可以从操作系统的内核模式的角度确定在电子设备的操作系统上运行的进程。可以通过使用操作系统的内核模式的列举函数来确定这样的进程。例如,可以访问操作系统的活动进程列表以确定运行进程。在步骤3620,这样的进程可以被用来构建0/S级别的进程列表。在步骤3625,可以计算来自0/S级别的进程列表中的每一进程的EPROCESS结构的控制寄存器值。这样的寄存器值可以允许在0/S级别的进程列表中交叉引用该进程。[0486]在步骤3630,可以比较0/S级别下层的进程列表和0/S级别的进程列表,以便判断是否存在任何矛盾。如果存在在中Ο/s级别的进程列表丢失但在ο/s级别下层的进程列表中存在的任何进程,则在步骤3635,可以判断这样的进程被隐藏且因而是恶意的。[0487]在步骤3640,可以扫描操作系统和系统存储器以便发现与隐藏进程相关联的存储器修改。在一个实施例中,可以扫描这样的资源以便发现进程列举相关的变更。例如,可以扫描操作系统代码段和/或操作系统活动进程列表。在步骤3645,可以修复任何检测到的存储器修改。在步骤3650,可以对所有隐藏进程重复步骤3605-3645,直到在0/S级别下层的进程列表和0/S级别的进程列表的元素之间不存在矛盾。[0488]图37是用于检测和修复电子设备上的隐藏进程的方法3700的示例实施例。方法3700与方法3600的不同之处在于,方法3600涉及包括内核模式进程和用户模式进程两者的列表的创建和比较,而方法3700涉及内核模式进程列表和用户模式处理器列表的单独的创建和比较。通过比较进程在一个列表中存在且在另一个中不存在,可以确定恶意软件进程的性质,例如恶意软件是用户模式rootkit还是内核模式rootkit。而且,rootkit可能已经感染一个或许多进程。[0489]在步骤3705,可以截取和访问对控制寄存器的已尝试访问。这样的控制寄存器可以是CR3控制寄存器。可以通过捕获VM退出来截取这样的已尝试访问。可以通过在虚拟机控制结构中设置标志来实现这样的截取。可以重复步骤3705,以便在步骤3710构建0/S级别下层的进程列表该列表可以包括给定时间周期内访问控制寄存器的所有进程的记录。在使用虚拟存储器的系统中,可以访问控制寄存器以便切换和访问这样的虚拟存储器。可以借助于0/S下层安全代理的辅助来实现步骤3705-3710。在方法3700的操作期间根据需要,可以周期性地或按需重复步骤3705-3710,以便为方法3700中要做出的各种比较提供经更新的基准。[0490]在步骤3715,可以从操作系统的内核模式的角度确定在电子设备的操作系统的内核模式中运行的进程。可以通过使用操作系统的内核模式的列举函数来确定这样的进程。例如,可以访问操作系统的活动进程列表以判断在内核模式中运行的进程。在步骤3720,这样的进程可以被用来构建0/S级别的进程列表。在步骤3725,可以计算来自0/S级别的进程列表中的每一进程的EPROCESS结构的控制寄存器值。这样的寄存器值可以允许在0/S级别的进程列表中交叉引用该进程。[0491]在步骤3730,可以把0/S级别下层的和0/S级别的进程列表进行比较,以判断是否存在任何矛盾。如果存在在ο/s级别的进程列表丢失但出现在ο/s级别下层的进程列表中的任何进程,则在步骤3735可以判断这样的进程可以被隐藏的且因而是恶意的,可能采取内核模式rootkit的形式。在一个实施例中,替代地,可以判断,在0/S级别的进程列表中丢失的进程事实上是用户模式进程。在这样的实施例中,步骤3715可能尚未列举电子设备的用户模式进程。[0492]在步骤3740,可以扫描操作系统和系统存储器以便发现与隐藏进程相关联的存储器修改。在一个实施例中,可以扫描这样的资源以便发现进程列举相关的变更。例如,可以扫描操作系统代码段和/或操作系统活动进程列表。在步骤3745,可以修复任何检测到的存储器修改。在步骤3750,可以对所有隐藏的内核模式进程重复步骤3735-3745,直到在0/S级别下层的进程列表和0/S级别的进程列表的内核模式元素之间不存在矛盾。[0493]在步骤3755,可以确定和列举电子设备的用户模式进程。可以通过把共享库注入到每一运行进程的地址空间中来实现步骤3755。共享库可以调用操作系统的用户模式进程列举函数。在步骤3760,可以利用步骤3755的结果来创建用户级别进程列表。在步骤3765,可以判断在0/S级别下层的进程列表和用户级别进程列表之间的矛盾。不出现在用户级别进程列表中且先前不出现在0/S级别的进程列表中的任何进程,可能是隐藏用户模式进程,且因而与恶意软件相关联的。在步骤3770,可以扫描用户模式的应用和进程空间以便发现存储器修改。可以检查共享库被注入到其中的地址空间的进程代码以便发现这样的存储器修改。在步骤3775可以扫描主控用户模式进程代码以及数据部分的存储器的部分。在步骤3780,可以修复任何检测到的存储器修改。在步骤3785,可以重复步骤3755-3780,直到在0/S级别下层的进程列表和用户级别进程列表的用户模式元素之间不存在矛盾。[0494]图38是用于保护对在电子设备3801上执行的操作系统3813的系统调用的访问的系统3800的示例实施例。系统3800可以包括0/S下层捕获代理3820和已触发事件应对程序3822,它们被配置为在电子设备3801上操作,以便检测来自在诸如操作系统3813之类的电子设备3801的操作系统中运行基于软件的实体的对访问系统调用和/或系统调用表的恶意尝试。此外,0/S下层捕获代理3820和已触发事件应对程序3822可以被配置为使用一个或多个安全规则3808来判断何时捕获对系统调用和/或系统调用表3804的访问以及如何应对与已捕获操作相关联的已触发事件。0/S下层捕获代理3820和已触发事件应对程序3822可以被配置为对已触发事件进行允许、拒绝,或采取其他矫正动作。[0495]电子设备3801可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701、图9的电子设备901、图12的电子设备1201和/或其任何组合实现,或者被配置为实现它们的功能性。电子设备3801可以包括被耦合到存储器3803的一个或多个处理器3802。处理器3802可以全部地或部分地由图2的处理器208、图4的处理器408、图7的处理器702、图9的处理器902、图12的处理器1202和/或其任何组合实现,或者被配置为实现它们的功能性。存储器3803可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703、图9的存储器903、图12的存储器1203和/或其任何组合实现,或者被配置为实现它们的功能性。电子设备3801可以包括操作系统3813,操作系统3813可以包括系统调用表3804、虚拟存储器页面表3806和0/S内部安全代理3819。操作系统3813可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图9的操作系统913、图12的操作系统1213、和/或其任何组合实现,或者被配置为实现它们的功能性。0/S内部安全代理3819可以全部地或部分地由图1的0/S内部安全代理218、图4的0/S内部安全代理418、图7的0/S内部安全代理719、图9的0/S内部安全代理919、图12的0/S内部安全代理1219和/或其任何合适的组合实现,或者被配置为实现它们的功能性。安全规则3808可以是由图1的安全规则114、图2的安全规则220、222、图4的安全规则420、434、436、438、图5的安全规则518、图7的安全规则707、721、723、图9的安全规则908、921、图12的安全规则1208、1221和/或其任何组合实现,或者被配置为实现它们的功能性。保护服务器3818可以全部地或部分地由图1的保护服务器102、图2的保护服务器202和/或其任何组合实现,或者被配置为实现它们的功能性。[0496]0/S下层捕获代理3820可以由图1的0/S下层捕获代理104、图2的SVMM216、图4的固件安全代理440、442和/或PC固件安全代理444、图5的固件安全代理516和/或图7的微代码安全代理708、图9的0/S下层捕获代理920、图12的0/S下层安全代理1220和/或其任何组合实现,或者被配置为实现它们的功能性。已触发事件应对程序3822可以由图1的已触发事件应对程序108、图2的SVMM安全代理217、图4的0/S下层代理450、图7的0/S下层代理712、图9的已触发事件应对程序922和/或其任何组合实现,或者被配置为实现它们的功能性。在各种实施例中,0/S下层捕获代理3820的功能性中的一些可以由已触发事件应对程序3822实现,和/或已触发事件应对程序3822的功能性中的一些可以由0/S下层捕获代理3820实现。此外,0/S下层捕获代理3820和已触发事件应对程序3822可以在相同的软件模块中实现。[0497]页面表3806可以被实现为数据结构且可以被用来实现操作系统3813的虚拟存储器系统。虚拟存储器系统是把对电子设备3801的存储器3803的访问虚拟化的存储器管理系统。在虚拟存储器系统中,给在操作系统3813上执行的软件进程提供虚拟地址空间,进程可以把该虚拟地址空间看作是连续的存储器块。实际上,虚拟地址空间可以跨越不同的物理存储器区域而散布。在进程请求访问存储器时时,操作系统3813可以负责把进程的虚拟地址映射成数据实际上存储于其中的存储器3803的物理地址。虚拟地址空间可以被分割成被称为虚拟存储器页面的固定大小的连续的虚拟存储器地址块。页面表3806可以被用来存储从虚拟存储器页面到虚拟存储器页面存储在其中的存储器3803中其相应的物理地址的映射。页面表3806可以包括各种访问权限,例如读、写和/或执行,以便指定对给定虚拟存储器页面授权的访问类型。在一些实施例中,0/S下层捕获代理3820和/或已触发事件应对程序3822可以被配置为捕集任何已产生的异常或已尝试的读、写或执行操作并使用安全规则3808来判断对访问存储器3803的未经授权的请求是否指示恶意软件。[0498]系统调用表3804可以是由操作系统3813用来实现系统调用的数据结构。系统调用可以是由操作系统3813提供的例程和/或系统服务。系统调用表3804可以提供在应用3810和操作系统3813之间的接口,允许应用3810请求操作系统3813执行未授权应用3810执行的操作。可以使用对系统调用表3804的索引标识每一系统调用,系统调用表3804中,可以存储特定的系统调用的条目。系统调用表3804中的每一条目可以存储其中可以存储对应于特定的系统调用代码的存储器3803中的地址。这样的条目可以被实现为指针。可以通过向操作系统3813告知适当的索引和随后把控制权传递给操作系统3813来执行系统调用。然后,操作系统3813可以查阅系统调用表3804以便标识其中存储对应于特定的系统调用的代码的存储器3803中的位置。然后,操作系统3813可以执行代码并把控制权返回给负责请求系统调用的软件组件。可以在来自下面的图39的系统调用表3901的描述中找到系统调用表3804的例实施例的描述。[0499]0/S下层捕获代理3820可以被配置为截取对与系统调用相关联的诸如例如存储器3803和/或处理器3802的任何合适的资源3816的访问或来自与系统调用相关联的任何合适的资源3816的信息。例如,资源3816可以由图1的资源106、图2的系统资源214、图7的系统资源、图9的处理器资源924、图12的虚拟存储器1204和/或物理存储器1203和/或其任何组合实现,或者被配置为实现它们的功能性。资源3816可以包括对诸如处理器3802之类的处理器可用以便允许处理器加载和执行指令的资源。这样的资源可以包括,例如,数据寄存器、控制寄存器、高速缓存、处理器标志、处理器核心、处理器异常、和/或处理器中断。资源3816也可以包括虚拟存储器和/或物理存储器3803。对这样的资源的已尝试访问可以包括指令,例如带有操作数的汇编语言指令,且可以通过捕获指令的执行来捕获这样的尝试访问。[0500]0/S下层捕获代理3820可以被配置为截取对诸如存储器3803和/或处理器3802的资源之类的任何合适的资源的访问或来自任何合适的资源的信息。Ο/s下层捕获代理3820可以包括可以被用来捕获对访问系统调用和/或系统调用表3804的尝试的系统调用捕获器3814。然后,系统调用捕获器3814和/或已触发事件应对程序3822可以结合安全规则3808使用与已捕获尝试相关联的上下文信息,以便判断是否允许尝试、拒绝尝试和/或把尝试报告给一个或多个用户3812。上下文信息可以包括已捕获访问尝试的请求实体、所讨论的特定系统调用和/或所尝试的特定类型的访问(例如,执行系统调用的尝试或读/写系统调用表3804中的条目的尝试)。[0501]系统调用捕获器3814可以是0/S下层捕获代理3820的模块和/或组件,且可以被配置为以任何合适的方式捕获对系统调用的访问。例如,系统调用捕获器3814可以被配置为捕获诸如把控制权传递给操作系统3813以供执行系统调用的指令之类的被用来实现系统调用的汇编语言指令的执行。要捕获的特定指令可以取决于电子设备3801的特定处理器3802和/或操作系统3813。作为示例,在使用在支持x86指令集体系结构(“ISA”)的处理器3802上执行的微软Windows?执行的变种时,系统调用捕获器3814可以捕获对执行‘SysEnter’和/或‘KiFastSysCall’指令的尝试。这些指令用于把控制权传递给操作系统3813以便执行系统调用。捕获对执行‘SysEnter’指令的尝试可以仅捕获来自在“3环”优先级执行的软件的尝试,而捕获对执行‘KiFastSysCall’指令的尝试可以捕获捕获来自在“O环”或“3环”优先级执行的软件的尝试。在一些实施例中,可以通过捕获对执行对应于特定指令存储在其中的物理存储器位置的虚拟存储器页面的尝试来捕获对执行‘SysEnter’和/或‘KiFastSysCall’指令的尝试。[0502]在另一实施例中,系统调用捕获器3814可以被配置为捕获对访问系统调用表3804的尝试。被用来捕获对访问系统调用表3804的尝试的特定方法可以取决于电子设备3801的特定处理器3802和/或操作系统3813。在使用支持x86ISA的处理器3802时,系统调用捕获器3814可以通过捕获对执行MOV指令的某种尝试来捕获对读或写系统调用表3804的尝试。例如,系统调用捕获器3814可以通过捕获指令“MOVsyscall_table_address,EAX”来捕获对写入系统调用表3804的尝试。这一指令可以操作为把来自EAX寄存器的值入到在syscall_table_address所指定的存储器地址处的系统调用表中的条目。通过捕获对写如系统调用表3804的尝试,系统调用捕获器3814可以防止恶意软件用包含恶意代码的存储器地址盖写系统调用表3804中的条目。类似地,系统调用捕获器3814可以捕获对从系统调用表3804读取的尝试,通过捕获指令“MOVEAX,syscall_table_address”。这一指令可以操作为从在syscall_table_address所指定的存储器地址处的系统调用表3804中的条目读取值。捕获对读取系统调用表3804中的条目的尝试将有效地捕获对执行与系统调用表3804中的条目相关联的系统调用的所有尝试,这是由于必须读取系统调用表3804才能允许操作系统3813标识在对应于系统调用的代码存储器中的位置。另外,捕获对读取系统调用表3804中的条目的尝试将捕获例如恶意软件对读取系统调用表3804的任何直接尝试。在一些实施例中,捕获对读取系统调用表3804的所有尝试。在一些实施例中,可以通过捕获对访问对应于系统调用表3804存储在其中的物理存储器位置的虚拟存储器页面的尝试来捕获对访问系统调用表3804的尝试。[0503]在又一实施例中,通过捕获对执行在系统调用的代码驻留在其中的存储器位置处的代码的尝试,系统调用捕获器3814可以被配置为捕获对执行系统调用的尝试。可以查询系统调用表3804,以便标识特定系统调用的代码驻留在其中的存储器位置。被用来捕获对执行系统调用的尝试的特定方法可以取决于电子设备3801中的处理器3802的类型。在一个实施例中,可以使用基于例如指令指针(IP)寄存器的值的触发器捕获对执行系统调用的尝试。在一些实施例中,IP寄存器可以被称为程序计数器(PC)寄存器。取决于具体的处理器,IP寄存器可以被用来存储当前正在执行的指令的地址或的接下来要执行的指令地址。在使用支持X86ISA的处理器3802时,通过监视IP寄存器的值以及在在IP寄存器的值包含系统调用的地址时捕获执行,系统调用捕获器3814可以捕获对执行特定的系统调用的尝试。在另一实施例中,通过捕获对执行对应于系统调用的代码存储在其中的物理存储器位置的虚拟存储器页面的尝试,可以捕获对执行系统调用的尝试。可以在对应于要捕获的特定的系统调用的索引处查询系统调用表3804,以便标识对应于系统调用的代码在存储器中的位置。在一个实施例中,可以通过捕获用于传递控制的指令(例如被定向到已知是在系统调用表3804内的位置的“JMP”例程)来捕获包含被链接到系统调用表3804的例程和函数的存储器位置的执行。[0504]用于捕获对系统调用和系统调用表3804的访问的上面的方法的具体实现可以取决于Ο/s下层捕获代理3820和/或系统调用捕获器3814的具体实现。例如,如果在虚拟机监视器中实现0/S下层捕获代理3820和/或系统调用捕获器3814,则基于特定存储器地址的任何捕获(例如,基于对读/写系统调用表中的条目的捕获和/或基于在包含系统调用的代码的存储器位置处执行的捕获)尝试可以基于虚拟存储器地址,这是由于可能还没有把存储器地址从虚拟存储器地址转换成物理存储器地址。作为另一示例,如果在微代码安全代理中实现Ο/s下层捕获代理3820和/或系统调用捕获器3814,则基于特定存储器地址的任何捕获可以基于物理存储器地址,因为可能已经在微代码级别执行从虚拟地址到物理地址的转换。[0505]在捕获尝试期间,可以检测做出对访问系统调用表3804或与系统调用表3804相关联的函数的尝试的指令的存储器位置。可以分析该存储器位置以便判断做出尝试的实体。[0506]在捕获特定的尝试之后,系统调用捕获器3814可以创建与尝试相关联的已触发事件并将其发送给已触发事件应对程序3822。然后,已触发事件应对程序可以结合安全规则3808使用与已捕获事件相关联的上下文信息来判断是否允许该事件、拒绝该事件和/或把该事件报告给一个或多个用户3812。上下文信息可以包括已捕获事件的请求实体、所讨论的特定系统调用和/或所请求的动作(例如,对执行系统调用的尝试和/或对读/写系统调用表3804中的条目的尝试)。例如,可以仅允许已知是安全的和免遭恶意软件的某些实体写入系统调用表3804。基于对写入系统调用表3804的未经授权的尝试,可以判断先前未知其恶意软件状态的实体是恶意软件。在另一示例中,可以捕获链接到系统调用表3804的函数的执行,且仅当做出对函数的调用的实体通过系统调用表3804做出这样的尝试时允许该执行。可以拒绝先前未知其恶意软件状态的实体对执行这样的函数的直接访问的尝试。另外,可以拒绝通过黑名单或其他判断被判断为恶意软件的、尝试访问系统调用表3804或其相关的函数的实体的访问,且可以采取其他合适的矫正动作。[0507]用户3812可以包括供与和对访问系统调用表3804的已捕获尝试和/或对执行系统调用的已捕获尝试相关联的信息一起使用的任何实体。用户3812可以包括电子设备3801的应用3810和/或安全代理,和/或可以包括第三方应用或其他软件。例如,用户3812可以包括在电子设备3801上执行的安全软件,例如0/S下层捕获代理3820、已触发事件应对程序3822和/或0/S内部安全代理3819,它们可以把与已捕获尝试相关联的上下文信息用于检测恶意软件。在一些实施例中,每一用户3812可以提供在与0/S下层捕获代理3820相同的优先级水平操作的其自己的安全代理,诸如例如固件安全代理。用户3812也可以包括远程地执行例如在保护服务器3818上执行的安全软件。作为另一示例,用户3812可以包括特定资源的制造者,例如由电子设备3801使用的任何I/O设备。制造者可以对经由对系统调用表的访问和/或诸如与资源相关联的系统调用之类的系统调用的执行来危害资源的任何可疑尝试感兴趣。作为另一示例,用户3812可以包括数字权限管理(“DRM”)系统的管理员。DRM系统可以限制和/或控制数字内容的使用,且通常被用来保护受版权保护的数字内容,例如视频和/或音乐内容。DRM系统的管理员可以对知道何时和如何访问各种数字受保护文件感兴趣,且可以通过跟踪可以被用来访问受保护文件的各种系统调用来实现这一点。可以给用户3812提供应用程序编程接口(“API”),以便允许用户3812访问与对执行系统调用的已捕获尝试和/或对访问系统调用表3804的已捕获尝试相关联的信息。[0508]图39是供与保护对操作系统的系统调用的访问的系统和/或方法一起使用的系统调用表3901的示例实施例。系统调用表3901可以被操作系统用来把地址3906存储在每一系统调用3904的代码所驻留的存储器3908中。例如,可以使用系统调用表3901来实现图38的系统调用表3804的功能性。系统调用表3901可以由表、记录和/或其他合适的数据结构实现。在带有微软Windows?操作系统的变种的实施例中,系统调用表3901可以由系统服务描述符表(“SSDT”)实现。系统调用3904可以是操作系统提供的例程和/或系统服务。典型的系统调用3904可以包括,例如,用于操作和/或执行文件的打开、读、写、关闭和/或执行、用于创建新的进程的ntCreateProcess和/或用于加载新的驱动程序的ntLoadDriver和ZwLoadDriver0[0509]系统调用3904可以提供在应用和操作系统之间的接口,这允许应用请求操作系统执行未授权该应用执行的操作。例如,通常在“3环”优先级执行的应用可能需要访问盘上的文件但不拥有执行盘I/O操作的权限。该应用可以使用诸如读或写文件系统调用之类的系统调用3904来把控制权传递给操作系统,以便允许操作系统满足来自该应用的请求。可以在“O环”优先级执行的操作系统可以提供与特定的系统调用3904相关联的服务,且然后可以把控制权传递回去给该应用。例如,操作系统可以访问系统调用表3901以便标识标识对应于系统调用3904的代码位于其中的存储器地址3906。然后,操作系统可以执行在存储器3908中的指定地址3906处的代码,且然后,可以把控制权传递回去给该应用。以这种方式,该应用可以利用通常仅对诸如操作系统之类的在“O环”优先级执行的软件可用的某些服务。[0510]可以使用索引3902来把每一系统调用3904引用到其中存储有系统调用3904的条目的系统调用表3901中。例如,系统调用表3901总共由N个条目,且使用在O到N-1范围内的索引3902来引用每一条目。通过向操作系统告知适当的索引3902并把控制权传递给操作系统,可以执行系统调用3904。在一些实施例中,软件组件可以通过把索引放置到处理器的寄存器中来指定适当的索引3902,且然后可以执行指令以便把控制权传递给操作系统,以供执行系统调用3904。例如,在一个实施例中,使用x86指令集体系结构(“ISA”),可以使用下列指令来为应用实现系统调用:[0511]“MOVEAX,index”[0512]“SysEnter”[0513]第一指令把“index(索引)”移动到处理器的EAX寄存器中,其中'index'是对应于特定的系统调用3904的条目驻留在其中的系统调用表3901中的索引3902的整数。然后,,SysEnter/指令把控制权传递给操作系统,且操作系统可以访问在EAX寄存器中所指定的索引3902处的系统调用表3901。系统调用表3901的特定索引3902处的条目可以指定存储器地址3906,存储器地址3906指向特定的系统调用3904的代码驻留在其中的存储器3908中的位置。然后,处理器可以执行位于存储器3908中的指定地址3906的代码。系统调用3904可以由包括应用、操作系统和/或驱动程序的任何软件组件执行。作为X86ISA上的示例,操作系统和/或驱动程序可以以类似于应用的方式执行系统调用3904,所不同的是使用'KiFastSysCair指令。[0514]可以向系统调用表3901添加和/或从中移除系统调用3904。例如,如果把新设备添加到电子设备,则需要操作系统加载新设备的设备驱动程序,且需要把系统调用3904添加到系统调用表3901,以便允许应用利用新设备的功能性。可以把新的系统调用的代码加载到存储器3908中,且可以把新的系统调用3904的条目添加到系统调用表3901的末尾,指定系统调用的代码驻留在其中的存储器3908中的地址3906。[0515]上面所描述的用于实现系统调用3904的实施例仅仅是多种可能的实施例中的一些。系统调用3904和/或系统调用表3901可以以任何合适的方式实现。系统调用3904和/或系统调用表3901的具体实现可以取决于电子设备的特定的处理器和/或操作系统。[0516]图40是用于保护对在电子设备上执行的操作系统的系统调用的访问的方法4000的示例实施例。在步骤4005,可以认证0/S下层安全代理、0/S内部安全代理、已触发事件应对程序和保护服务器的身份和安全。可以使用任何合适的方法来执行这样的认证,包括通过定位和检验每一组件的存储器中的映像、使用密码散列和/或使用密钥。直到步骤4005完成之前,可以停止其他步骤的操作。在步骤4010获得安全规则。安全规则可以由0/S下层安全代理、0/S内部安全代理和/或已触发事件应对程序本地存储,和/或可以远程存储,例如在保护服务器上。这样的安全规则可以被用来在步骤4015-4040做出判定。[0517]在步骤4015,可以截取对执行系统调用和/或访问系统调用表的尝试。在一些实施例中,可以通过捕获对执行被用来实现系统调用的控制权传递指令的尝试来截取对执行系统调用的尝试。例如,一些处理器和/或操作系统可以使用诸如SysEnter和/或KiFastSysCall指令之类的控制权传递指令来实现系统调用,并且,可以通过捕获适当的控制权传递指令的执行来截取对执行系统调用的尝试。也可以通过捕获对执行对应于特定的控制权传递指令存储在其中的物理存储器位置的虚拟存储器页面的尝试来截取对执行系统调用的尝试。在一些实施例中,可以通过捕获对执行包含系统调用的代码的存储器位置处的代码的尝试来截取对执行系统调用的尝试。在这样的实施例中,捕获可以基于IP寄存器的值。例如,可以查询系统调用表或存储器映射,以便标识包含系统调用的代码的存储器位置,并且在IP寄存器包含特定的系统调用的存储器位置的地址时可以发生捕获。在其他实施例中,可以通过捕获对执行对应于特定的系统调用的代码存储在其中的物理存储器位置的虚拟存储器页面的尝试,可以截取对执行系统调用的尝试。在一些实施例中,也可以截取对读或写系统调用表的尝试。在这样的实施例中,可以通过捕获用来读或写系统调用表中的存储器位置的指令的执行来截取该尝试。例如,在x86指令集体系结构上,在使用MOV指令来读或写系统调用表中的位置时,可以捕获MOV指令。在一些实施例中,通过捕获对访问对应于系统调用表存储在其中的物理存储器位置的虚拟存储器页面的尝试,也可以截取对读或写系统调用表的尝试。[0518]在步骤4020,标识已尝试访问的源。例如,已尝试访问可以来自应用,驱动程序、0/S内部安全代理、操作系统和/或其他软件实体。在步骤4025,判断该尝试是否得到授权。可以结合与该尝试相关联的上下文信息使用安全规则来判断可以还是不可以授权特定的尝试。上下文信息可以包括已尝试访问的源和/或访问的具体类型。例如,安全规则可以指定,仅操作系统可以写入系统调用表。作为另一示例,安全规则可以指定,带签名的驱动程序或与条目相关联的其他软件组件可以写其自己的条目。如果尝试得到授权,那么,在步骤4030允许访问。如果尝试未得到授权,那么,在步骤4035拒绝访问。最终,在步骤4040,判断是否应当把该尝试报告给一个或多个用户。是否应当报告尝试可以取决于所讨论的具体系统调用和与已尝试访问相关联的上下文信息。安全规则可以指定何时应把对执行系统调用和/或访问系统调用表的尝试报告给一个或多个用户。[0519]根据保护存储设备的要求,可以连续地、周期性地、根据需求或在事件触发时重复来自图40的方法的步骤。[0520]图41是用于调节和控制电子设备4104上的恶意的或潜在恶意的代码的系统4100的示例实施例。例如,系统4100可以被用于调节和控制电子设备4104上的自修改代码。系统4100可以包括被配置为在电子设备4104上操作以便防备恶意软件自修改自身以便逃避检测的尝试的0/S下层安全代理4116。作为另一示例,系统4100可以被用于修改电子设备4104上的恶意代码。系统4100可以包括0/S下层安全代理4116被配置为在电子设备4104上操作以便修改恶意代码从而使得所检测到的恶意软件失效。作为进一步的示例,系统4100可以被用于监视和跟踪线程以便标识包括潜在恶意的代码的线程族。系统4100可以包括0/S下层安全代理4116被配置为在电子设备4104上操作以便监视和跟踪在各线程当中关系。[0521]此外,0/S下层安全代理4116可以被配置为使用一个或多个安全规则4122来判断捕获什么已尝试操作以及如何响应这样的已捕获操作。Ο/s下层安全代理4116可以被配置为允许已捕获操作、拒绝已捕获操作或对已捕获操作采取其他矫正动作。[0522]如图4100中所示出,电子设备4104可以包括被耦合到存储器的4108处理器4106、操作系统4112、0/S下层安全代理4116和安全规则4122。电子设备4104可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701、图9的电子设备901、图12的电子设备1201和/或其任何组合实现,或者被配置为实现它们的功能性。处理器4106可以全部地或部分地由图2的处理器208,图4的处理器408,图7的处理器702,图9的处理器902,图12的处理器1202和/或其任何组合实现,或者被配置为实现它们的功能性。存储器4108可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703、图9的存储器903、图12的物理存储器1203或虚拟存储器和/或其任何组合实现,或者被配置为实现它们的功能性。操作系统4112可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图9的操作系统913、图12的操作系统1213和/或其任何组合实现,或者被配置为实现它们的功能性。0/S下层安全代理4116全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442、PC固件安全代理444或0/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708、图9的0/S下层捕获代理920、图12的0/S下层安全代理1220和/或其任何组合实现,或者被配置为实现它们的功能性。安全规则4122可以由图1的安全规则114、图2的安全规则222、图4的安全规则434、436、438、图5的安全规则518、或图7的安全规则707、723、图9的安全规则908、图12的安全规则1208和/或其任何组合实现,或者被配置为实现它们的功能性。可以以任何合适的方式建立安全规则4122(例如,由电子设备4104的用户设置的政策、由包括电子设备4104的企业的管理员设置的政策、由0/S下层安全代理4116的创建者设置的政策等等)。在一些实施例中,0/S下层安全代理4116可以经由网络244请求和/或接收来自保护服务器202的对安全规则4122的更新或修改(例如,由于对恶意软件定义的更新)。[0523]操作系统4112可以包括0/S内部安全代理4118。0/S内部安全代理4118可以全部地或部分地由图2的0/S内部安全代理218、图4的0/S内部安全代理418、图7的0/S内部安全代理718、图9的0/S内部安全代理919、0/S内部安全代理1219和/或其任何组合实现,或者被配置为实现它们的功能性。[0524]如图41中所示出,存储器4108可以包括权限标志4136和历史4140。权限标志4136可以维护标志、变量或建立与被存储在存储器4108中的内容相关的权限的其他数据。例如,权限标志4136可以指示,对于存储器4108的特定的位置(例如,页面或地址),在电子设备4104上执行的实体是否可以读、写和/或执行被存储在特定位置的内容。在一些实施例中,可以在存储器4108的页面表条目(PTE)和/或页面目录条目(PDE)中实现权限标志4136。权限标志4136可以被存储在特定存储器位置(例如,页面或地址范围)。[0525]历史4140可以包括日志、列表、高速缓存和/或用于记录已捕获的已尝试访问和与已捕获的已尝试访问相关联的信息(例如,已尝试访问的类型、与已捕获已尝试访问相关联的存储器位置等等)的其他合适的数据结构。为了防止恶意软件尝试经由对历史4140的尝试恶意访问规避0/S下层安全代理4116的有效性,可以根据在此描述为用于保护存储器的一种或多种方法来保护历史4140的内容免遭已尝试访问。例如,0/S下层安全代理4116可以捕获不同于0/S下层安全代理4116的实体对历史4140驻留在其中的存储器页面或存储器地址范围的已尝试访问,并拒绝这样的已捕获的已尝试访问。[0526]如上所述,0/S下层安全代理4116可以基于安全规则4122检测恶意代码的存在。0/S下层安全代理4116可以经由以上所描述的任何方法和/或以任何其他合适的方式检测恶意代码的存在。例如,0/S下层安全代理4116可以通过捕获对存储器4108或电子设备4104的其他资源的访问检测恶意代码的存在。作为另一示例,0/S下层安全代理4116可以通过扫描存储器4108的页面和/或存储4126以便发现恶意代码来检测恶意代码的存在。作为进一步的示例,0/S下层安全代理4116可以通过从0/S内部安全代理4118接收0/S内部安全代理4118已经检测到恶意代码的存在的通信来检测恶意代码在存储器中的存在。[0527]尤其,0/S下层安全代理4116可以基于安全规则4122捕获对存储器的一个或多个已尝试访问,这些已尝试访问可以单独地或整体地指示自修改恶意软件的存在。作为示例,对权限标志4136中所陈述的存储器位置的权限的改变(例如,从读改变成读/写或从读/写改变成读/写/执行)可以(例如,单独地或与其他已尝试存储器访问一起整体地)指示恶意软件的存在。因此,0/S下层安全代理4116可以捕获一就被检测改变to权限标志4136。例如,在一些实施例中,0/S下层安全代理4116可以根据安全规则4122捕获对包括权限标志4136的存储器4106的位置(例如,页面或地址)的已尝试访问。在相同的或替代的实施例中,0/S下层安全代理4116可以根据安全规则4122捕获对包括操作系统4112的用于修改存储器权限(例如,MiSetProtectionOnSection,AllocateVirtualMemoryO,MiProtectVirtualMemoryO和/或Windows?中的其他合适的函数调用)的调用和/或函数的存储器4108的位置(例如,页面或地址)的和/或包括操作系统4112的相应权限标志(例如,NTProtectVirtualMemory,ZwProtectVirtualMemory,ProtectVirtualMemory^P/或Windows?中的其他合适的标志)的存储器4108的位置(例如,页面或地址)的已尝试访问。[0528]作为另一示例,把内容从存储器4106的一个位置复制到另一位置可以指示(例如,单独地或与其他已尝试存储器访问一起整体地)恶意软件的存在。因此,Ο/s下层安全代理4116可以捕获与在存储器位置之间复制内容相关联的已尝试访问。例如,在一些实施例中,0/S下层安全代理4116可以根据安全规则4122捕获用于把内容从存储器的一个位置复制到另一位置的处理器函数。在相同的或替代的实施例中,Ο/s下层安全代理4116可以根据安全规则4122捕获对包括用于操作系统4112的复制数据的调用和/或函数例如Windows?中的MemUICopy函数的存储器4108的位置(例如,页面或地址)的已尝试访问。[0529]作为进一步的示例,被存储在存储器4106中的内容的修改或“就地写入(writing-1n-place)”可以(例如,单独地或与其他已尝试存储器访问一起整体地)指示恶意软件的存在。因此,0/S下层安全代理4116可以捕获与存储器4108中的内容的就地写入相关联的已尝试访问。例如,在一些实施例中,0/S下层安全代理4116可以根据安全规则4122捕获用于就地修改存储器4108中的内容的处理器函数。在相同的或替代的实施例中,0/S下层安全代理4116可以根据安全规则4122捕获对包括操作系统4112的用于就地修改内容的调用和/或函数的存储器4108中的位置(例如,页面或地址)的已尝试访问。[0530]作为进一步的示例,被存储在存储器中的经复制或经修改内容的执行可以(例如,单独地或与其他已尝试存储器访问一起整体地)指示恶意软件的存在。因此,ο/s下层安全代理4116可以捕获与存储器4108中的内容的执行相关联的已尝试访问。例如,在一些实施例中,0/S下层安全代理4116可以根据安全规则4122捕获用于执行存储器4108中的内容的处理器函数。在相同的或替代的实施例中,0/S下层安全代理4116可以根据安全规则4122捕获对包括用于执行内容的的操作系统4112的调用和/或函数的存储器4108的位置(例如,页面或地址)的已尝试访问。[0531]作为进一步的示例,把内容加载到存储器中可以(例如,单独地或与其他已尝试存储器访问一起整体地)指示恶意软件的存在。因此,Ο/s下层安全代理4116可以捕获与把代码加载到存储器4108中相关联的已尝试访问。例如,在一些实施例中,0/S下层安全代理4116可以根据安全规则4122捕获用于把代码加载到存储器4108中的处理器函数或系统函数。0/S下层安全代理4116可以被配置为确定用于把代码加载到存储器4108中的安全的或规范的方法,例如操作系统加载器。可以测试或映射这样的安全的或规范的方法,以使得操作系统4112所采用的逻辑或步骤可以是已知的。一旦捕获对把代码加载到存储器4108中的尝试,0/S下层安全代理4116可以判断这样的尝试是否匹配用于加载代码的已知方法。例如,如果该尝试涉及把代码加载到存储器的已分配部分,并尝试通过用直接写存储器回避操作系统加载器来这样做,则可以判断该尝试是恶意的。[0532]如果包含代码的页面或存储器范围已经被修改,则0/S下层安全代理4116可以被配置为跟踪修改。如果允许继续执行,则可以跟踪和记录已修改代码的随后操作。然而,0/S下层安全代理4116可以给予这样的代码较少特权,例如通过捕获和拒绝这样的经修改代码访问属于包含其他内核模式实体或操作系统的存储器的特权位置的尝试。经修改代码的恶意软件状态可以是未知的,并且直到确实判断它是安全的之前,0/S下层安全代理4116可以拒绝经修改代码访问内核函数或例程。[0533]0/S下层安全代理4116可以把关于一个或多个已捕获的已尝试访问信息记录在历史4140中中。0/S下层安全代理4116可以不时地分析历史4140以判断是否已经发生相对于特定存储器位置的可疑行为。在其分析期间,0/S下层安全代理4116可以查阅规则4122以判断历史4140中实现的特定存储器位置的行为是否指示可以证明自修改恶意软件代码的潜在存在的可疑行为。例如,如果对历史4140的分析指示在第一存储器位置处的内容被复制到第二位置,在第二位置处被修改,且然后,已经发生对第二位置的内容的已尝试执行,则这样的指示可以是自修改恶意软件代码的潜在存在的迹象。作为另一示例,如果对历史4140的分析指示均具有在第三位置处的共同起源的、在第一存储器位置和第二存储器位置处的内容都是已尝试执行的目标,则这样的指示可以是自修改恶意软件代码的潜在存在的迹象。作为进一步的示例,如果对历史4140的分析指示在特定存储器位置处的内容具有在多个其他存储器位置处的起源,则这样的指示可以是自修改恶意软件代码的潜在存在的迹象。此外,历史4140可以记录在分层结构中的级别和实体之间所做出的修改。[0534]如果在其他存储器位置处的内容是特定存储器位置的内容的经复制或经修改版本,则在此所使用的在特定存储器位置处的内容对于在另一位置处的内容来说是“起源”,且包括其中在其他存储器位置处的内容除了在特定存储器地址处的内容之外的一个或多个中间起源的衍生物的情况。[0535]因为如果被应用到每一存储器位置则这样的历史4140的记录可以消耗电子设备4104的处理资源的显著部分,0/S下层安全代理4116可以仅在发生可以指示特定存储器位置易受恶意软件感染的已尝试访问时记录特定存储器位置的历史4140。例如,0/S下层安全代理4116可以在捕获对特定存储器位置的权限(如权限标志4136中所实现的)的修改时开始记录特定存储器位置的历史4140。[0536]另外,因为如果被应用到每一存储器位置和/或已尝试访问则分析历史4140以便判断是否已经发生可疑行为可以消耗电子设备4104的处理资源的显著部分,0/S下层安全代理4116可以仅在发生与特定存储器位置相关联的特定的已捕获的已尝试访问时分析相对于特定存储器位置的历史。例如,在一些实施例中,0/S下层安全代理4116可以在捕获对特定存储器位置处的内容的已尝试访问时发起与特定存储器位置相关联的对历史4140的分析。[0537]在某些实施例中,单个已捕获的已尝试访问的发生可以指示可疑行为而无需对历史4140的分析。例如,对权限标志4136中所陈述的某些存储器位置的权限的改变(例如,从读到读/写或从读/写到读/写/执行)可以指示恶意软件的存在。例如,存储操作系统内核或安全应用的存储器位置的权限的改变可以指示证明潜在的恶意软件的存在的可疑行为。[0538]如果0/S下层安全代理4116检测到证明潜在的恶意软件的存在的可疑行为(例如,基于单个已捕获的已尝试访问或对历史4140的分析),则0/S下层安全代理4116可以发起矫正动作(例如,根据安全规则4122)。例如,在一些实施例中,0/S下层安全代理4116可以在检测到可疑行为时把被存储在与所检测的可疑行为相关联的特定存储器位置内容与已知的恶意软件和/或已知的可信/可靠的进程比较,以便判断该内容是不是恶意的。可以通过把内容的散列、指纹或其他签名与已知进程的散列、指纹或其他签名进行比较来实现这样的比较。[0539]替代地或另外,如果0/S下层安全代理4116检测到证明潜在的恶意软件的存在的可疑行为(例如,基于单个已捕获的已尝试访问或对历史4140的分析),0/S下层安全代理4116可以把与可疑行为相关联的取证迹象(例如,存储器位置的内容、与存储器位置相关联的历史4140等等)报告给保护服务器202以供进一步分析。在一些实施例中,然后,保护服务器202可以产生与内容相关联的签名(例如,散列或指纹)、产生与签名相关联的政策或黑名单条目并把这样的信息传输给在其他电子设备上执行的安全代理。在相同的或替代的实施例中,保护服务器202可以进一步分析可疑行为(例如,连同从其他电子设备接收的取证迹象一起),以判断该可疑行为是否实际上指示恶意软件,且如果是,则把关于类似的行为是否是恶意软件存在的迹象的指令(例如,以安全规则4122的形式)传输给电子设备。[0540]如果0/S下层安全代理4116判断,与可疑行为相关联的存储器位置的内容是恶意的(例如,通过把该内容与已知进程、从保护服务器202接收到的信息、对安全规则4122的弓丨用和/或其他判断进行比较),0/S下层安全代理4116可以采取进一步的矫正动作(例如,根据安全规则4122)。这样的矫正动作可以包括但不限于不允许执行内容、撤销对内容的改变(例如,如历史4140中所陈述的内容的修改和复制)、修复内容、用无害内容替换该内容和/或禁用与该内容相关联的进程。[0541]在以上所描述的各种实施例中,当在存储器4108的不同部分之间传递内容时,可以过渡地应用被应用到存储器4108的特定部分的安全规则4122和保护。因而,例如,如果一组特定的安全规则4122应用到存储器4108的特定部分中的内容,则在把这样的内容传递到存储器4108的另一部分时,0/S下层安全代理4116可以更新安全规则4122以便应用到存储器4108的目的地部分。[0542]如上所述,0/S下层安全代理4116可以基于安全规则4122检测恶意代码的存在。0/S下层安全代理4116可以经由以上所描述的任何方法和/或以任何其他合适的方式检测恶意代码的存在。例如,0/S下层安全代理4116可以通过捕获对存储器4108或电子设备4104的其他资源的访问来检测恶意代码的存在。作为另一示例,0/S下层安全代理4116可以通过扫描存储器4108的页面和/或存储4126以便发现恶意代码来检测恶意代码的存在。作为进一步的示例,0/S下层安全代理4116可以通过从0/S内部安全代理4118接收0/S内部安全代理4118已经检测到恶意代码的存在的通信来在存储器中检测恶意代码的存在。[0543]响应于检测电子设备4104上的恶意代码(无论这样的代码是自修改代码还是其他恶意代码),0/S下层安全代理4116可以采取矫正动作,包括修改恶意代码。在此使用的恶意代码的“修改(modifying)”或“修改(modification)”可以包括但不限于如存储器4108中所实现的恶意代码的修改、如存储4126中所实现的恶意代码的修改和/或恶意代码对存储器4108和电子设备4104的其他资源的访问的修改。恶意代码的修改是有益的,这是因为包括恶意代码的存储器4108的部分(例如,页面)可以属于恶意软件或甚至是没有意识到感染的程序。例如,这样的恶意代码可以被嵌入到字处理文档、操作系统内核的部分或恶意软件自身中。[0544]在修改存储器4108中包含的恶意代码时,0/S下层安全代理4116可以修改恶意代码以使得包括恶意代码的程序可以自我终止和/或把执行传递给可以使恶意代码失效(例如,通过擦除和与恶意代码片段相关联的线程或进程相关联的所有代码和数据)的可信代码。例如,0/S下层安全代理4116可以把对操作系统4112的“exit(退出)”函数的调用插入到存储器4108中的恶意代码,以使得可以最终终止恶意代码的执行。作为另一示例,0/S下层安全代理4116可以把指令(例如,“JUMP(跳转)”指令)插入到存储器4108中的恶意代码,该指令可以把恶意代码的执行重定向到其中存储有可以使恶意代码失效(例如,通过擦除和与恶意代码片段相关联的线程或进程相关联的所有代码和数据)的代码的已知、可信的部分的存储器4108的另一部分。作为进一步的示例,如果恶意代码目前正在执行,则Ο/s下层安全代理4116可以变更存储器4108中的指令指针值,以便引起把执行的控制权传递给可以使失效恶意代码(例如,通过擦除和与恶意代码片段相关联的线程或进程相关联的所有代码和数据)的代码的已知可信部分。[0545]在一些实例中,不期望简单地终止由恶意代码实现的恶意进程。举例来说,终止和删除可以不适用于其中删除或终止具有不期望的副作用的操作系统的已感染部分或其他以另外方式可信的应用。因此,0/S下层安全代理4116可以修改恶意代码以使得修复恶意代码,允许已感染应用如同感染没有发生的那样有效地执行。例如,0/S下层安全代理4116可以用已知的或可信的代码替换恶意代码。作为特定的示例,如果操作系统的已知部分在特定存储器页面受到感染,则0/S下层安全代理4116可以用操作系统的这样的部分的已知代码重写该特定存储器页面。在一个实施例中,0/S下层安全代理4116可以从保护服务器获得替代页面。可以按需产生这样的替代页面,或可以将其配置为替换操作系统组件、驱动程序或其他模块的已知部分。替代地,0/S下层安全代理4116可以修改存储器4108中的指令指针,以使得在另一存储器位置处的受感染代码的经恢复版本处继续执行。[0546]在修改存储4126中包含的恶意代码时,0/S下层安全代理4116可以变更或删除恶意代码。例如,通过捕获在存储器4108和存储4126之间且反之亦然的内容传递,0/S下层安全代理4116可以收集关于被存储在存储器4108中的内容与被存储在存储4126中的相应内容的关系的信息并将其存储在日志、列表、高速缓存或其他数据结构中。因此,如果0/S下层安全代理4116标识存储器4108中的恶意代码,则它可以引用所收集的关于被存储在存储器4108中的内容与被存储在存储4126中的相应内容的关系的信息并修改具有恶意代码的、对应于存储器4108的位置的存储4126的位置中的内容。这样的修改可以包括但不限于删除存储4126中的相应内容,或修改内容以引起存储4126和/或存储器4108中的恶意代码的自我终止或删除。[0547]在修改恶意代码对存储器4108和电子设备4104的其他资源的访问时,0/S下层安全代理4116可以拒绝恶意代码片段对存储器4108或电子设备4104的其他资源的任何访问。这样拒绝存储器4108和其他资源可以引起包括恶意代码的进程崩溃或以另外方式使其失效。例如,一旦已经标识恶意代码,则0/S下层安全代理4116可以捕获包括恶意代码的进程对存储器4108或电子设备4104的资源的已尝试访问并拒绝这样的访问。[0548]根据以上所描述的修改技术中的一些,0/S下层安全代理4116可以在保证恶意代码完好的同时使得恶意代码失效。在这样的场景中,Ο/s下层安全代理可以隔离恶意代码并将其作为取证迹象传递给保护服务器202以供进一步分析。然后,保护服务器202可以产生与恶意代码相关联的签名(例如,散列或指纹)、产生与签名相关联的政策或黑名单条目并把这样的信息传输给在其他电子设备上执行的安全代理。[0549]在一些实施例中,存储器4108的特定部分中存在的恶意代码的标识可以允许0/S下层安全代理4116标识具有恶意代码的存储器4108的其他部分。例如,在检测到表现出类似恶意软件的行为的线程时,0/S下层安全代理4116可以确定线程的执行地址和/或恶意代码在存储器页面内的位置。在虚拟存储器配置中,可以连续地列出应用代码,而在物理存储器中,应用代码基本上不是连续的。因而,通过利用由操作系统维护的在存储器4108中的物理存储器地址和存储4126中的虚拟存储器地址之间的映射,0/S下层安全代理4116可以标识与已标识恶意代码连续的、也可能包括恶意代码的虚拟存储器的部分,并把这样的虚拟存储器部分映射回到可能受感染的物理存储器地址。因此,ο/s下层安全代理可以进一步监视在这样的物理存储器地址处的代码的执行以便发现恶意代码的存在。[0550]另外,0/S下层安全代理4116也可以被配置为监视与线程的执行和/或线程对资源的使用相关的活动,并基于这样的监视确定在各种线程之间的关系。因此,当特定线程被标识为恶意时,0/S下层安全代理4116可以确定与恶意线程相关线程(例如,起源线程、派生线程、同胞线程等等)并相对于除了恶意线程以外还有相关线程采取矫正动作。[0551]为了执行这样的监视和跟踪,0/S下层安全代理4116可以监视对存储器4108、存储4126、网络244和/或电子设备4104的其他资源的访问;监视操作系统服务、与线程执行和/或线程对资源的使用相关的调用和/或函数;和/或使用在此描述的技术中的一种或多种来检测可疑行为。例如,0/S下层安全代理4116可以实现图12的0/S下层安全代理1216的功能性,以便捕获(例如,基于安全规则4122)对读、写和/或执行存储器4108、存储4126和/或电子设备4104的其他组件上的代码的已尝试访问、对权限标志4136的已尝试改变和/或可以(例如,单独地或与其他存储器访问一起整体地)指示可疑行为的其他已尝试访问,并把关于这样的尝试访问信息记录到历史4140。[0552]作为进一步的示例,0/S下层安全代理4116可以实现0/S下层安全代理712、微代码安全代理708和/或0/S下层捕获代理920的功能性,以便捕获(例如,基于安全规则)已尝试的操作系统服务、与线程执行和/或线程对资源的使用相关的、可以证明可疑行为的调用和/或函数,并把关于这样的尝试访问的信息记录到历史4140。另外,在一些实施例中,0/S内部安全代理4118可以被配置为捕获可以证明可疑行为的线程执行和/或线程对资源的使用的操作系统4112的用户模式函数或内核模式函数,并把关于这样的尝试访问的信息记录到历史4140和/或把这样的信息传输给0/S下层安全代理4116。[0553]为了判断各线程之间的关系,0/S下层安全代理4116可以从存储器的角度监视对操作系统的线程同步对象的已尝试访问。为了阐释,初始线程可以产生第二线程,然后,第二线程开始操作(且变成该进程的主线程),同时初始线程终止自身。作为另一阐释,线程可以操作为通过进程间通信(IPC)调用相互创建、终止或挂起。因而,线程可以跨越多个进程,且一个进程中的线程可以对其他进程中的线程做出IPC调用,以便创建、终止或挂起。0/S内部安全代理4118可以通过捕获用于发起这样的IPC调用的操作系统调用(例如,在Windows?实施例中,诸如NTCreateThreacUNTSuspendThread或NTTerminateThread之类的调用)来跟踪IPC调用。[0554]然而,使用0/S内部安全代理捕获这样的IPC调用可能被恶意软件危害或规避。因此,0/S下层安全代理4118可以通过捕获对与发起IPC调用相关联的存储器或处理器资源的已尝试访问来监视这样的尝试访问。例如,0/S下层安全代理4116可以实现图9的0/S下层捕获代理920的功能性,以便捕获对与发起IPC调用相关联的处理器资源的已尝试访问。作为另一示例,0/S下层安全代理4116实现图12的0/S下层安全代理1220的功能性,以便捕获对这样的IPC调用的可执行代码存储在其中的存储器位置(例如,页面或地址)的已尝试访问。在捕获与IPC调用相关联的事件时,0/S下层安全代理4116可以把关于这样的事件的信息(例如,线程标识符)记录到历史940。[0555]为了标识与IPC调用相关联的线程,0/S下层安全代理4116可以访问一个或多个处理器资源(例如,诸如在图7中被标识为系统资源724的那些)以便获取关于特定线程的信息。例如,对与在Windows?操作系统中执行的线程,处理器寄存器(例如,FS寄存器)可以指向每一处理器的存储器中被称为处理器控制块(PCB)的结构。PCB包括由线程调度程序用来管理处理器上的线程的信息,包括用于当前在处理器上执行的线程的ETHREAD数据结构以及用于已调度线程的ETHREAD列表。与线程相关联的ETHREAD数据结构可以包括多个元数据字段,包括线程的标识符。因此,在对Windows?应用保护时,Ο/S下层安全代理4116可以访问处理器资源中的信息以判断处理器的PCB的存储器位置,然后,访问PCB以便获得特定线程的ETHREAD信息。[0556]基于被存储在历史4140中的关于IPC调用的信息,0/S下层安全代理4116可以分析历史4140以判断在各种线程当中的关系。在其分析期间,0/S下层安全代理4116可以查阅规则4122以判断历史4140中陈述的线程行为是否指示在两个或更多个线程当中的关系。因此,如果判断特定线程或其宿主应用是恶意的,则0/S下层安全代理4116可以确定与特定线程相关的一个或多个线程并相对于这样的相关线程采取矫正动作。例如,矫正动作可以包括0/S下层安全代理4116检查、扫描和/或分析这样的线程(例如,使用在本公开内容中的其他地方描述的一种或多种技术)以判断这样的相关线程是否包括恶意代码。作为另一示例,如果判断这样的线程是恶意的,则矫正动作可以包括0/S下层安全代理4116终止、删除、修改或以另外方式中和这样的一个或多个相关线程(例如,使用在本公开内容中的其他地方描述的一种或多种技术)。作为附加示例,矫正动作可以包括0/S下层安全代理4116把与特定线程及其相关线程相关联的取证迹象传输给保护服务器202以供进一步分析。保护服务器202可以分析信息并把关于要采取的任何附加矫正动作的指令(例如,以安全规则4122的形式)传输给电子设备4104。作为进一步的示例,0/S下层安全代理4116可以尝试修复包括恶意线程的存储器的部分(例如,页面、存储器地址等等)。[0557]为了执行这样的修复,0/S下层安全代理4116可以不时产生存储器4106或其特定部分(例如,存储操作系统、安全应用或关键驱动程序的存储器的部分)的快照,并存储这样的快照(例如,存储在历史4140中)。快照可以与诸如日期和时间快照、与快照相关联的实体(例如,操作系统、应用或驱动程序)、与存储器页面相关联的线程标识符、虚拟存储器中存储器的地址位置等等的上下文信息一起存储。如果定位了恶意线程或线程族,则可以至少部分地基于与快照相关联的上下文信息通过用适当的快照替换具有恶意线程的存储器的部分来修复包括这样的线程的存储器的部分。在一些实施例中,0/S下层安全代理4116也可以(例如,在历史4140中)记录由可信实体在产生快照之后对快照的存储器位置做出的改变,以使得响应于检测到恶意软件对快照反转将不撤销合法改变。[0558]因为如果被应用于所有线程则相关线程和线程的潜在恶意行为的这样的监视可以消耗电子设备的处理资源的显著部分,0/S下层安全代理4116可以仅在发生可以指示特定存储器位置易感染恶意软件和/或特定存储器存储重要的或关键的代码或数据(例如,操作系统或安全应用)的已尝试访问时执行这样的监视。例如,0/S下层安全代理4116可以在捕获对特定存储器位置的权限(如权限标志4136中所实现的)的修改时开始对特定存储器位置监视线程行为和线程关系。[0559]图42是用于调节和控制电子设备上的自修改代码的方法4200的示例实施例。在步骤4205,0/S下层安全代理可以捕获对存储器的已尝试访问,其中,每一这样的尝试访问可以单独地或集体地指示自修改恶意软件的存在。可以根据安全规则确定所捕获的已尝试访问。潜在地指示恶意软件的已尝试访问可以包括但不限于对存储器权限的改变、把内容从一个存储器位置复制到另一存储器位置、修改存储器位置的内容和执行存储器位置。[0560]在步骤4210,0/S下层安全代理可以把关于已捕获的已尝试访问的信息记录在历史中(例如,已尝试访问的类型、与已捕获的已尝试访问相关联的存储器位置等等)。因为如果被应用到每一存储器位置则对历史的这样的记录可以消耗电子设备的处理资源的显著部分,Ο/s下层安全代理可以在发生可以指示特定存储器位置易感染恶意软件(例如,基于建立用于发起特定存储器地址的历史的触发事件的安全规则)的已尝试存储器访问时发起特定存储器位置的历史记录。例如,ο/s下层安全代理可以在捕获对特定存储器位置的权限(例如,如存储器位置的权限标志中所实现的)的修改时开始记录特定存储器位置的历史。[0561]在步骤4215,0/S下层安全代理可以监视(例如,根据安全规则)可以触发对特定存储器位置的历史的分析的启动的已尝试访问。因为如果被应用到每一存储器位置和/或已尝试访问,则分析历史以判断是否已经发生可疑行为可以消耗电子设备的处理资源的显著部分,Ο/s下层安全代理可以在发生与特定存储器位置相关联的特定的已捕获的已尝试访问对特定存储器位置发起对历史的分析(例如,在下面的步骤4220中)。例如,在一些实施例中,0/S下层安全代理可以在捕获对特定存储器位置处的内容的已尝试访问时触发对与特定存储器位置相关联的历史的分析的启动。[0562]在步骤4220,0/S下层安全代理可以分析历史,以便对特定存储器位置判断是否已经发生可疑行为。在其分析期间,Ο/s下层安全代理可以查阅安全规则,以便判断历史中实现的特定存储器位置的行为是否指示可以证明自修改恶意软件代码的潜在存在的可疑行为。例如,如果对历史的分析指示在第一存储器位置处的内容被复制到第二位置、在第二位置处被修改且然后已经发生对第二位置的内容的已尝试执行,则这样的指示可以是自修改恶意软件代码的潜在存在的迹象。作为另一示例,如果对历史的分析指示具有在第三位置处的共同起源的、在第一存储器位置和第二存储器位置处的内容都是已尝试执行的目标,则这样的指示可以是自修改恶意软件代码的潜在存在的迹象。作为进一步的示例,如果对历史的分析指示在特定存储器位置处的内容具有在多个其他存储器位置处的起源,则这样的指示可以是自修改恶意软件代码的潜在存在的迹象。[0563]在步骤4225,0/S下层安全代理可以判断是否已经检测到证明潜在恶意软件的存在的可疑行为(例如,基于单个已捕获的已尝试访问或对历史的分析)。如果已经检测到可疑行为,则方法4200可以进行到步骤4230。否则,方法4200可以再次进行到步骤4205。在步骤4230,响应于检测到证明潜在的恶意软件的存在的可疑行为(例如,基于单个已捕获的已尝试访问或对历史的分析),0/S下层安全代理可以发起矫正动作(例如,根据安全规则4122)。例如,在一些实施例中,0/S下层安全代理可以在检测到可疑行为时把在与所检测的可疑行为相关联的特定存储器位置处存储的内容与已知的恶意软件和/或已知的可信/可靠的进程进行比较,以判断该内容是不是恶意的。可以通过把内容的散列、指纹或其他签名与已知进程的散列、指纹或其他签名进行比较来实现这样的比较。作为另一示例,0/S下层安全代理可以在检测到可疑行为时把与可疑行为相关联的取证迹象(例如,存储器位置的内容、与存储器位置相关联的历史等等)报告给保护服务器以供进一步分析。[0564]在步骤4235,0/S下层安全代理可以判断与可疑行为相关联的存储器位置的内容是不是恶意的(例如,通过把该内容与已知进程、从保护服务器接收到的信息、对安全规则的引用和/或其他判断进行比较)。如果内容是恶意的,则方法4200可以进行到步骤4240。否则,方法4200可以再次进行到步骤4205。在步骤4240,响应于判断内容是恶意的,0/S下层安全代理可以采取进一步矫正动作(例如,根据安全规则)。这样的矫正动作可以包括但不限于不允许执行内容、撤销对内容的改变(例如,如历史陈述的对内容的修改和复制)、修复内容、用无害内容替换该内容和/或禁用与该内容相关联的进程。在完成步骤4240之后,方法4200可以再次进行到步骤4205。[0565]图43是用于修改电子设备上的恶意代码的方法4305的示例实施例。在步骤4305,0/S下层安全代理可以检测电子设备上恶意代码的存在。例如,0/S下层安全代理可以通过捕获对电子设备的存储器或电子设备的其他资源的访问来检测恶意代码的存在。作为另一示例,0/S下层安全代理可以通过扫描存储器的页面和/或电子设备的存储以便发现恶意代码来检测恶意代码的存在。作为进一步的示例,0/S下层安全代理可以通过从检测到恶意代码的存在的0/S内部安全代理接收通信来检测存储器中恶意代码的存在。[0566]在步骤4310-4320,响应于在电子设备上检测到恶意代码,0/S下层安全代理可以采取矫正动作,包括修改恶意代码。举例来说,在步骤4310,0/S下层安全代理可以修改恶意代码以使得包括恶意代码的程序可以自我终止和/或把执行传递给可以使恶意代码失效(例如,通过擦除和与恶意代码片段相关联的线程或进程相关联的所有代码和数据)的可信代码。例如,0/S下层安全代理可以把对操作系统的“exit”函数的调用插入到电子设备的存储器中的恶意代码,以使得可以最终终止恶意代码的执行。作为另一示例,0/S下层安全代理可以把指令(例如,“JUMP”指令)插入到电子设备的存储器中的恶意代码,该指令可以把恶意代码的执行重定向到其中存储有可以使恶意代码失效(例如,通过擦除和与恶意代码片段相关联的线程或进程相关联的所有代码和数据)的代码的已知、可信的部分的存储器4108的另一部分。作为进一步的示例,如果恶意代码目前正在执行,则0/S下层安全代理可以变更存储器中的指令指针值,以便引起把执行的控制权传递给可以使失效恶意代码(例如,通过擦除和与恶意代码片段相关联的线程或进程相关联的所有代码和数据)的代码的已知可信部分。替代地,0/S下层安全代理可以修改恶意代码以使得以使得修复恶意代码,允许已感染应用如同感染没有发生的那样有效地执行。通过用已知的或可信的代码替换恶意代码或修改存储器中的指令指针,以使得在另一存储器位置处的受感染代码的经恢复版本处继续执行。[0567]在步骤4315,0/S下层安全代理可以修改存储中包含的恶意代码。例如,通过捕获在电子设备的存储器和存储之间且反之亦然的内容传递,0/S下层安全代理可以收集关于被存储在存储器中的内容与被存储在存储中的相应内容的关系的信息并将其存储在日志、列表、高速缓存或其他数据结构中。因此,如果0/S下层安全代理标识存储器中的恶意代码,则它可以引用所收集的关于被存储在存储器中的内容与被存储在存储中的相应内容的关系的信息并修改具有恶意代码的、对应于存储器的位置的存储的位置中的内容。这样的修改可以包括但不限于删除存储中的相应内容,或修改内容以引起存储和/或存储器中的恶意代码的自我终止或删除。[0568]在步骤4320,0/S下层安全代理可以修改恶意代码对存储器和电子设备的其他资源的访问,例如,以便拒绝恶意代码片段对电子设备的存储器或其他资源的任何访问。对存储器和其他资源的这样的拒绝可以引起包括恶意代码的进程崩溃或以另外方式使其失效。例如,一旦已经标识恶意代码,则0/S下层安全代理可以捕获包括恶意代码的进程对存储器或电子设备的资源的已尝试访问并拒绝这样的访问。[0569]在步骤4325,0/S下层安全代理可以基于所检测的恶意代码的物理存储器地址标识潜在地具有恶意代码的存储器的其他部分。例如,在检测到表现出类似恶意软件的行为的线程时,0/S下层安全代理可以确定线程的执行地址和/或恶意代码在存储器页面内的位置。在虚拟存储器配置中,可以连续地列出应用代码,而在物理存储器中,应用代码基本上不是连续的。因而,通过利用由操作系统维护的在存储器中的物理存储器地址和存储中的虚拟存储器地址之间的映射,0/S下层安全代理可以标识对应于已标识的恶意代码、也可能包括恶意代码的虚拟存储器的部分,并把这样的虚拟存储器部分映射回到可能受感染的物理存储器地址。因此,0/S下层安全代理可以进一步监视在这样的物理存储器地址处的代码的执行以便发现恶意代码的存在。[0570]在步骤4330,0/S下层安全代理可以隔离恶意代码并将其作为取证迹象传递给保护服务器以供进一步分析。[0571]图44是用于监视和跟踪电子设备上的相关线程的方法4400的示例实施例。在步骤4405,0/S下层安全代理可以捕获对和与另一线程创建、挂起或终止一个线程相关联的线程同步对象的函数调用相关联的存储器或处理器资源的已尝试访问。例如,0/S下层安全代理可以捕获对与进程间通信(IPC)调用相关联的处理器资源的存储器的已尝试访问。在步骤4410,0/S下层安全代理可以把与这样的已捕获的已尝试访问相关联的信息(例如,线程标识符)存储到历史。[0572]在步骤4415,0/S下层安全代理可以捕获对存储器或处理器资源的已尝试访问,其中,每一这样的尝试访问可以单独地或集体地指示恶意软件的存在。可以根据安全规则确定所捕获的已尝试访问。潜在地指示恶意软件的已尝试访问可以包括但不限于对存储器权限的改变、把内容从一个存储器位置复制到另一存储器位置、修改存储器位置的内容和执行存储器位置。在步骤4420,0/S下层安全代理可以把与这样的已捕获的已尝试访问相关联的信息(例如,线程5标识符)存储到历史。在步骤4410和4420,0/S下层安全代理可以访问处理器资源中的信息以判断线程元数据的存储器位置,且基于线程元数据,获得特定线程的线程标识符以便作为该信息的一部分存储在历史中。[0573]在步骤4425,0/S下层安全代理可以分析历史(例如,根据安全规则)以判断相对于特定线程是否已经发生与恶意软件感染一致的行为。在步骤4430,如果已经发生与恶意软件感染一致的行为,则0/S下层安全代理可以分析历史,以便确定与已经标识了恶意软件的特定线程相关的一个或多个线程。[0574]在步骤4435,0/S下层安全代理可以对特定线程和一个或多个相关线程采取矫正动作。例如,矫正动作可以包括0/S下层安全代理检查、扫描、和/或分析这样的线程以判断这样的相关线程是否包括恶意代码。作为另一示例,矫正动作可以包括如果判断这样的线程是恶意的则0/S下层安全代理终止、删除、修改或以另外方式中和这样的一个或多个相关线程。作为附加示例,矫正动作可以包括0/S下层安全代理把与特定线程及其相关线程相关联的取证迹象传输给保护服务器以供进一步分析。[0575]图45是用于保护电子设备4504的存储器和存储的系统4500的示例实施例。系统4500可以包括0/S下层安全代理4516,0/S下层安全代理4516被配置为在电子设备4504上操作以便防备对访问电子设备4504的存储器4508和存储4526的恶意尝试。此外,0/S下层安全代理4516可以被配置为使用一个或多个安全规则4522来判断要捕获什么已尝试操作以及如何响应这样的已捕获操作。0/S下层安全代理可以被配置为允许已捕获操作、拒绝已捕获操作或对已捕获操作采取其他矫正动作。[0576]如图45中所示出,电子设备4504可以包括被耦合到存储器4508的处理器4506、应用4510、驱动程序4511、操作5系统4512、操作系统下层安全代理4516、存储4526和应用资产4548。电子设备4504可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701、图9的电子设备901、图12的电子设备1201和/或其任何组合实现,或者被配置为实现它们的功能性。处理器4506可以全部地或部分地由图2的处理器208、图4的处理器408、图7的处理器702、图9的处理器902、图12的处理器1202和/或其任何组合实现,或者被配置为实现它们的功能性。存储器4508可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703、图9的存储器903、图12的物理存储器1203或虚拟存储器和/或其任何组合实现,或者被配置为实现它们的功能性。应用4510可以全部地或部分地由图1的应用110、图2的应用210、图4的应用410、图7的应用709、图9的应用910、图12的应用1210和/或其任何组合实现,或者被配置为实现它们的功能性。驱动程序4511可以全部地或部分地由图1的驱动程序111、图2的驱动程序211、图4的驱动程序411、图7的驱动程序711、图9的驱动程序911、图12的驱动程序1211和/或其任何组合实现,或者被配置为实现它们的功能性。操作系统4512可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图9的操作系统913、图12的操作系统1213和/或其任何组合实现,或者被配置为实现它们的功能性。0/S下层安全代理4516可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442、PC固件安全代理444或0/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708、图9的0/S下层捕获代理920、图12的0/S下层安全代理1220和/或其任何组合实现,或者被配置为实现它们的功能性。0/S内部安全5代理4518可以全部地或部分地由0/S内部安全代理218、图4的0/S内部安全代理418、图7的0/S内部安全代理718、图9的0/S内部安全代理919、0/S内部安全代理1219和/或其任何组合实现,或者被配置为实现它们的功能性。存储4526可以全部地或部分地由图4的存储426实现,或者被配置为实现它的功能性。[0577]安全规则4522可以由图1的安全规则114、图2的安全规则222、图4的安全规则434、436、438、图5的安全规则518、或图7的安全规则707、723、图9的安全规则908、图12的安全规则1208和/或其任何组合实现,或者被配置为实现它们的功能性。可以以任何合适的方式建立安全规则4122(例如,由电子设备4504的用户设置的政策、由包括电子设备4504的企业的管理员设置的政策、由0/S下层安全代理4516的创建者设置的政策等等)。在一些实施例中,0/S下层安全代理4516可以经由网络244请求和/或接收来自保护服务器202的对安全规则4522的更新或修改(例如,例如,由于对恶意软件定义的更新)。[0578]0/S下层安全代理4516可以包括存储器跟踪设施4542、存储跟踪设施4544和存储器/存储安全层4546。存储器跟踪设施4542可以与存储器4508连接以便监视对存储器4508的访问。例如,存储器跟踪设施4542可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理442、图1的微代码安全代理708、图9的0/S下层安全代理920、和/或图12的0/S下层安全代理1220实现,或者被配置为实现它们的功能性,以便在应用4510、驱动程序4511和/或操作系统4512对读、写或执行存储器4508中的特定页面的已尝试访问(例如,如页面表标志和/或位标志所指示的)发生时捕获或触发。作为另一示例,存储器跟踪设施4542可以全部地或部分地由0/S下层安全代理712和/或微代码安全代理708实现,或者被配置为实现它们的功能性,以便在应用4510、驱动程序4511和/或操作系统4512对读、写或执行存储器4508中的特定地址的已尝试访问发生时捕获或触发。因此,存储器跟踪设施4542可以跟踪内容在存储器4508中从一个位置到另一位置的移动(例如,从一个页面到另一页面或从一个地址到另一地址)或在存储器4508和存储4526之间的移动(例如,连同虚拟存储器上下文交换或从存储4526加载可执行代码)。另外,存储器跟踪设施4542可以把关于所跟踪的移动的信息存储在日志、列表、高速缓存或存储器跟踪设施4542和/或存储器/存储安全层4546可访问的其他合适的数据结构。[0579]存储跟踪设施4544可以与存储4526连接以便监视内容从存储4526中的一个位置移动到另一位置或在存储器4508和存储4526之间移动。例如,存储跟踪设施4544可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理442、图7的微代码安全代理708、图9的0/S下层安全代理920和/或图12的0/S下层安全代理1220实现,或者被配置为实现它们的功能性,以便在应用4510、驱动程序4511和/或操作系统4512对读、写或执行存储4526中的特定扇区的已尝试访问发生时捕获或触发。作为另一示例,存储跟踪设施4544可以全部地或部分地由0/S下层安全代理712和/或微代码安全代理708实现,或者被配置为实现它们的功能性,以便在应用4510、驱动程序4511和/或操作系统4512对读、写或执行存储4526中的特定地址的已尝试访问时捕获或触发。因此,存储跟踪设施4544可以跟踪内容从存储4526中的一个位置移动到另一位置(例如,从一个扇区移动到另一扇区或从一个地址移动到另一地址)或在存储器4508和存储4526之间移动(例如,连同虚拟存储器上下文交换或加载来自存储4526的可执行代码一起)。[0580]在操作中,存储器/存储安全层4546可以接收安全规则4522并把安全规则4522传输给存储器跟踪设施4542和存储跟踪设施4544。因而,存储器跟踪设施4542和存储跟踪设施4544的监视可以基于安全规则4522,安全规则4522可以指示监视是否得到允许和/或标识要监视存储器4508和/或存储4526的哪些部分。[0581]存储器跟踪设施4542和存储跟踪设施4544可以向存储器/存储安全层4546通知存储器4508和/或存储4526的已尝试访问(例如,对在存储器4508或存储4526内或在存储器和存储4526之间的内容的尝试移动)。存储器/存储安全层4546可以全部地或部分地由图1的0/S下层捕获代理104、图2的SVMM安全代理217或SVMM216、图4的固件安全代理440、442、PC固件安全代理444或0/S系统下层代理450、图5的固件安全代理516、图7的微代码安全代理708、图9的0/S下层捕获代理920、图12的0/S下层安全代理和/或其任何组合实现,或者被配置为实现它们的功能性。存储器/存储安全层4546可以根据安全规则4522和/或应用资产4548分析由存储器跟踪设施4542和/或存储跟踪设施4544报告的存储器4508和/或存储4526的已尝试访问,以便判断这样的尝试访问是否指示恶意软件攻击,如下面更详细地描述的。在一些实施例中,存储器/存储安全层4546可以把如图45的活动4532和活动4534所指示的、存储器跟踪设施4542和存储跟踪设施4544所报告的访问的日志、列表或其他指示存储到存储器4508和/或存储4526。因而,除了分析单个对存储器4508和/或存储4526的已尝试访问之外,存储器/存储安全层4546可以根据安全规则4522分析活动4532和/或活动4534中所包括的活动的历史,以便判断该访问的历史行为是否指示恶意软件的存在。[0582]在特定的实施例中,存储器/存储安全层4546可以全部地或部分地由图2的SVMM216实现,或者被配置为实现它的功能性,存储器跟踪设施4542可以全部地或部分地由图7的微代码安全代理708实现,或者被配置为实现它的功能性,且存储跟踪设施4544可以全部地或部分地由图4的固件安全代理442实现,或者被配置为实现它的功能性。在这样的实施例中,存储器跟踪设施4542可以捕获特定存储器访问,且存储跟踪设施4544可以捕获特定存储访问,且每一个都可以向存储器/存储安全层4546通知这样的已捕获事件。然后,存储器/存储安全层4546可以分析单个对存储器和/或存储的已尝试访问,和/或根据安全规则4522分析活动的历史,以便判断访问的历史行为是否指示恶意软件的存在。[0583]在另一特定的实施例中,存储器/存储安全层4546、存储器跟踪设施4542和存储跟踪设施4544中的每一个都可以全部地或部分地由图2的单个SVMM216实现,或者被配置为实现它的功能性。在这样的实施例中,SVMM216可以捕获特定存储器访问、捕获特定的存储访问并分析对存储器和/或存储的个体已尝试访问,和/或根据安全规则4522分析活动的历史,以便判断访问的历史行为是否指示恶意软件的存在。[0584]应用4510、驱动程序4511、操作系统4512和/或另一实体的应用资产4548可以表示指示这样的实体及其组件如何驻留在存储器4508和/或存储4526内的映射、表、列表和/或其他数据结构。应用资产4548可以标识实体可以存储到其中的存储器4508和/或存储4526的部分(例如,存储器页面、存储器地址范围、盘扇区、盘地址分级等等)。如上所述,基于应用资产4548和/或安全规则4522,存储器/存储安全代理4516可以判断来自存储器跟踪设施4542和/或存储跟踪设施4544的关于对存储器4508和/或存储4526的已尝试访问的通知是否指示恶意软件攻击。例如,在其中应用4510是便携式可执行文件的实施例中,应用资产4548可以标识包括应用4510的可执行代码的、存储器4508和/或存储4526中所存储的应用4510的部分,和/或标识包括应用4510的数据(包括应用4510的组件存储在其中的存储器4508和/或存储4526的位置)的、存储器4508和/或存储4526中所存储的应用4510的部分。安全规则4522可以规定,对于应用4510的这样的示例,起源于不同于应用4510的程序的、对包括应用4510的可执行代码的存储器4508和/或存储4526的部分的写访问指示恶意软件攻击。另外或替代地,安全规则4522可以规定,这样的示例对于应用4510的这样的示例,起源于不同于应用4510的程序的、对包括应用4510的数据的存储器4508和/或存储4526的部分的读或写访问指示恶意软件攻击。[0585]作为另一示例,在其中应用4510是字处理程序的实施例中,应用资产4548可以标识包括应用4510的可执行代码的、存储器4508和/或存储4526中所存储的应用4510的部分、标识存储器4508和/或包括脚本、映像、格式化文本、笔记和应用4510的其他数据(包括应用4510的组件存储在其中的存储器4508和/或存储4526的位置)的、存储4526中所存储的应用4510的部分。安全规则4522可以规定,对于应用4510的这样的示例,可以允许对包括应用4510的数据的存储器4508和/或存储4526的部分的读或写访问(例如,起源于操作系统、反恶意软件应用等等的访问),并且不同于该组特定程序的程序的访问可以指示恶意软件攻击。[0586]应用资产4548可以由应用4510、驱动程序4511、操作系统4512和/或其他程序的创建者(例如,应用销售商、程序员或创建者)、电子设备4504的用户、包括电子设备4504的企业的管理员、0/S下层安全代理4516的创建者和/或另一合适的个体创建或定义。在一些实施例中,对于程序,应用资产4548可以包括在程序的存储上结构和程序的存储器中结构的之间的关系(例如,在存储器4508和存储4526的程序的组件之间的映射)。[0587]为了聚集应用资产4548,0/S内部安全代理4518和/或0/S下层安全代理4516可以使用任何数量的合适的技术。例如,0/S内部安全代理4518和/或0/S下层安全代理4516可以收集可以与由操作系统4512结合虚拟存储器操作产生的虚拟存储器页面交换相关联的信息。例如,在Windows?中,0/S内部安全代理4518可以访问原型页表项(PTE)并把这样的信息传输给0/S下层安全代理4516。在其他实施例中,0/S下层安全代理4516可以在执行访问的任何时刻为存储器4508中的页面和/或盘上的扇区4526产生散列、指纹或其他唯一标识符,并维护这样的标识符的高速缓存(例如,要存储在存储器4508和/或存储4526中的这样的高速缓存)。在这样的场景中,0/S下层安全代理4516可以应用简单比较以判断存储4526的哪一扇区被加载到存储器4508的哪一页面,且反之亦然。这样的映射可以允许安全代理4516和/或4518跟踪存储器4508和/或存储4526中的实体的特定信息的位置。[0588]因为如果被应用到对存储器4508和存储4526的所有访问则存储器/存储安全层4546、存储器跟踪设施4542和/或存储跟踪设施4544所执行的监视和分析可以消耗电子设备的处理资源的显著部分4504,可以仅在特定的已定义倾向中允许对存储器4508和存储4526的监视和分析。例如,在一些实施例中,安全规则4522可以提供,存储器跟踪设施4542和/或存储跟踪设施4544仅监视存储器4508和/或存储4526的特定部分(例如,包括操作系统或关键驱动程序或应用的那些部分)。作为另一示例,在相同的或替代的实施例中,安全规则4522可以提供,如果其他指示示出存储器4508和/或存储4526的特定部分中的程序是可疑的和/或其他指示示出恶意软件攻击已经发生,则存储器跟踪设施4542和/或存储跟踪设施4544监视该程序。作为进一步的示例,如同虚拟存储器上下文交换或加载来自存储4526的可执行代码的情况一样,存储器跟踪设施4542和/或存储跟踪设施4544可以除了在把内容从存储器4508加载到存储4526或反之亦然时之外放弃存储器捕获和存储捕获。[0589]在操作中,如上所述,存储器/存储安全层4546可以通过根据安全规则4522和/或应用资产4548分析所报告的对存储器4508和/或存储4526的访问来保护存储器4508和/或存储4526。在接收对存储器4508和/或5存储4526的已尝试访问的通知之后,存储器/存储安全层4546可以确定请求已尝试访问的实体的身份(例如,操作系统451、驱动程序4511或应用4510)。例如,0/S内部安全代理4518可以从操作系统4512收集与特定存储器4508和/或存储请求4526的请求实体相关的上下文信息,并把这样的信息传输给存储器/存储安全层4546。另外,存储器/存储安全层4546可以验证请求实体的身份并判断该实体是否已被恶意软件危害(例如,通过把被存储在存储器中的实体的映射或散列与实体的已知预期映射或散列进行比较,或扫描被存储在存储器中的实体以便发现恶意软件的存在)。此外,存储器/存储安全层4546可以判断实体是否得到授权做出请求(例如,基于安全规则4522和/或应用资产4548判断是否授权实体访问存储器4508或存储4526的特定部分)。此外,存储器/存储安全层4546可以扫描与尝试访问相关的内容(例如,正在被读、写或执行的数据或可执行代码是)以便判断该内容是否包含恶意软件。而且,存储器/存储安全层4546可以判断对访问历史(例如,如活动4532和/或活动4534中所存储的)的行为分析是否指示恶意软件的存在(例如,未经授权的实体对0/S4512的受保护部分的已尝试访问)。如果判断已尝试访问是恶意软件相关的,则存储器/存储安全层4546可以采取矫正动作。矫正动作可以包括阻止已尝试访问、终止请求实体、修复请求实体、把恶意软件相关事件的发生传输给保护服务器202和/或任何其他合适的动作。[0590]作为特定的示例,响应于对存储4526的特定扇区的请求(如由来自存储跟踪设施4544的通知所指示的),存储器/存储安全层4546可以至少基于安全规则4522判断是否要访问该特定扇区。另外,存储器/存储安全层4546可以扫描与尝试访问相关的内容(例如,正在被读、写或执行的数据或可执行代码)以便判断该内容是否免遭潜在的恶意软件感染。判断是否内容。此外,存储器/存储安全层4546可以至少基于安全规则4522判断是否授权请求已尝试访问的实体访问特定的扇区。如果这样的判断指示已尝试访问不是恶意软件相关的,则存储器/存储安全层4546可以批准已尝试访问。[0591]作为另一特定的示例,响应于对存储器的特定页面的请求(如来自存储器跟踪设施4542的通知所指示的),存储器/存储安全层4546可以扫描与已尝试访问相关的内容(例如,结合已尝试访问(例如,正在被读、写或执行的数据或可执行代码))以便判断该内容是否免遭潜在的恶意软件感染。另外,存储器/存储安全层4546可以至少基于安全规则4522判断是否授权请求已尝试访问的实体访问特定页面。此外,如果已尝试访问是从存储4526到存储器4508的传递,则存储器/存储安全层4546可以至少基于安全规则4522判断要从中传递内容的存储4526的特定部分是否可信源。如果这样的判断指示已尝试访问不是恶意软件相关的,则存储器/存储安全层4546可以批准已尝试访问。[0592]另外,当在存储器4508和存储4526之间、在存储器4508的不同部分之间或者在存储4526的不同部分之间传递内容时可以过渡地应用被应用到存储器4508或存储4526的特定部分的安全规则4522和保护。因而,例如,如果一组特定的安全规则4522应用到存储器4508的特定部分中的内容,则在把这样的内容传递到存储器4508的另一部分或传递到存储4526时,存储器/存储安全层4546可以更新安全规则4522以便应用到存储器4508或存储4526的目的地部分。[0593]图46是用于保护电子设备的存储器和存储的方法4600的示例实施例。在步骤4605,存储器/存储安全层可以把安全规则传输给存储器跟踪设施和存储跟踪设施。因为在此公开的用于保护存储器和存储免遭恶意软件的系统和方法可以消耗显著的处理器、存储器和/或其他资源,期望仅在存储器或存储的特定位置尤其易受恶意软件攻击感染时采用这样的系统和方法。例如,如果存储器或存储的部分包括操作系统或安全应用的部分,或如果已经在电子设备上看见或检测到攻击的先前指示,则存储器或存储的部分易受恶意软件攻击感染。[0594]在步骤4610,存储器跟踪设施和存储跟踪设施可以根据安全规则监视访问。为了监视,存储器跟踪设施和存储跟踪设施可以在对从存储器/存储安全层接收的安全规则所标识的存储器或存储的特定部分时的已尝试访问(例如,已尝试的读、写或执行)发生时捕获或触发。[0595]在步骤4615,存储器跟踪设施和/或存储跟踪设施可以把对存储器和/或存储的已尝试访问的通知传输给存储器/存储安全层。[0596]在步骤4620,存储器/存储安全层可以确定请求在存储器/存储安全层的通知中所标识的已尝试访问的实体的身份(例如,操作系统、驱动程序或应用)。例如,与存储器/存储安全层通信的0/S内部安全代理可以从操作系统收集与特定存储器和/或存储请求的请求实体相关的上下文信息,并将这样的信息传输给存储器/存储安全层。[0597]在步骤4625,存储器/存储安全层可以验证请求实体的身份并判断该实体是否已经被恶意软件危害。例如,存储器/存储安全层可以把存储器中所存储的实体的映射或散列与实体的已知预期映射或散列进行比较。作为另一示例,存储器/存储安全层可以扫描存储器中所存储的实体以便发现恶意软件的存在。[0598]在步骤4630,存储器/存储安全层可以判断是否授权该实体做出请求。例如,存储器/存储安全层可以查阅安全规则和/或应用资产以便判断是否授权该实体访问存储器4508或存储4526的特定部分。在步骤4635,存储器/存储安全层可以分析与已尝试访问相关联的内容(例如,正在被读、写或执行的数据或可执行代码)。例如,存储器/存储安全层可以扫描与已尝试访问相关的内容以便判断该内容是否包含恶意软件。[0599]在步骤4640,存储器/存储安全层可以分析对存储器和/或存储的访问的历史。这样的历史可以在电子设备的存储器和/或存储中被存储为日志或列表。这样的分析可以包括对访问存储器和/或存储的历史的行为分析以判断该历史是否指示恶意软件的存在。[0600]在步骤4645,存储器/存储安全层可以判断(例如,基于步骤4620-4640中的一个或多个的分析和判断)由存储器跟踪设施和/或存储跟踪设施报告的对存储器和/或存储的已尝试访问是否指示该已尝试访问受到恶意软件影响。另外,如果存储器/存储安全层判断经修改内容受到类似恶意软件的行为影响,则存储器/存储安全层可以采取矫正动作(例如,移除、隔离和/或以另外方式使恶意软件失效的动作)。另外,在一些实施例中,存储器/存储安全层可以把关于类似恶意软件的行为的发生的信息(例如,取证信息)传输给保护服务器。[0601]在步骤4650,存储器/存储安全层可以把访问的通知添加到被存储在电子设备的存储器和/或存储上的访问的日志或列表。为了执行对访问历史的行为分析,存储器/存储安全层可以稍后访问已存储的日志或列表。在完成步骤4650之后,方法4600可以再次返回到步骤4605。[0602]图47是用于保护对在电子设备4701上执行的操作系统4713的对象的访问的系统4700的示例实施例。系统4700可以包括0/S下层捕获代理4720和已触发事件应对程序4722,0/S下层捕获代理4720和已触发事件应对程序4722被配置为在电子设备4701上操作以便检测在操作系统4713上执行的基于软件的实体访问对象4706和/或对象管理器4704的恶意尝试。此外,0/S下层捕获代理4720和已触发事件应对程序4722可以被配置为使用一个或多个安全规则4708来判断何时捕获对对象4706和/或对象管理器4704的访问以及如何应对与已捕获操作相关联的已触发事件。0/S下层捕获代理4720和已触发事件应对程序4722可以被配置为允许已触发事件、拒绝已触发事件或对已触发事件采取其他矫正动作。[0603]电子设备4701可以全部地或部分地由图1的电子设备103、图2的电子设备204、图4的电子设备404、图7的电子设备701、图9的电子设备901、图12的电子设备1201和/或其任何组合实现,或者被配置为实现它们的功能性。电子设备4701可以包括被耦合到存储器4703的一个或多个处理器4702。处理器4702可以全部地或部分地由图2的处理器208、图4的处理器408、图7的处理器702、图9的处理器902、图12的处理器1202和/或其任何组合实现,或者被配置为实现它们的功能性。电子设备4701可以包括操作系统4713,操作系统4713可以包括0/S内部安全代理4719和用于管理对象4706的对象管理器4704。操作系统4713可以全部地或部分地由图1的操作系统112、图2的操作系统212、图4的操作系统412、图7的操作系统713、图9的操作系统913、图12的操作系统1213和/或其任何组合实现,或者被配置为实现它们的功能性。0/S内部安全代理4719可以全部地或部分地由图1的0/S内部安全代理218、图4的0/S内部安全代理418、图7的0/S内部安全代理719、图9的0/S内部安全代理919、图12的0/S内部安全代理1219和/或其任何合适的组合实现,或者被配置为实现它们的功能性。安全规则4708可以由图1的安全规则114、图2的安全规则220、222、图4的安全规则420、434、436、438、图5的安全规则518、图7的安全规则707、721、723、图9的安全规则908、921、图12的安全规则1208、1221和/或其任何组合实现,或者被配置为实现它们的功能性。保护服务器4714可以全部地或部分地由图1的保护服务器102、图2的保护服务器202和/或其任何组合实现,或者被配置为实现它们的功能性。[0604]存储器4703可以全部地或部分地由图2的存储器206、图4的存储器406、图7的存储器703、图9的存储器903、图12的存储器1203和/或其任何组合实现,或者被配置为实现它们的功能性。存储器4703可以使用被配置为虚拟化对存储器4703的访问的虚拟存储器系统来实现。在虚拟存储器系统中,可以给在操作系统4713上执行的软件进程提供该进程可以将其看作是连续的存储器块的虚拟地址空间。实际上,虚拟地址空间可以跨越物理存储器的不同区域而散布。在进程请求访问存储器时,操作系统4713可以负责把进程的虚拟存储器地址映射到数据实际上存储在其中的存储器4703中的物理地址。虚拟地址空间可以被分割成被称为虚拟存储器页面的固定大小的连续的虚拟存储器地址块。页面表可以被用来存储从虚拟存储器页面到虚拟存储器页面存储在其中的存储器4703中相应的物理地址的映射。页面表可以包括各种访问权限,例如读、写和/或执行,以便指定对给定虚拟存储器页面授权的访问类型。在进程尝试以相关的虚拟存储器页面的访问权限不授权的方式来访问虚拟存储器地址时,可以拒绝该尝试。[0605]0/S下层捕获代理4720可以由图1的0/S下层捕获代理104、图2的SVMM216、图4的固件安全代理440、442和/或PC固件安全代理444、图5的固件安全代理516和/或图7的微代码安全代理708、图9的0/S下层捕获代理920、图12的0/S下层安全代理1220和/或其任何组合实现,或者被配置为实现它们的功能性。已触发事件应对程序4722可以由图1的已触发事件应对程序108、图2的SVMM安全代理217、图4的0/S下层代理450、图7的0/S下层代理712、图9的已触发事件应对程序922和/或其任何组合实现,或者被配置为实现它们的功能性。在各种实施例中,0/S下层捕获代理4720的功能性中的一些可以由已触发事件应对程序4722实现,并且/或者已触发事件应对程序4722的功能性中的一些可以由0/S下层捕获代理4720实现。此外,可以在相同的软件模块中实现0/S下层捕获代理4720和已触发事件应对程序4722。[0606]使用对象4706来表示与操作系统4713相关联的每一资源,可以把操作系统4713实现为对象面向环境。例如,操作系统4713可以具有对象,这些对象表示驱动程序4711、应用4710、进程、存储器4703、文件和/或文件夹、物理设备和/或由操作系统4713使用的任何其他资源。另外,在操作系统4713上执行的每一应用4710和/或其他软件进程执行也可以使用对象4706来表示由特定的应用4710或软件进程使用的资源。对象4706可以包括对象函数4730,对象函数4730对特定类型的对象4706来说是唯一的,且可以被用来操作特定对象4706的数据。对象4706可以由包括首部和主体的数据结构来表示。对象4706的首部可以包括所有对象公用的管理字段。这些字段可以由对象管理器4704用来管理对象4706。对象4706的首部可以包括,例如,标识对象4706的对象名称和/或安全描述符指定与对象4706相关联的访问权限。对象4706的主体可以包含对特定类型的对象4706来说是唯一的对象专用数据字段。[0607]对象管理器4704可以被配置为在操作系统4713中执行以便管理操作系统4713的对象4706。可以使用可以被用来管理对象4706各种对象管理器函数4726来实现对象管理器4704。例如,对象管理器函数4726可以包括函数,这些函数被用来创建、删除、修改数据和/或修改对象4706的设置。对象管理器函数4726可以使用一个或多个子函数4728来实现。微软WindoWs?操作系统的对象管理器4704所使用的对象管理器函数4726的示例可见表1。[0608]【权利要求】1.一种用于保护电子设备的系统,包括:存储器;处理器;驻留在所述存储器中以供由所述处理器执行的一个或多个操作系统;通信上耦合到所述操作系统的所述电子设备的资源;被配置为在所述电子设备上以低于访问所述资源的所述电子设备的所有操作系统的级别执行的虚拟机监视器;以及被配置为在所述电子设备上以低于访问所述资源的所述电子设备的所有操作系统的级别执行的安全代理;其中,所述虚拟机监视器被配置为:截取从高于所述虚拟机监视器的级别做出的对所述资源的请求;以及向所述安全代理告知所述请求;以及其中,所述安全代理被配置为判断所述请求是否指示恶意软件。2.如权利要求1所述的系统,其特征在于,如果所述请求指示恶意软件,则所述安全代理被配置为拒绝所述请求。3.如权利要求1所述的系统,进一步包括被耦合到所述安全代理的服务器,所述服务器被配置为向所述安全代理提供安全规则,所述安全规则被用来判断所述请求是否指示恶意软件。4.如权利要求3所述的系统,其特征在于,所述服务器被配置为:接收关于由所述虚拟机监视器观察到的所述电子设备上的行为且包括所述请求的信息;以及判断所观察到的行为是否指示恶意软件。5.如权利要求1所述的系统,其特征在于,所述虚拟机监视器和所述安全代理由相同的软件模块实现。6.如权利要求1所述的系统,其特征在于,所述虚拟机监视器和所述安全代理在所述电子设备的裸机层内操作。7.如权利要求1所述的系统,其特征在于,所述处理器包括用于所述资源的虚拟化扩展。8.如权利要求7所述的系统,其特征在于,所述虚拟机监视器使用所述虚拟化扩展来截取对所述资源的所述请求。9.如权利要求1所述的系统,其特征在于,所述资源包括所述处理器的寄存器。10.如权利要求1所述的系统,其特征在于,所述资源包括物理存储器。11.如权利要求1所述的系统,其特征在于,所述资源包括虚拟存储器。12.如权利要求11所述的系统,其特征在于,所述安全代理被配置为从一个或多个安全规则判断对虚拟存储器的一个或多个页面的尝试访问是否指示恶意软件。13.如权利要求1所述的系统,进一步包括在所述操作系统中的一个或多个中运行且通信上耦合到所述安全代理的操作系统安全代理,其中,所述安全代理被配置为提供关于做出对所述资源的所述请求的所述一个或多个操作系统中的一个或多个元素的安全信息。14.如权利要求13所述的系统,其特征在于,所述安全代理被配置为确证所述操作系统安全代理。15.如权利要求1所述的系统,其特征在于,所述安全代理被配置为:扫描所述存储器;以及判断已知所述存储器的任何内容是恶意的还是安全的。16.一种用于保护电子设备的系统,包括:存储器;处理器;驻留在所述存储器中以供由所述处理器执行的一个或多个操作系统;通信上耦合到所述操作系统的所述电子设备的资源;被配置为在所述电子设备上以高于访问所述资源的所述电子设备的所有操作系统的优先级执行的虚拟机监视器,这样的优先级由所述处理器定义;以及被配置为在所述电子设备上以高于访问所述资源的所述电子设备的所有操作系统的优先级执行的安全代理,这样的优先级由所述处理器定义;其中,所述虚拟机监视器被配置为:截取从具有少于所述虚拟机监视器的优先级的实体做出的对所述资源的请求;以及向所述安全代理告知所述请求;以及其中,所述安全代理被配置为判断所述请求是否指示恶意软件。17.一种用于保护电子设备的系统,包括:存储器;处理器;驻留在所述存储器中以供由所述处理器执行的一个或多个操作系统;耦合到所述操作系统的所述电子设备的资源;被配置为在所述电子设备上在比访问所述资源的所述电子设备的所有操作系统具有更多特权的执行环上执行的虚拟机监视器;以及被配置为在所述电子设备上在比所述电子设备的所有操作系统具有更多特权的执行环上执行的安全代理;其特征在于,所述虚拟机监视器被配置为:截取对所述资源的请求,从比所述虚拟机监视器具有较少特权的执行环做出所述请求;以及向所述安全代理告知所述请求;以及其中,所述安全代理被配置为判断所述请求是否指示恶意软件。18.如权利要求17所述的系统,其特征在于,所述虚拟机监视器在对应于I环的所述系统的执行环中执行。19.一种用于保护电子设备的方法,包括在低于访问资源的所述电子设备的所有操作系统的级别:截取从较高的级别做出的对所述电子设备的所述资源的请求,所述资源通信上耦合到所述操作系统;以及判断所述请求是否指示恶意软件。20.如权利要求19所述的方法,进一步包括如果所述请求指示恶意软件,则拒绝所述请求。21.如权利要求19所述的方法,进一步包括从服务器接收安全规则,所述安全规则被用来判断所述请求是否指示恶意软件。22.如权利要求21所述的方法,进一步包括:发送关于在所述电子设备上观察到的行为的信息;以及接收所述行为是否指示恶意软件的判断。23.如权利要求19所述的方法,其特征在于,在所述电子设备的裸机层内实施截取所述请求并判断所述请求是否指示恶意软件。24.如权利要求19所述的方法,进一步包括使用虚拟化扩展来截取对所述资源的所述请求,所述虚拟化扩展被包括在所述电子设备的处理器中且与所述资源相关联。25.如权利要求19所述的方法,其特征在于,所述资源包括所述处理器的寄存器。26.如权利要求19所述的方法,其特征在于,所述资源包括物理存储器。27.如权利要求19所述的方法,其特征在于,所述资源包括虚拟存储器。28.如权利要求27所述的方法,进一步包括从一个或多个安全规则判断对虚拟存储器的一个或多个页面的尝试访问是否指示恶意软件。29.如权利要求19所述的方法,进一步包括接收关于所述电子设备的操作系统中的一个或多个元素的信息,所述元素做出对所述资源的所述请求。30.如权利要求29所述的方法,进一步包括确证操作系统安全代理的安全,所述操作安全代理被配置为收集关于所述电子设备的操作系统中的一个或多个元素的信息。31.如权利要求19所述的方法,进一步包括:扫描所述电子设备的存储器;以及判断已知所述存储器的任何内容是恶意的还是安全的。32.一种用于保护电子设备的方法,包括以比访问资源的所述电子设备的所有操作系统较高的优先级,其中这样的优先级由所述电子设备的处理器定义:截取从具有较少的优先级的实体做出的对所述资源的请求;以及判断所述请求是否指示恶意软件。33.一种用于保护电子设备的方法,包括在比访问资源的所述电子设备的所有操作系统具有更多特权的执行环上:截取对所述资源的请求,从具有较少特权的执行环上做出所述请求;以及判断所述请求是否指示恶意软件。34.如权利要求33所述的方法,其特征在于,所述具有更多特权的执行环对应于I环。35.一种制品,包括:计算机可读介质;以及在所述计算机可读介质上携带的计算机可执行指令,所述指令可由处理器读取,在被读取和被执行时,所述指令用于引起所述处理器在低于访问资源的电子设备的所有操作系统的级别:截取从较高的级别做出的对所述电子设备的所述资源的请求,所述资源通信上耦合到所述操作系统;以及判断所述请求是否指示恶意软件。36.如权利要求35所述的制品,其特征在于,进一步引起所述处理器:如果所述请求指示恶意软件,则拒绝所述请求。37.如权利要求35所述的制品,其特征在于,进一步引起所述处理器从服务器接收安全规则,所述安全规则被用来判断所述请求是否指示恶意软件。38.如权利要求37所述的制品,其特征在于,进一步引起所述处理器:发送关于在所述电子设备上观察到的行为的信息;以及接收所述行为是否指示恶意软件的判断。39.如权利要求35所述的制品,其特征在于,引起所述处理器截取所述请求并判断所述请求是否指示在所述电子设备的裸机层内的恶意软件。40.如权利要求35所述的制品,进一步包括引起所述处理器使用虚拟化扩展来截取对所述资源的所述请求,所述虚拟化扩展被包括在所述电子设备的处理器中且与所述资源相关联。41.如权利要求35所述的制品,其特征在于,所述资源包括所述处理器的寄存器。42.如权利要求35所述的制品,其特征在于,所述资源包括物理存储器。43.如权利要求35所述的制品,其特征在于,所述资源包括虚拟存储器。44.如权利要求43所述的制品,其特征在于,进一步引起所述处理器从一个或多个安全规则判断对虚拟存储器的一个或多个页面的尝试访问是否指示恶意软件。45.如权利要求35所述的制品`,其特征在于,进一步引起所述处理器接收关于所述电子设备的操作系统中的一个或多个元素的信息,所述元素做出对所述资源的所述请求。46.如权利要求35所述的制品,其特征在于,进一步引起所述处理器确证操作系统安全代理的安全,所述操作安全代理被配置为收集关于所述电子设备的操作系统中的一个或多个元素的信息。47.如权利要求35所述的制品,其特征在于,进一步引起所述处理器:扫描所述电子设备的存储器;以及判断已知所述存储器的任何内容是恶意的还是安全的。48.一种制品,包括:计算机可读介质;以及在所述计算机可读介质上携带的计算机可执行指令,所述指令可由处理器读取,在被读取和被执行时,所述指令用于引起所述处理器在比访问所述资源的所述电子设备的所有操作系统较高的优先级,其中所述优先级由所述处理器定义:截取从具有较少的优先级的实体做出的对所述资源的请求;以及判断所述请求是否指示恶意软件。49.一种制品,包括:计算机可读介质;以及在所述计算机可读介质上携带的计算机可执行指令,所述指令可由处理器读取,在被读取和被执行时,所述指令用于引起所述处理器在比访问资源的所述电子设备的所有操作系统具有更多特权的执行环上:截取对所述资源的请求,从具有较少特权的执行环做出所述请求;以及判断所述请求是否指示恶意软件。50.一种用于保护电子设备的系统,包括:非易失性存储器;耦合到所述非易失性存储器的处理器;所述电子设备的资源;驻留在所述非易失性存储器中且由所述处理器执行的固件,所述固件通信上耦合到电子设备的资源;以及驻留在所述固件中的固件安全代理,所述固件安全代理被配置为在低于访问所述资源的所述电子设备的所有操作系统的级别:截取对所述资源的请求;以及判断所述请求是否指示恶意软件。51.如权利要求50所述的系统,其特征在于,所述固件驻留在所述电子设备的外围设备的控制器中。52.如权利要求50所述的系统,其特征在于,所述资源包括所述电子设备的输入/输出组件。53.如权利要求50所述的系统,其特征在于,所述资源包括键盘。54.如权利要求50所述的系统,其特征在于,所述资源包括显示设备。55.如权利要求50所述的系统,其特征在于,所述资源包括盘。56.如权利要求50所述的系统,其特征在于,所述请求包括输入或输出命令。57.如权利要求56所述的系统,其特征在于,判断所述请求是否指示恶意软件包括评估所述输入或输出命令的值是否指示恶意软件。58.如权利要求50所述的系统,进一步包括:包括所述存储器和处理器的输入和/或输出(I/O)设备,所述I/O设备通信上耦合到所述电子设备的操作系统;通信上耦合到所述固件安全代理的安全代理,其中:配置所述固件安全代理以便判断所述请求是否指示恶意软件包括配置所述固件安全代理以便向所述安全代理发送信息,所述信息包括所述请求;以及所述安全代理被配置为访问一个或多个安全规则以便判断所述信息是否指示恶意软件。59.如权利要求58所述的系统,其特征在于,所述安全代理在所述电子设备的裸机层内操作。60.如权利要求58所述的系统,进一步包括在所述操作系统中运行且通信上耦合到所述安全代理的操作系统安全代理,其中,所述安全代理被配置为向安全代理提供信息,所述信息涉及做出对所述资源的所述请求的所述操作系统中的一个或多个元素。61.如权利要求58所述的系统,其特征在于,所述固件安全代理被配置为确证所述安全代理。62.如权利要求58所述的系统,其特征在于,所述安全代理被配置为:在低于访问所述资源的所述电子设备的所有操作系统的级别执行;以及从高于所述安全代理的级别接收所述请求。63.如权利要求58所述的系统,其特征在于,所述安全代理被配置为:在比访问所述资源的所述电子设备的所有操作系统较高的优先级执行,这样的优先级由所述处理器定义;以及从具有比所述安全代理较少的优先级的实体接收所述请求。64.如权利要求58所述的系统,其特征在于,所述安全代理被配置为:在比访问所述资源的所述电子设备的所有操作系统具有更多特权的执行环上执行;以及从比所述安全代理具有较少特权的执行环接收所述请求。65.一种用于保护电子设备的方法,包括:在通信上耦合到资源的固件中,所述资源被耦合到所述电子设备且所述固件驻留在非易失性存储器中,在低于访问所述资源的所述电子设备的所有操作系统的级别截取对所述资源的请求;查询一个或多个安全规则;以及基于所述一个或多个安全规则,判断所述请求是否指示恶意软件。66.如权利要求65所述的方法,其特征在于,判断所述请求是否指示恶意软件包括:向保护服务器发送关于所述请求的信息;以及从所述保护服务器接收关于所述请求的判断。67.如权利要求65所述的方法,其特征在于,在驻留在所述电子设备的外围设备的控制器中的固件中截取所述请求。68.如权利要求65所述的方法,其特征在于,所述资源包括所述电子设备的输入/输出组件。69.如权利要求65所述的方法,其特征在于,所述资源包括键盘。70.如权利要求65所述的方法,其特征在于,所述资源包括显示设备。71.如权利要求65所述的方法,其特征在于,所述资源包括盘。72.如权利要求65所述的方法,其特征在于,所述请求包括输入或输出命令。73.如权利要求65所述的方法,进一步包括与安全代理通信以便接收一个或多个安全规则。74.如权利要求73所述的方法,进一步包括:在输入和/或输出(I/O)设备的固件中截取所述请求;其中,判断所述请求是否指示恶意软件包括:向所述安全代理发送信息,所述信息包括所述请求;以及从所述安全代理访问一个或多个安全规则以便判断所述请求是否指示恶意软件。75.如权利要求73所述的方法,其特征在于,在所述电子设备的裸机层内完成从所述安全代理访问一个或多个安全规则。76.如权利要求73所述的方法,进一步包括:与在所述电子设备的操作系统中运行的操作系统安全代理进行通信;以及接收关于做出对所述资源的所述请求的所述操作系统的一个或多个元素的信息。77.如权利要求73所述的方法,进一步包括确证所述安全代理。78.如权利要求73所述的方法:其中,所述安全代理在低于所述电子设备的所有操作方法的级别操作;以及进一步包括从高于所述安全代理的级别接收所述请求。79.如权利要求73所述的方法:其中,所述安全代理在比访问所述资源的所述电子设备的所有操作系统较高的优先级执行,这样的优先级由所述处理器定义;以及进一步包括从具有比所述安全代理较少的优先级的实体接收所述请求。80.如权利要求73所述的方法:其中,所述安全代理在比访问所述资源的所述电子设备的所有操作系统具有更多特权的执行环上执行;以及进一步包括从比所述安全代理具有较少特权的执行环接收所述请求。81.一种制品,包括:计算机可读介质;以及在所述计算机可读介质上携带的计算机可执行指令,所述指令可由处理器读取,在被读取和被执行时,所述指令用于引起所述处理器:在通信上耦合到资源的固件中,所述资源被耦合到所述电子设备且所述固件驻留在非易失性存储器中,在低于访问所述资源的所述电子设备的所有操作系统的级别截取对所述资源的请求;查阅一个或多个安全规则;以及基于所述一个或多个安全规则,判断所述请求是否指示恶意软件。82.如权利要求81所述的制品,其特征在于,进一步引起所述处理器在驻留在所述电子设备的外围设备的控制器中的固件中截取所述请求。83.如权利要求81所述的制品,其特征在于,所述资源包括所述电子设备的输入/输出组件。84.如权利要求81所述的制品,其特征在于,所述资源包括键盘。85.如权利要求81所述的制品,其特征在于,所述资源包括显示设备。86.如权利要求81所述的制品,其特征在于,所述资源包括盘。87.如权利要求81所述的制品,其特征在于,所述请求包括输入或输出命令。88.如权利要求81所述的制品,进一步包括引起所述处理器与安全代理通信以便接收一个或多个安全规则。89.如权利要求88所述的制品,进一步包括引起所述处理器:在输入和/或输出(I/O)设备的固件中截取所述请求;其中,判断所述请求是否指示恶意软件包括引起所述处理器:向所述安全代理发送信息,所述信息包括所述请求;以及从所述安全代理访问一个或多个安全规则以便判断所述请求是否指示恶意软件。90.如权利要求88所述的制品,其特征在于,在所述电子设备的裸机层内完成从所述安全代理访问一个或多个安全规则。91.如权利要求88所述的制品,其特征在于,进一步引起所述处理器:与在所述电子设备的操作系统中运行的操作系统安全代理进行通信;以及接收关于做出对所述资源的所述请求的所述操作系统中的一个或多个元素的信息。92.如权利要求88所述的制品,其特征在于,进一步引起所述处理器确证所述安全代理。93.如权利要求88所述的制品,其特征在于:所述安全代理被配置为在低于所述电子设备的所有操作项目的级别执行;以及进一步引起所述处理器从高于所述安全代理的级别接收所述请求。94.如权利要求88所述的制品,其特征在于:所述安全代理被配置为在比访问所述资源的所述电子设备的所有操作系统较高的优先级执行,这样的优先级由所述处理器定义;以及进一步引起所述处理器从具有比所述安全代理较少的优先级的实体接收所述请求。95.如权利要求88所述的制品,其特征在于:所述安全代理被配置为在比访问所述资源的所述电子设备的所有操作系统具有更多特权的执行环上执行;以及进一步引起所述处理器从比所述安全代理具有较少特权的执行环接收所述请求。96.—种用于保护电子设备的系统,包括:包括微代码的处理器;耦合到所述处理器的资源;由所述微代码实现的微代码安全代理,所述微代码安全代理被配置为:`截取通信,所述通信包括所做出的对所述资源或从所述资源产生的信息的请求;以及判断所述通信是否指示恶意软件。97.如权利要求96所述的系统,其特征在于,所述资源包括物理存储器。98.如权利要求96所述的系统,其特征在于,所述资源包括处理器标志。99.如权利要求96所述的系统,其特征在于,所述资源包括处理器异常。100.如权利要求96所述的系统,其特征在于,所述资源包括寄存器。101.如权利要求96所述的系统,其特征在于,所述资源包括处理器中断。102.如权利要求96所述的系统,其特征在于:所述通信包括处理器指令;以及判断所述通信是否指示恶意软件包括评估所述处理器指令是否指示恶意软件。103.如权利要求102所述的系统,其特征在于,判断所述通信是否指示恶意软件包括评估所述处理器指令的源地址是否指示恶意软件。104.如权利要求102所述的系统,其特征在于,判断所述通信是否指示恶意软件包括评估所述处理器指令的目标地址是否指示恶意软件。105.如权利要求102所述的系统,其特征在于,判断所述通信是否指示恶意软件包括评估所述处理器指令的操作数是否指示恶意软件。106.如权利要求96所述的系统,进一步包括:通信上耦合到所述微代码安全代理的操作系统下层安全代理,其中:配置所述微代码安全代理以便判断所述通信是否指示恶意软件包括:配置所述微代码安全代理以便向所述安全代理发送信息,所述信息包括所述通信;以及所述操作系统下层安全代理被配置为访问一个或多个安全规则以便判断所述信息是否指不恶意软件。107.如权利要求106所述的系统,其特征在于,所述操作系统下层安全代理被配置为在所述电子设备的裸机层内操作。108.如权利要求106所述的系统,进一步包括在所述系统的操作系统上运行且通信上耦合到所述操作系统下层安全代理的操作系统安全代理,其中,所述操作系统安全代理被配置为给所述安全代理提供关于与所述通信相关联的所述操作系统中的一个或多个元素的信息。109.如权利要求106所述的系统,其特征在于,所述微代码安全代理被配置为确证所述操作系统下层安全代理的安全。110.如权利要求106所述的系统,其特征在于:所述操作系统下层安全代理被配置为在低于访问所述资源的所述电子设备的所有操作系统的级别执行;以及所述通信具有高于所述操作系统下层安全代理的级别的源或目的地。111.如权利要求106所述的系统,其特征在于:所述操作系统下层安全代理在比访问所述资源的所述电子设备的所有操作系统较高的优先级执行,这样的优先级由所述处理器定义;以及所述通信具有带有比所述操作系统下层安全代理较少优先级的实体的源或目的地。112.如权利要求106所述的系统,其特征在于:所述操作系统下层安全代理在比访问所述资源的所述电子设备的所有操作系统具有更多特权的执行环上执行;以及所述通信具有比所述操作系统下层安全代理具有较少特权的执行环的源或目的地。113.一种用于保护电子设备的方法,包括:使用由处理器的微代码实现的微代码安全代理,截取包括对资源或从所述资源产生的信息做出的请求的通信,所述资源被耦合到所述处理器;查询一个或多个安全规则;以及基于所述一个或多个安全规则,判断所述通信是否指示恶意软件。114.如权利要求113所述的方法,其特征在于,所述资源包括物理存储器。115.如权利要求113所述的方法,其特征在于,所述资源包括处理器标志。116.如权利要求113所述的方法,其特征在于,所述资源包括处理器异常。117.如权利要求113所述的方法,其特征在于,所述资源包括寄存器。118.如权利要求113所述的方法,其特征在于,所述资源包括处理器中断。119.如权利要求113所述的方法,其特征在于:所述通信包括处理器指令;以及判断所述通信是否指示恶意软件包括评估所述处理器指令是否指示恶意软件。120.如权利要求119所述的方法,其特征在于,判断所述通信是否指示恶意软件包括评估所述处理器指令的源地址是否指示恶意软件。121.如权利要求119所述的方法,其特征在于,判断所述通信是否指示恶意软件包括评估所述处理器指令的目标地址是否指示恶意软件。122.如权利要求119所述的方法,其特征在于,判断所述通信是否指示恶意软件包括评估所述处理器指令的操作数是否指示恶意软件。123.如权利要求119所述的方法,其特征在于,判断所述通信是否指示恶意软件包括向操作系统下层安全代理发送信息,所述信息包括所述通信,所述安全代理被配置为访问一个或多个安全规则以便判断所述信息是否指示恶意软件。124.如权利要求123所述的方法,其特征在于,所述长角(longhorn)安全代理被配置为在所述电子设备的裸机层内操作。125.如权利要求123所述的方法,进一步包括:与在所述电子设备的操作系统中运行的操作系统安全代理进行通信;以及接收关于与和所述资源的通信相关联的所述操作系统中的一个或多个元素的信息。126.如权利要求123所述的方法,进一步包括确证所述操作系统下层安全代理的实例。127.如权利要求123所述的方法,其特征在于:所述操作系统下层安全代理被配置为在低于所述电子设备的所有操作方法的级别执行;以及从高于所述操作系统下层安全代理的级别做出所述请求。128.如权利要求123所述的方法,其特征在于:所述操作系统下层安全代理被配置为在比访问所述资源的所述电子设备的所有操作系统较高的优先级执行,这样的优先级由所述处理器定义;以及从具有比所述操作系统下层安全代理较少的优先级的实体做出所述请求。129.如权利要求123所述的方法,其特征在于:所述操作系统下层安全代理被配置为在比访问所述资源的所述电子设备的所有操作系统具有更多特权的执行环上执行;以及从比所述操作系统下层安全代理具有较少特权的执行环做出所述请求。130.一种制品,包括:计算机可读介质;以及以在所述计算机可读介质上携带的指令实现的计算机可执行的微代码,所述指令可由处理器读取,在被读取和被执行时,所述指令用于引起所述处理器:使用所述微代码指令,截取通信,所述通信包括对资源或从所述资源产生的信息做出的请求,所述资源被耦合到所述处理器;查阅一个或多个安全规则;以及基于所述一个或多个安全规则,判断所述通信是否指示恶意软件。131.如权利要求130所述的制品,其特征在于,所述资源包括物理存储器。132.如权利要求130所述的制品,其特征在于,所述资源包括处理器标志。133.如权利要求130所述的制品,其特征在于,所述资源包括物理存储器。134.如权利要求130所述的制品,其特征在于,所述资源包括处理器异常。135.如权利要求130所述的制品,其特征在于,所述资源包括寄存器。136.如权利要求130所述的制品,其特征在于,所述资源包括处理器中断。137.如权利要求130所述的制品,其特征在于:所述通信包括处理器指令;以及判断所述通信是否指示恶意软件包括引起所述处理器评估所述处理器指令是否指示恶意软件。138.如权利要求130所述的制品,其特征在于,判断所述通信是否指示恶意软件包括引起所述处理器评估所述处理器指令的源地址是否指示恶意软件。139.如权利要求130所述的制品,其特征在于,判断所述通信是否指示恶意软件包括引起所述处理器评估所述处理器指令的目标地址是否指示恶意软件。140.如权利要求130所述的制品,其特征在于,判断所述通信是否指示恶意软件包括引起所述处理器评估所述处理器指令的操作数是否指示恶意软件。141.如权利要求130所述的制品,其特征在于,判断所述通信是否指示恶意软件包括引起所述处理器向操作系统下层安全代理发送信息,所述信息包括所述通信,所述操作系统下层安全代理被配置为访问一个或多个安全规则以便判断所述信息是否指示恶意软件。142.如权利要求141所述的制品,进一步包括引起所述处理器确证所述操作系统下层安全代理的实例。143.如权利要求141所述的制品,其特征在于:所述操作系统下层安全代理被配置为在低于所述电子设备的所有操作方法的级别执行;以及从高于所述操作系统下层安全代理的级别做出所述请求。144.如权利要求141所述的制品,其特征在于:所述操作系统下层安全代理被配置为在比访问所述资源的所述电子设备的所有操作系统较高的优先级执行,这样的优先级由所述处理器定义;以及从具有比所述操作系统下层安全代理较少的优先级的实体做出所述请求。145.如权利要求141所述的制品,其特征在于:所述操作系统下层安全代理被配置为在比访问所述资源的所述电子设备的所有操作系统具有更多特权的执行环上执行;以及从比所述操作系统下层安全代理具有较少特权的执行环做出所述请求。【文档编号】G06F21/52GK103620613SQ201280016726【公开日】2014年3月5日申请日期:2012年3月27日优先权日:2011年3月28日【发明者】A·S·萨兰申请人:迈克菲股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1