用于检测感兴趣指令序列的系统和方法与流程

文档序号:11211637阅读:281来源:国知局
用于检测感兴趣指令序列的系统和方法与流程

本公开一般涉及数字安全领域,并且更具体地涉及检测一个或多个指令序列中的感兴趣活动,包括检测恶意活动。



背景技术:

计算技术的激增在数字安全领域提出了挑战。众所周知,电子设备(例如,在企业平台上操作的计算机)可以包括恶意计算机数据和/或将恶意计算机数据散播到其他电子设备。这可能导致,例如,实质性的系统中断和经济损失。本领域普通技术人员将理解,基于恶意计算机数据的攻击包括计算机病毒、恶意软件、蠕虫、特洛伊木马程序、自动运行型木马(bots)、入侵(例如,未授权访问)、漏洞利用(例如特权升级、违反机密性)、基于时间的攻击(例如,拒绝服务)或诸如此类的。术语“威胁”用于描述这些类型的攻击中的一种或多种。

传统的数字安全技术可以用于检测和/或移除在电子设备上所存储的和/或执行的恶意计算机数据。这样的数字安全技术可以包括“反病毒软件”,“恶意软件检测”,“入侵防御”,“防攻击”,防火墙等,尽管这些术语在含义上不相同。术语“统一威胁管理”(“utm”)已经用于描述数字安全技术的这些实现中的一种或多种。

传统的数字安全技术通常使用对应于特定威胁的签名来检测威胁。这种模式下的现有设计至少有两种方式存在缺陷。首先,威胁的检测依赖于特定威胁的先验知识和针对特定威胁的签名的可用性。也就是说,传统的数字安全技术依赖已知的签名来检测已知计算机病毒的存在,并且因此,传统的数字安全技术通常不能检测签名尚不可用或未知的威胁。例如,常规的数字安全技术可能无法检测已知计算机病毒的未知变化。

其次,由于已知威胁的数量不断增加,常规数字安全技术维护越来越多的签名。当进程在电子设备上执行时,维持的签名与程序映像进行比较以识别可能的威胁。在许多情况下,以这种方式比较签名和程序映像使用大量的计算资源。在消费者计算机的上下文中,即使是偶然的计算机用户也不应惊讶,反病毒软件的操作会导致计算机变得迟钝。

尽管在该领域有所改进,但是常规数字安全技术继续受到这些缺陷的限制,这些缺陷是其设计的后果。

发明概述

一种用于检测感兴趣的指令序列的示例方法包括在具有一个或多个处理器的电子设备处识别在电子设备上执行的进程。所述方法还包括使用所述一个或多个处理器获得所述进程的虚拟地址空间的表示。在一些实施例中,表示指示要由电子设备的一个或多个处理器执行的一个或多个指令序列。该方法还包括使用所述一个或多个处理器基于所述表示来生成数据段。在一些实施例中,数据段包括多个整数。该方法还包括使用一个或多个处理器确定包括多个有序整数的元表达式是否出现在数据段中。在一些实施例中,元表达式对应于感兴趣的指令序列。该方法还包括,如果元表达式出现在数据段中,则启动操作。

附图说明

图1描述了根据本发明实施方案的虚拟地址空间。

图2描绘了根据本发明的实施方案的用于检测感兴趣的指令序列的示例性的过程。

图3描绘了根据本发明的实施方案的用于训练统一威胁管理系统(utms)的过程。

图4描绘了根据本发明的实施方案的用于实现距离函数的示例性的过程。

图5(a)-(f)描绘根据本发明的实施方案的示例性整数序列。

图6(a)-(c)描绘了根据本发明实施方案的示例性整数序列。

图7描绘了根据本发明的实施方案的示例性整数序列。

图8描绘了根据本发明的实施方案的示例性整数序列。

图9描绘了根据本发明的实施方案的用于检测感兴趣的指令序列的示例性的计算系统。

发明详述

呈现以下描述以使所属领域的技术人员能够制作和使用各种实施方案。具体设备、技术和应用的描述仅作为示例提供。对本文描述的示例的各种修改对于本领域普通技术人员将是显而易见的,并且在不脱离各种实施方案的精神和范围的情况下,本文定义的一般原理可以应用于其他示例和应用。因此,各种实施方案不旨在限于本文所描述和示出的示例,而是符合与权利要求一致的范围。

本文所述的实施方案包括用于检测感兴趣的指令序列的技术。示例性的感兴趣的指令序列包括但不限于对应于计算机病毒、恶意软件、蠕虫、特洛伊木马、bots、入侵(例如,未授权访问)、漏斗利用(例如特权升级,违反机密性)、基于定时的攻击(例如,拒绝服务)或诸如此类的。

1.概述

本发明的实施例针对虚拟地址空间。通常,虚拟地址空间是例如由操作系统对进程可用的一组(例如,一个或多个)地址(例如,虚拟地址)范围。在电子设备上执行的每个进程被分配相应的虚拟地址空间。参考图1,虚拟地址空间包括多个分区:内核空间102和用户空间。内核空间102为内核保留,为了简洁起见不再进一步讨论。用户空间被进一步分割成段,包括执行堆栈104、堆106、存储器映射段108(包括动态链接)、bss段110(例如,用于存储未在源代码中初始化的变量或其指针)、数据段112(例如,用于存储在源代码初始化的变量或其指针)和代码段114(例如,用于存储程序映像或其指针)。

在操作中,执行堆栈104存储临时变量和函数参数。当函数被调用时,堆栈帧被推送到执行堆栈104上,同时函数执行,并且当函数返回时帧弹出(例如,移除)。以这种方式,执行堆栈104用作执行各种操作的后进先出(lifo)机制。指针用于在操作期间跟踪堆栈的“顶部”,并且堆栈的大小通常在大小上是固定的。另一方面,堆106存储变量,但跨多个函数调用仍然存在,使得存储的变量可以由进程全局地访问。可以使用各种分配函数(例如,malloc(),calloc())来调整堆的大小。存储器映射段108包括用于在操作期间根据需要访问一个或多个库(例如,dll)的一个或多个动态链接。

图2示出了用于检测感兴趣的指令序列的示例性的过程200。为了本公开的目的,术语“统一威胁管理系统”(utms)用于描述执行过程200的计算机安全技术,而不管这些技术是以软件形式(例如,作为软件包)还是以硬件形式(例如,专用电路或设备)来提供。在过程200内,块210可以被称为训练过程,而块220-240可以被统称为运行时过程。

在框210,训练utms以识别一个或多个感兴趣的指令序列。作为示例,可以向utms提供对应于特定的已知威胁的进程的虚拟地址空间的表示。该表示可以例如包括或指示与已知威胁相对应的指令。在一些实施例中,使用被配置为在进程的执行期间捕获表示的应用(诸如堆栈跟踪函数)来获得表示。该表示可以指示要由电子设备的一个或多个处理器执行的一个或多个指令序列。此外,表示可以指示与进程的任何数量的线程相关联的指令序列和/或进一步可以与被配置用于多线程操作(例如,超线程)的指令序列相关联。任何已知的数据结构可以用于实现所述表示,包括但不限于表、链表或其组合,并且在一些实施例中,可以响应于上下文切换而获得任何已知的数据结构,例如到与虚拟地址空间相关联的进程。

在训练期间,utms从训练表示识别可以随后用于在另一未知的操作集中识别相同的感兴趣指令序列的存在的指令序列和/或数据(例如,与指令序列相关联的数据)。此外,通过在框210处的处理,utms还变得能够识别与先前在训练指令中提供的威胁相关的威胁(即,变体)的存在。

在框220处,utms监视虚拟地址空间以确定(训练的和相关的)感兴趣的指令序列是否存在于虚拟地址空间中。例如,utms可以监视虚拟地址空间以确定对应于虚拟地址空间的进程是否意图执行与恶意活动相关联的指令。以这种方式监视虚拟地址空间可以例如包括监视虚拟地址空间的执行堆栈、虚拟地址空间的堆、存储器映射段和/或虚拟地址空间的任何其他部分。在一些实施例中,utms可以监视一个或多个附加虚拟地址空间的部分,例如通过一个或多个动态链接链接到虚拟地址空间的附加虚拟地址空间。

在决策框230处,utms确定所监视的虚拟地址空间是正常还是异常。异常虚拟地址空间是其中utms已经识别了一个或多个感兴趣的指令序列的虚拟地址空间。如果发现异常指令序列,则处理进行到框240,其中utms提供(例如,生成)一个或多个适当的响应。提供适当的响应可以包括向用户或系统提供警报和/或可以包括终止与虚拟地址空间相关联的进程的一个或多个线程。在另一实施例中,提供适当的响应可以包括终止与虚拟地址空间相关联的进程的所有线程。在又一实施例中,提供适当的响应可以包括终止多个进程中的每一个的至少一个线程。在一些实施例中,utms可以指示os内核终止线程和/或进程。在其他实施例中,utms可以包括与该进程链接的动态链接库,并且可以直接终止线程和/或进程。如果没有发现异常指令序列,则处理返回到块220,并且utms监视例如虚拟地址空间的另一个虚拟地址空间。如所描述的,utms可以响应于上下文切换而监视虚拟地址空间。以这种方式,utms可以监视(例如,顺序地监视)在电子设备上执行的任何数量的进程。

在下面的讨论中,为了简单起见,将计算机病毒的威胁用作示例性的感兴趣的指令序列。然而,过程200(图1)在一些实施例中不限于此。而是,如上所述,过程200可以由utms用于管理许多其它种类的感兴趣的指令序列。巧合地,计算机病毒的(示例性)讨论以包括本领域普通技术人员的许多计算机用户可理解的方式突出了过程200的实质性的优点。

目前,已知存在超过200万个计算机病毒。确切的计数在250万和800万之间变化,因为不同的权力来源不同地编目计算机病毒。在过程200的框210处,可以向utms提供反映与一个或多个已知计算机病毒相关联的一个或多个攻击的指令序列。在框210完成时,utms被训练成在虚拟地址空间中检测这些一个或多个计算机病毒以及它们各自的变体的存在。在框220-240处,utms监视虚拟地址空间中那些一个或多个计算机病毒及其变体的存在。以这种方式,utms能够管理基于已知威胁及其未知变体的攻击。

过程200以至少两种方式是值得注意的。首先,框210产生可用于检测所有已知计算机病毒及其各自变体的有界数据序列。因此,为了在操作期间检测虚拟地址空间中的计算机病毒,utms使用过程200不一定需要依赖于特定计算机病毒的先验知识。第二,当与由常规计算机反病毒技术使用的已知计算机病毒签名文件相比时,在框210提供的有界数据序列在结构和大小上是高效的。具体地,已经确定,使用过程200,总计小于200(8位)字节的有界数据序列足以识别目前已知存在的大多数(如果不是全部)计算机病毒。该大小与常规计算机病毒签名文件的大小(其通常大小在从50兆字节(mb)到300mb的范围内)形成鲜明对比。换言之,50mb的大小比200(8位)字节的大小大5个数量级。因此,在utms使用过程200的操作期间可以实现巨大的计算效率。

2.训练

图3示出了用于训练utms的示例性的过程300。过程300可以例如用于实现框210(图1)。在框310处,识别进程,并获得进程的虚拟地址空间的表示。该表示可以例如使用任何数量的函数来获得,包括但不限于堆栈跟踪函数等。如所描述的,该表示可以包括或指示过程的指令序列。“指令”的概念在本领域中是公知的,在此不详细描述。术语“指令”可以包括一个或多个指令集中的指令,诸如x86处理器的指令集。

在一些实施例中,在框310获得的表示包括(或指示)用于训练utms的目的的感兴趣的指令序列。在本实施例中,感兴趣的指令序列是在进程的虚拟地址空间中与计算机病毒相关联的指令的存在。因此,提供给框310的指令可以指示使用计算机病毒对电子设备的攻击。

可选地,在一些实施例中,还获得附加虚拟地址空间的表示。附加虚拟地址空间可以例如是通过一个或多个动态链接与虚拟地址空间相关联的附加虚拟地址空间。虽然本文中相对于单个虚拟地址空间的表示来描述操作,但是应当理解,所描述的示例类似地适用于多个虚拟地址空间的表示的分析。以这种方式,可以在不包含在单个虚拟地址空间内,而是被包括在多个虚拟地址空间中,调用虚拟地址空间或以其他方式与多个虚拟地址空间相关联的指令序列上训练utms。

在一些实施例中,仅指令序列的特定部分与检测感兴趣的指令序列相关。因此,在框320处,保留指令序列的相关部分,并且丢弃无关信息。作为实施例,与一个或多个执行堆栈、堆、存储器映射段或虚拟地址空间的任何其它部分中的一个或多个相关联的一条或多条指令可以被丢弃。另外或替代地,指令的部分可被丢弃。作为实施例,操作数和/或指针可以被丢弃。作为另一实施例,可以丢弃特定类型的指令。例如,操作码可以用于识别一条或多条指令的类型,并且可以丢弃具有特定类型的操作码(例如,nop)的指令。块320的输出被称为“相关指令序列”。

在框330处,将来自框320的相关指令序列按位转换成整数,从而产生一个或多个数据片段。每个数据段可以包括对应于在块310处所获得的信息的子集的整数序列。在一个实施方案中,使用8位整数。跨越小于8位的指令通过将零填充到最高有效输出位而转换为8位表示。例如,块320可以将位“100”转换为“00000100”。跨越8位以上的操作的指令被转换为多个8位段。例如,块320将位“0001001001001000”转换为“00010010”和“01001000”。

如本文所使用的,术语“序列”描述有序元素列表。应当理解,在框330处提供的整数序列内的元素的排序是从在框310-320处处理的指令序列的相关部分的排序和相邻关系而导出的。换句话说,就感兴趣的指令序列在进程的执行中产生特性响应而言,通过框310-330的实现来捕获该响应。在下面讨论的框340-360的实现中进一步提炼该响应,使得该响应变得可用于检测未知指令序列集中的感兴趣的指令序列。

在框340处,使用距离函数来识别由框330所产生的整数序列的特性。在一些实施例中,通过比较不同指令和/或指令序列的整数序列来执行距离函数。作为实施例,将由块330(基于来自块320的第一组指令)产生的整数序列与由块330(基于来自块320的下一组相邻的指令)产生的下一个相邻的整数序列进行比较。

传统的距离函数,例如字符串距离函数,在本领域中是公知的,在此不再详细讨论。作为实施例,常规字符串距离函数可以用于确定字符串“abc”和“zbc”具有1的距离,因为字符串变化只是因为前者中的“a”被替换为后者的“z”,并表示两个字符串之间的唯一区别。由块310产生的指令序列有助于通过距离函数进行比较,因为块330产生整数序列,其可以被距离函数被视为单个元素。然而,常规的字符串距离函数不提供足以检测感兴趣的指令序列的距离度量。例如,知道两个字符串相差1的距离为计算机病毒检测提供了很少有用的信息。

在一个实施方案中,框340执行产生支持感兴趣的指令序列检测的缩减的整数序列的定制距离函数(下面说明)。为了简单起见,参考图4和图5讨论块340的定制距离函数。图4示出了在一个实施方案中用于执行定制距离函数的示例性过程400。图9示出了在一个本实施方案中由示例性过程800处理的示例性的整数序列。

转向图4,在框410处,定制距离函数识别出现在由框340(图3)产生的整数序列的相邻对内的整数。图5a示出了整数510-519的示例性序列。图5b示出了示例性的整数“101”,其出现在至少成对的相邻整数序列510-511,511-512和512-513中。(注意,为简单起见,未示出整数序列514-519)。在框410处,定制距离函数还识别成对的相邻整数序列中的所识别整数的第一实例。图5c示出了在整数510-511,511-512和512-513的相邻序列中识别的第一实例“101”。

在框420处(图4),定制距离函数将一对相邻的整数序列中所识别整数的第一实例对齐。图5d示出了一对相邻的整数序列510-511,511-512和512-513中的第一实例“101”的对齐。

在框430处(图4),在一些条件下,可以为一对相邻的整数序列创建缩减的整数序列。如果一对相邻的整数序列组所共有的一个或多个整数满足两个条件,则创建缩减的整数序列(对于一对相邻的整数序列)。也就是说,如果一对相邻的序列组所共有的一个或多个整数:(i)以相同的顺序出现在该对相邻的整数序列中,以及(ii)具有在第一阈值距离内的在一对整数序列中的位置,则创建缩减的整数序列。在一个实施方案中,第一阈值距离是四。如果创建,则缩减的整数序列将包括满足上述(相对于一对相邻的整数序列)的要求(i)和(ii)的整数。

例如,参考图5e,当第一实例“101”在整数510和511的序列之间对齐时,整数“48”和“52”满足上述要求(i)和(ii)。具体地,整数“101”,“48”和“52”在整数510和511的两个序列中以相同的顺序出现。此外,整数“48”出现在第一阈值距离(在本实施方案中为四)内的整数510和511的两个序列中。因此,如图5f中所示,创建缩减的整数序列520,并且包括整数“1014852”的序列。也如图5f所示,整数511和512的序列中的整数“101”,“48”和“52”也满足上述要求(i)和(ii)。因此,创建缩减的整数序列521,并且包括整数序列“1014852”。也如图5f所示,整数序列512和513中的整数“53”和“101”也满足上述要求(i)和(ii)。因此,创建缩减的整数序列522,并且包括整数序列“53101”。

对于出现在至少一对相邻的整数序列中的其它整数,重复块410-430。例如,整数“48”也出现在整数序列510-519中的至少一对相邻的整数序列中。因此,对于4位整数“48”重复块410-430。

在框430(在一些实施例中是在图3的框340中执行的示例性字符串函数)的完成时,处理前进到框350(图3)。在框350处,确定在框330处创建的整数序列中缩减的整数序列出现在第二阈值距离内的频率。第一和第二阈值距离可以相同或可以不同。在一个实施方案中,第二阈值距离是四。图6a示出了由框330创建的整数510-519的示例性的序列。另外,图6b示出了在整数序列510-519内的缩减整数序列520-522(图5f)的出现。如图所示,在十个整数序列510-519中的八个中出现缩减整数序列520(“1014852”)(在示例性的第二阈值距离四内)。因此,40%的频率与缩减的整数序列520相关联。由于相同的原因,40%的频率与缩减的整数序列521相关联。注意,缩减的整数序列520和521不出现在整数序列516中的第二阈值距离内(在该实施例中为四),因为整数“101”和“48”在整数序列516中被多于四个位置分隔开。还如图所示,缩减整数序列522(“53”101“)在十个整数序列510-519中的三个中出现(在示例性的第二阈值距离四内)。因此,30%的频率与缩减的整数序列522相关联。与缩减的整数序列520-521相关联的频率示于图6b中。这些值指示缩减的整数序列在整数序列中顺序地出现在阈值距离内的频率,这可以由术语“置信度值”来表示。

在框360处(图3),丢弃具有低于阈值置信度值的置信度值的缩减的整数序列。在一个实施方案中,阈值置信度值在40-50%之间。图6c示出了丢弃缩减的整数序列522。另外,缩减的整数序列520和521(其相同)被去重复并且保持为缩减的整数序列630。为了本公开的目的,每个缩减的整数序列630可以被称为“元表达式”。

元表达式630表示足以检测虚拟地址空间内的感兴趣的指令活动的信息。具体地,元表达式630足以检测由到过程300(图3)的初始输入表示的指令序列。需要注意,过程300(图3)的输入是与攻击相关联的一组指令,例如使用计算机病毒的攻击。

可以针对其他类型的感兴趣的指令序列重复过程300(图3)。例如,可以使用指示计算机蠕虫a的攻击的指令序列来执行过程300以识别用于检测计算机蠕虫a和计算机蠕虫a的变体的元表达式。可以使用指示计算机漏洞利用b的攻击的指令序列来再次执行过程300,以识别用于检测计算机漏洞利用b及其变体的元表达式。实际上,可以针对已知存在的不同的计算机病毒、恶意软件、蠕虫、特洛伊木马、bots、入侵(例如,未授权访问)、漏洞利用(例如特权升级,违反机密性)、基于时间的攻击(例如,拒绝服务)等等重复过程300,以便确定可用于识别恶意指令以及它们各自的变体的元表达式。

重要的是,已经确定许多不同的恶意指令序列共享相同的元表达式。也就是说,两个不同的感兴趣的指令序列(诸如已知的计算机病毒a和已知的计算机病毒b)可以共享相同的元表达,并且因此可以使用单个元表达式来检测。此外,例如,从现有计算机病毒生成的元表达式可以用于检测现有计算机病毒的所有变体,而不管变体的排列、大小或特性(即,即使变体是未知的)。现有的元表达式不会检测到全新类型的计算机病毒,也不会检测到现有计算机病毒的变体。以这种方式,少数元表达式足以识别许多(如果不是全部)已知的计算机病毒(其数量在2.5到4百万之间,取决于权限的来源)以及它们各自的变体。

图7示出了9个示例性的元表达式700-712。元表达式700-712总共跨越小于200(8位)字节,并且可以用于检测如上所述的现有计算机病毒的所有变体。该大小与抗病毒签名的典型数据库的大小(其大约为50mb或更大的数量级)形成鲜明对比。与常规计算机安全技术相比,这些元表达式的结构和最小尺寸提供了巨大的计算效率。

3.运行时

现在讨论可以使用由过程300提供的元表达式来检测感兴趣的指令序列的效率。在过程300(其是在图1的框210处执行的示例性的utms训练过程)完成时,处理进行到图1的框220。在框220处,utms利用元表达式来分析虚拟地址空间,并检测虚拟地址空间是正常还是异常。框220处的处理开始于获得虚拟地址空间的表示。为此目的,可以使用框310(图3)的技术。如所描述的,可以例如使用堆栈跟踪函数来获得该表示。接下来,对该表示的指令序列进行相关信息的过滤。为此目的,可以使用框320(图3)的技术。接下来,将相关指令序列转换为整数序列。在一些实施例中,在运行时期间使用的整数的位大小与在训练期间使用的整数的位大小相同。在一个实施方案中,整数的大小为4位。在另一个实施方案中,整数的大小为8位。为了将相关指令序列转换为整数序列,可以使用框330(图3)的技术。需要注意,在一些实施例中,utms可以进一步分析附加的虚拟地址空间以确定虚拟地址空间是正常还是异常。因此,框310、320和330的技术可以同时应用于多个虚拟地址空间。

将框330所产生的整数序列与一个或多个元表达式进行比较,以确定所分析的虚拟地址空间是正常还是异常。当满足如下两个标准时,所分析的虚拟地址空间被认为是“异常的”:(i)元表达式中的每个整数存在于于虚拟地址空间对应的整数序列中,以及(ii)整数序列以相同的顺序出现在相应的整数序列和元表达式中。值得注意的是,如果条件(i)不成立,则虚拟地址空间被认为是正常的。(条件(ii)的不成立不太有用,因为整数序列可以具有特定整数的多个实例,并且为使条件(ii)作为整体不成立所有实例必须都使条件(ii)不成立。)

当检测到异常业务时,utms在判决框230之后进行到框240,在框240中生成一个或多个适当的响应。当检测到正常的虚拟地址空间时,utms返回到框220并且分析一个或多个其他进程和/或随后的相同进程的附加虚拟地址空间。参考图8讨论块210-230。图8示出了整数800-809和示例性的元表达式810的示例性的序列。元表达式810可以是在训练(图1的框210)期间提供(例如,生成)的元表达式之一。为了简化,元表达式810的长度被缩短。如图所示,序列801,802和809包含元表达式810的所有整数,其中顺序于整数出现在元表达式810中的顺序相同。因此,整数序列801,802和809与被认为是异常的虚拟地址空间相关联。整数800和803-808的序列不包含元表达式810的所有有序整数。因此,整数800和803-808的序列与被认为是正常的虚拟地址空间相关联。

从前面的讨论可以明显看出,在框220处,utms执行许多整数比较。因此,整数比较的优化对utms的效率是重要的。需要注意,在其中在对应于虚拟地址空间的整数序列中不存在元表达式中的整数的第一实例中,虚拟地址空间被认为是正常的。因此,如果可以进行早期“正常”确定,则提高utms的性能。为此,有利的是,构造块220的技术使得一旦来自元表达式的一个整数被识别为不存在于整数序列中,则整数序列和元表达式之间的整数比较终止。

在一个实施方案中,框220采用嵌套计算机编程语言表达式,当嵌套级别中的任何一个返回“假”条件时,其返回“不成立”的总值(例如,布尔值)。因此,一旦utms识别出一个整数(在任何一个嵌套级别处)的缺失,则整个嵌套计算机编程语言表达式的处理终止。因此,相应的虚拟地址空间被识别为正常(在这种情况下,不需要额外的威胁检测),并且可以分析后续的虚拟地址空间。例如,lisp计算机编程语言允许以(((a)(b))(c))(d)的形式的嵌套表达式,如果表达式(a)、(b)、(c)和/或(d)为“假”,则其返回“不成立”的总值。在该实施例中,表达式(a)可以查询元表达式中的第一整数是否出现在整数序列中,并且表达式(b)可以查询元表达式中的第二整数是否出现在整数序列中,等等。

在框240处,可以生成适当的响应。一个适当的响应可以是指示感兴趣的指令序列的存在的用户或系统警报。另一适当的响应可以是终止与异常虚拟地址空间相关联的进程中的一个或多个线程。另一适当的响应可以包括终止多个进程中的每一个的至少一个线程。

过程200(图1)的部分可以实现在图9所示的示例性计算系统900中。在一些实施方案中,计算系统900是电子设备,包括但不限于路由器、网关、防火墙、移动设备、台式计算机、膝上型计算机、蜂窝电话、平板电脑或其任何组合。在一些实施方案中,计算系统900是专用微处理器,例如密码主处理器。值得注意的是,过程200的训练方面(即框210)和过程200的运行时方面(即框220-240)可以实现在相同或不同的计算系统上。

如图9所示,计算系统900包括具有将i/o区段904、一个或多个中央处理单元(cpu)906和存储器区段908连接在一起的总线910的计算机主板902。存储器区段908可以具有与其相关的存储器模块920。存储器模块920可以是例如非易失性存储器(例如,nand闪存,nor闪存)和/或易失性存储器,并且在一些实施例中还可以包括可移除存储器设备。i/o区段904连接到接收和/或发送网络分组的网络接口912。i/o区段904可以连接到显示器914、输入设备916和/或存储单元918。存储器区段908、存储器模块920和/或存储单元922可以存储(例如,有形地体现)计算机可读介质,其包含用于使用cpu906执行上述处理中的任何一个的计算机可执行指令和/或数据。计算机可执行指令可以例如以通用编程语言(例如,lisp,c)或用专门的应用程序特定语言来编写。输入设备916可以是支持来自usb兼容设备的输入的usb端口,诸如键盘、鼠标、记忆棒等。可以将基于上述处理的结果的至少一些值保存到诸如存储器908、存储器模块920和/或磁盘存储单元918的存储器中,以供随后使用。

过程200(图1)的部分还可以通过特别布置的集成电路(例如,专用集成电路)实现到处理器中。在一些实施方案中,集成电路可以是设备的主处理器的一部分,诸如蜂窝电话的主处理器。在一些实施方案中,集成电路可以是设备的辅助处理器的一部分,诸如连接到膝上型计算机的主板的处理器。集成电路可以包含用于执行上述处理中的任何一个的计算机可执行指令和/或数据。计算机可执行指令可以例如用专门的应用程序特定(例如,处理器特定)语言编写。

在一些实施方案中,总共小于1mb的基于c编程语言的计算机可执行指令足以执行过程200(图1)。这些计算机可执行指令的执行需要不超过300千字节(16位字节)的运行时存储器(例如,随机存取存储器)。现代计算系统和/或处理器能很好地处理这些大小的计算机可执行指令。

尽管上面仅详细描述了某些示例性实施方案,但是本领域技术人员将容易地理解,在实质上不脱离本公开的新颖教导和优点的情况下,可以对示例性实施方案进行许多修改。例如,上面公开的实施方案的方面可以在其他组合中组合以形成另外的实施方案。因此,所有这些修改旨在包括在本技术的范围内。

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