首页 / 专利库 / 电脑编程 / 计算机编程 / 数据处理系统以及用于操作数据处理系统的方法

数据处理系统以及用于操作数据处理系统的方法

阅读:580发布:2024-02-22

专利汇可以提供数据处理系统以及用于操作数据处理系统的方法专利检索,专利查询,专利分析的服务。并且一种 数据处理 系统(10)包括处理单元(12)、第一 存储器 (14)和第二存储器(16),其中所述 数据处理系统 (10)被布置为当执行对所述第一存储器(14)的写 访问 时 硬件 保护所述第二存储器(16),其中所述处理单元(12)被布置为执行具有至少一个跳转指令(20)和至少一个返回指令(22)的程序(18),其中所述处理单元(12)被布置为在所述第一存储器(14)中存储程序栈(24),其中所述处理单元(12)被布置为当执行所述至少一个跳转指令(20)时在所述程序栈(24)上存储返回地址(26)并且在所述第二存储器(16)中存储返回地址副本,以及其中所述处理单元(12)被布置为当执行所述至少一个返回指令(22)时将所述返回地址(26)与所述返回地址副本进行比较。,下面是数据处理系统以及用于操作数据处理系统的方法专利的具体信息内容。

1.一种数据处理系统(10),包括:
-处理单元(12):被布置为执行具有至少一个跳转指令(20)和至少一个返回指令(22)的程序(18),
-第一存储器(14),以及程序栈(24),
-第二存储器(16),
其中,所述数据处理系统(10)被布置为当执行对所述第一存储器(14)的写访问硬件保护所述第二存储器(16),
其中所述处理单元(12)
其中所述处理单元(12)被布置为:当执行所述至少一个跳转指令(20)时,在所述程序栈(24)上存储返回地址(26)并且在所述第二存储器(16)中存储返回地址副本,以及当执行所述至少一个返回指令(22)时,将所述返回地址(26)与所述返回地址副本进行比较。
2.根据权利要求1所述的数据处理系统,其中所述第二存储器(16)是内容可寻址存储器CAM。
3.根据权利要求1或权利要求2所述的数据处理系统,其中所述处理单元(12)被布置为在后进先出方案LIFO中存储所述返回地址副本。
4.根据前述权利要求中的一个所述的数据处理单元,其中所述处理单元(12)被布置为当完成所述返回指令(22)时删除所述返回地址副本。
5.根据前述权利要求中的一个所述的数据处理系统,其中所述处理单元(12)被布置为当所述返回地址(26)和所述返回地址副本不相同时产生异常消息(30)。
6.根据权利要求5所述的数据处理系统,其中所述处理单元(12)被布置为当所述处理单元(12)产生所述异常消息(30)时停止执行所述程序(18)。
7.根据权利要求5所述的数据处理系统,
其中所述处理单元(12)被布置为用所述返回地址副本替代所述返回地址(26),以及其中所述处理单元(12)被布置为当所述处理单元产生所述异常消息(30)时基于所述返回地址副本继续所述程序(18)。
8.根据权利要求5至7中的一个所述的数据处理系统,其中所述处理单元(12)被布置为当所述处理单元(12)产生所述异常消息(30)时产生日志文件。
9.根据前述权利要求中的一个所述的数据处理系统,其中所述处理单元(12)包括被布置为执行所述返回地址(26)与所述返回地址副本的比较的硬件逻辑单元(32)。
10.根据权利要求9所述的数据处理单元,其中所述硬件逻辑单元(32)被布置为当所述处理单元(12)执行所述返回指令(22)时执行所述比较,并且其中在完成所述比较的结果之前,所述处理单元(12)继续执行所述程序(18)。
11.一种用于操作数据处理系统的方法,所述系统包括
-处理单元(12),
-第一存储器(14),以及
-第二存储器(16),
当执行对所述第一硬件保护存储器(14)的写访问时,所述方法包括所述第二存储器(16),
由所述处理单元执行具有至少一个跳转指令(20)和至少一个返回指令(22)的程序(18),
由所述处理单元在所述第一存储器(14)中存储程序栈(24),
当执行所述至少一个跳转指令(20)时,由所述处理单元在所述程序栈(24)上存储返回地址(26)并且返回地址副本被存储在所述第二存储器(16)中,以及当执行所述至少一个返回指令(22)时,将所述返回地址(26)与所述返回地址副本进行比较。
12.根据权利要求11所述的方法,其中所述处理单元(12)在后进先出方案LIFO中存储所述返回地址副本。
13.根据权利要求11或12所述的方法,其中当完成所述返回指令(22)时,所述处理单元(12)删除所述返回地址副本。
14.根据权利要求11至13中的一个所述的方法,其中当所述返回地址(26)和所述返回地址副本不同时,所述处理单元(12)产生异常消息(30)。
15.根据权利要求14所述的方法,其中当所述处理单元(12)产生所述异常消息(30)时,所述处理单元停止执行所述程序(18)。
16.根据权利要求14所述的方法,
其中所述处理单元(12)用所述返回地址副本替代所述返回地址(26),以及其中当所述处理单元(12)产生所述异常消息(30)时,所述处理单元(12)基于所述返回地址副本继续所述程序(18)。
17.根据权利要求14至16中的一个所述的方法,其中当所述处理单元(12)产生所述异常消息(30)时,所述处理单元产生日志文件。
18.根据前述权利要求中的一个所述的方法,其中所述处理单元(12)包括当所述处理单元(12)执行所述返回指令(22)时执行所述比较的硬件逻辑单元(32),以及其中在完成所述比较的结果之前,所述处理单元(12)继续执行所述程序(18)。
19.一种计算机程序产品,包括当由可编程装置执行时执行根据权利要求11至18中的一个所述的方法的代码部分。

说明书全文

数据处理系统以及用于操作数据处理系统的方法

技术领域

[0001] 本发明涉及数据处理系统以及用于操作数据处理系统的方法。

背景技术

[0002] 现代数据处理系统通常以逻辑操作的序列的形式执行程序。在程序的执行期间,数据处理系统通常在连续的存储器区段中动态地存储变量和返回地址。所存储的返回地址与程序流程的控制有关。被用于存储变量和返回地址的连续的存储器区段被称为程序栈,因为在程序执行期间,该程序动态地在其中堆叠信息。
[0003] 变量和返回地址被在后进先出方案中混合存储。被存储在堆栈上的每一个变量和每一个返回地址有其自己的预定的存储器大小。将一些东西写到超过这个预定的存储器大小的变量的尝试可能导致相邻的存储器位置的重写,其被保留给不同的变量或返回地址。重写可能以意想不到的方式改变了堆栈的内容。具体地,重写可能改变被存储在堆栈上的返回地址。这可能导致严重的错误、改变程序流程并且可以被用于获得程序的控制,例如,用于执行任意的程序代码。重写在堆栈上所存储的返回地址被称为“摧毁堆栈攻击”。
[0004] 美国专利5,949,973示出了一种包括将整个堆栈重置到随机存储器位置的方法。原始堆栈区随后被擦除。美国专利6,941,473示出了一种在返回地址之前插入特殊的保护变量以保护返回地址的方法。保护变量被检查以证明所保护的返回地址没有被修改。美国专利7,581,089示出了一种用于保护在基于两个堆栈的创建的数据处理系统上的返回地址的方法。第一堆栈是正常的堆栈并且第二堆栈是阴影。该阴影有包含在子程序调用上的返回地址的副本的阴影框架。在从子程序返回之前,来自堆栈的返回地址和来自阴影的返回地址的副本进行比较,并且如果它们不匹配,则在阴影中搜索匹配的返回地址。

发明内容

[0005] 如所附权利要求中所描述的,本发明提供了一种数据处理系统以及一种用于操作数据处理系统的方法。
[0006] 本发明的特定实施例从属权利要求中被陈述。
[0007] 根据下文中描述的实施例,本发明的这些或其它方面将会很明显并且被阐述。附图说明
[0008] 根据附图,仅仅通过举例的方式,本发明的进一步细节、方面和实施例将被描述。在附图中,类似的符号被用于表示相同或功能相似的元件。为了简便以及清晰,附图中的元件不一定按比例绘制。
[0009] 图1示意性地示出了数据处理系统的一个实施例的例子。
[0010] 图2示意性地示出了第二存储器的一个实施例的例子。
[0011] 图3示意性地示出了用于程序的分支的例子。
[0012] 图4示出了易受摧毁堆栈攻击的程序的例子。
[0013] 图5示出了易受在两个不同时间的摧毁堆栈攻击的程序的程序栈的例子。
[0014] 图6示出了示例流程图以解释数据处理系统的一个实施例的基本功能的示例交互。

具体实施方式

[0015] 因为本发明所说明的实施例可以在大多数情况下通过使用本领域所属技术人员已知电子组件和电路被实施,细节不会在比上述所说明的认为有必要的程度大的任何程度上进行解释。对本发明基本概念的理解以及认识是为了不混淆或偏离本发明所教之内容。
[0016] 尽管下文所使用的术语的定义不应被解释为限制,所使用的术语被理解为包括至少以下术语。
[0017] 在本说明书的上下文中,术语“数据处理系统”可以被用于可以被布置为执行程序的多个电子元件。
[0018] 术语“程序”可以被用于可以由数据处理系统执行的逻辑指令的序列。
[0019] 术语“处理单元”可以描述用于执行逻辑操作的序列的可编程或不可编程器件。处理单元可以是数据处理系统的一部分。
[0020] 术语“存储器”可以被用于可以通过公共存储控制器访问的多个相同的存储单元。存储控制器可以是数据处理系统的一部分。
[0021] 术语“地址空间”可以被用于一组地址码,其中每一个地址码可以被用于访问存储器的特定的存储单元。特定的存储单元的地址码可以例如是整数。一组连续的整数可能定义连续的地址空间。
[0022] 术语“偏移”可以被用于可以被添加到用于获得改变的地址码的地址码的数字或代码。地址码可以与特定的存储单元有关。改变的地址码可以与可以通过改变的地址码访问的不同的存储单元有关。偏移可以例如是整数。将偏移添加到原始地址码可以在地址空间中产生可以是有效的地址码的新整数。
[0023] 术语“跳转指令”可以被用于在程序内的逻辑指令,其可以例如导致非序列的程序流程。非序列的程序流程可以例如在函数或子程序被调用时发生。跳转指令可以改变程序指针,其表示将随后被执行的逻辑指令。
[0024] 术语“返回指令”可以例如被用于逻辑指令,其可以例如在用于返回逻辑指令的函数或子程序的末端被执行,该逻辑指令在先前的跳转指令之后。返回指令可以改变程序指针。
[0025] 术语“程序栈”可以被用于被动态地分配到程序的存储器区段。程序栈可以例如被用于存储变量和返回地址,其可以在运行时由程序产生。
[0026] 术语“异常消息”可以被用于在数据处理系统内的信息或逻辑信号,当异常在程序的执行期间发生时,其可以被产生。异常可以例如是事件,其在执行可能扰乱程序的指令的正常、预期的流程的程序期间发生。
[0027] 术语“日志文件”可以被用于数据文件,其中程序可以存储事件,例如访问或数据操作,因为它们发生以作为审计跟踪、诊断器件或安全措施。
[0028] 术语“写访问”可以被用于对存储器的访问。写访问可以改变在存储器中存储的信息。在机器码中,即,可以直接由数据处理系统执行的类属指令,写访问可以由应被写到存储器的多个类似的写指令、信息和限定写访问的起始点的起始地址码定义。所述多个类似的写指令可以例如被组织为环路,并且应被写到存储器的信息可以例如是具有多个字符的字符串。第一写指令可以使用起始地址码并且可以将字符串的第一字符写入存储器。第二写指令可以使用具有其的偏移的起始地址码并且可以将字符串的第二字符写入存储器,等等。
[0029] 参照图1,图1示意性地示出了数据处理系统10的一个实施例的例子。数据处理系统10的基本功能的交互的例子将结合图6随后被解释。数据处理系统10可以包括处理单元12、第一存储器14和第二存储器16。第一存储器14可以例如具有第一地址空间。第二存储器16可以例如具有第二地址空间。数据处理系统10可以被布置为当执行对第一存储器14的写访问时硬件保护第二存储器16。处理单元12可以被布置为访问第一存储器14和第二存储器16。例如,处理单元12可以包括至少一个存储控制器。
[0030] 硬件保护第二存储器14可以以多种不同方式被实现。通常,硬件保护第二存储器16可以描述当执行对第一存储器14的写访问时,可以通过操作和/或溢出对第一存储器
14的写访问的起始地址,例如通过将偏移添加到第一地址空间的地址,不获得和/或访问和/或写入第二地址空间的地址。这可以例如通过使用访问第一存储器14和第二存储器
16的两个不同的指令来实现,其中两个指令仅在其变元即地址码中没有区别。在写指令被执行之前,检查符合允许的地址界的地址码可能是不必要的。差异可以通过在机器码中使用用于第一存储器14和第二存储器16的不同的地址码结构或通过在机器码中使用用于第一存储器14和第二存储器16的完全不同的写指令来实现。通常,数据处理系统10可以被布置为使得具有到第一存储器14的任意长度的写入例如字符串的数据的写访问可以永远不到达第二存储器16。
[0031] 硬件保护第二存储器16可以例如通过将第一存储器14与第二存储器16物理分离和/或通过两个不同的存储控制器访问第一存储器14和第二存储器16来实现。
[0032] 访问第一存储器14和第二存储器16可以例如通过控制总线34、地址总线36和数据总线38来实现。控制总线34可以例如控制用于到第一存储器14和到第二存储器16的读/写访问的通用I/O处理。地址总线36可以例如提供地址码,其与到第一存储器14和到第二存储器16的读/写访问有关。数据总线38可以例如控制数据,其可以写入第一存储器14和第二存储器16或从第一存储器14和第二存储器16读取。
[0033] 处理单元12可以例如包括内核62和硬件逻辑单元32。硬件逻辑单元32可以是单独单元。或者,处理单元12的其它部分例如处理单元12的内核62可以具有所集成的单元32。硬件逻辑单元32可以例如被布置为通过询问总线40访问第二存储器16并且可以被布置为直接通过结果总线42从第二存储器16接收数据。硬件逻辑单元32可以使用用于搜索第二存储器16的询问总线40,如将随后被解释的。经过询问总线40的询问的结果可以例如经过结果总线42被送回到硬件逻辑单元32。询问总线40和结果总线42可以是数据处理系统10的可选特性。处理单元12可以被布置为当返回地址和返回地址副本不相同时产生异常消息30。硬件逻辑单元32可以产生异常消息30,例如,其可以由处理单元12的内核62处理。
[0034] 处理单元12可以包括多于一个内核。当处理单元12包括多个内核62时,多个第二存储器16可以被提供,其中每一个第二存储器16致于所述多个内核62。第二存储器16的大小可以依据返回地址的数量,其可以同时被存储,即,嵌套的跳转指令的最大数量。
[0035] 数据处理系统10可以执行程序18。程序18可以包括逻辑指令的序列。逻辑指令可以由处理单元12执行。当数据处理系统10执行程序18时,程序指针可以指示逻辑指令,其可以随后被执行,如将随后被解释的。程序18可以包括至少一个跳转指令和至少一个返回指令。
[0036] 程序18可以例如包括代码段68、堆段66和程序栈24。处理单元12可以被布置为在第一存储器14中存储程序栈24。处理单元12可以被布置为在第一存储器14中存储程序18的其它部分,即,代码段68和堆段66。代码段68可以例如包括逻辑操作的序列。堆段66可以例如包括变量,其在程序18的初始化期间即当程序18开始时被分配。程序栈
24可以例如包括可以在程序栈24上被动态地存储的变量和返回地址。
[0037] 在程序初始化期间,第一存储器14的连续的存储器区段可以被分配给程序18。连续的存储器区段可以通过一组连续的地址码进行访问。代码段68、堆段66和程序栈24可以在这个连续的存储器区段中被配置。例如,代码段68可以具有最低的地址码。堆段66可以直接相邻于代码段68。堆段66可以具有高于用于代码段68的地址码的地址码。堆段66可以在程序18的初始化期间从低地址码“生长”到高地址码。程序栈24可以具有最高的地址码。程序栈24可以在运行期间从高地址码“生长”到低地址码,即,朝着堆段66。
[0038] 空的存储器区段70可以位于堆段66和程序栈24之间。空的存储器区段70可以例如是在初始化期间被分配给程序18的存储器。空的存储器区段70可以在程序栈24生长的运行时被部分分配给程序栈24。当程序栈24收缩时,空的存储器区段70可以生长。
[0039] 处理单元12可以被布置为执行当至少一个跳转指令时在程序栈24上存储返回地址并且在第二存储器16中存储返回地址副本。处理单元12可以被布置为在后进先出方案(LIFO)中存储返回地址副本。在LIFO方案中存储返回地址副本可以在第二存储器16中提供一种用于布置不同的返回地址的泛型方法。当返回指令被完成时,返回地址和返回地址副本可能成为过剩的。返回地址可以从程序栈24被删除以节省存储器,例如,当调用的子程序结束时。以同样的方式,返回地址副本可以从第二存储器16被删除以节省存储器。当返回指令被完成时,处理单元12可以被布置为删除返回地址副本。
[0040] 处理单元12可以被布置为当执行至少一个返回指令时将返回地址与返回地址副本进行比较。硬件逻辑单元32可以执行在返回地址和返回地址副本之间的比较。如之前所提到的,当返回地址和返回地址副本不相同时,处理单元12可以产生异常消息30。处理单元12可以被布置为当处理单元12产生异常消息30时停止执行程序18。
[0041] 在比较的结果完成之前,处理单元12继续执行程序18可以是可能的。以这种方式,由于比较在程序18的执行中的延迟可以被避免。处理单元12可以被布置为当处理单元12产生异常消息30时继续基于返回地址副本执行程序18。为此,处理单元12可以例如被布置为用当处理单元12产生异常消息30时返回地址副本替代返回地址。处理单元12可以被布置为当处理单元12产生异常消息30时产生日志文件。该日志文件可以例如包括内核转储。
[0042] 现参照图2,图2示意性地示出了第二存储器16的一个实施例的例子。图2示意性地指示第二存储器16的输入和输出值的例子。输入值可以例如经过控制总线34、地址总线36、数据总线38和询问总线40被送到第二存储器16。这些输入值可以例如是数据54、数据地址码56、时钟信号58和与读/写访问控制60有关的各种值。第二存储器16的输出值可以例如通过结果总线42被传输。应理解,正常的读访问通过数据总线38和地址总线36可以是可能的。从第二存储器16删除特定的数据值可以例如通过重写具有“零”的特定的数据值来实现。
[0043] 第二存储器16可以例如是内容可寻址存储器(CAM)或随机存取存储器(RAM)。CAM可以被设计为使得其可以同时搜索用于特定的提供的数据值的其整个内容,即,在其中所存储的数据值。当提供的数据值被发现时,CAM可能返回一系列一个或多个地址码,其中特定的提供的数据值可以被发现。CAM可能返回所返回的地址码或任何其它关联的数据值的内容。对于CAM,读指令是用于匹配的数据值的搜索指令。CAM可以提供用于特定的数据值的最快的可能搜索,如将随后被解释的。
[0044] 输出值可以例如是命中值50和命中地址码52。命中值50可以指示特定的返回地址码在CAM内作为返回地址副本被存储。命中值50可以是逻辑值。命中地址码52可以例如是在与命中值50有关的CAM内的地址码。命中地址码52可以例如是询问的结果,其通过询问总线40先前被送到第二存储器16。询问可以例如是地址码。CAM可以自动地搜索提供的地址码。当第二存储器16不是CAM,而是另一种类型的存储器时,在第二存储器16中用于特定的地址码的搜索可能需要附加的外部逻辑单元,其可以结合图1由所提到的硬件逻辑单元32提供。
[0045] 现参照图3,图3示意性地示出了用于程序18的分支的例子。程序18可能包括了主段46和子程序段48。主段46可以包括逻辑操作的序列。逻辑操作的序列可以连续地被布置。例如,跳转指令20可以位于地址码X,并且主段46的后续逻辑指令可以位于地址码X+1。程序指针64可以指示逻辑指令将随后被执行。程序指针64的值可以例如是地址码。对于没有支路、环路等的正常的程序流程,程序指针64可以随后通过主段46的逻辑指令运行。当程序指针64到达在地址码X的跳转指令20时,程序指针64的值可以成为返回地址码26。返回地址码26可以结合返回指令22被存储。
[0046] 跳转指令20可以将程序指针64从值X+1改变到新值Y,例如,以执行具有在以地址码Y开始的子程序段48中所存储的逻辑指令的序列的函数f。程序指针64可以按顺序通过函数f的逻辑指令的序列运行到关联于返回地址码26的返回指令22。
[0047] 返回指令22可以标记函数f的逻辑指令的序列的末端。返回指令22可以将程序指针64改变到返回地址码26,即,到新的值X+1。程序指针64可以返回主段46的逻辑指令的序列,并且程序流程可能在跳转指令20之后的地址码X+1的主段46中继续。主段46的逻辑操作的序列和子程序段48的逻辑操作的序列可以结合图1位于所提到的代码段68内。跳转指令20的变元和返回指令22的变元可以例如结合图1存储在所提到的程序栈24上。数据处理系统可以保护可以被存储在程序栈上的返回地址26免于由溢出改变,如将随后被解释的。
[0048] 现参照图4,图4示出了易受摧毁堆栈攻击的程序的例子。程序18可以例如在程序语言C中由列表描述。列表的语法可以为本领域所属技术人员所熟知。程序18可以包括主段48和子程序段48。主段46可以在线6中包括函数调用,该线6可以包括到子程序段48的跳转指令。子程序段48可以包括另外的函数调用。C库函数“strcpy”可以在子程序段48中的线17被调用。C库函数“strcpy”可以具有第一变元和第二变元。第一变元和第二变元可以是指针。每一个指针可以指向特定的数据,例如,第一指针可以指向第一数据并且第二指针可以指向第二数据。简单起见,指针和数据之间的差异在下面被忽略。第一数据和第二数据可以各自具有第一数据量和第二数据量。函数“strcpy”可以将第二数据复制到第一数据,而不检查第二数据量是否大于或小于第一数据量。当第二数据大于第一数据量时,第二数据可以超过第一数据被写入。溢出可能发生,其可能损坏程序栈,并且可能改变程序流程,如将在下面被解释的。
[0049] 现参照图5,图5示出了在两个不同时间易受溢出或摧毁堆栈攻击的程序的程序栈的例子。图5中所示的两个表格可以与图4中所示的程序18有关。从左到右的列是程序栈指针即指向由程序栈占用的最低地址码的指针、用于程序栈指针的偏移、存储器地址码、用于保留数据的名称、保留/分配的存储器的量、程序段的名称和存储器增长和程序栈增长的方向。用于程序栈指针的偏移可以例如是偏移,其可以被添加到用于产生访问另一个在堆栈上存储的数据的地址码的程序栈指针。存储器地址码可以描述用于访问在堆栈上所存储的不同的数据的地址码。存储器地址码可以是十六进制值。为了更好的理解程序栈,存储数据的名称可以例如建立到图4中所示的列表的联系。保留存储器列可以指示在程序栈上所存储的特定的数据的(最大)量。存储器增长可以指示用于增加地址码的方向。程序栈增长可以指示在运行时用于程序栈的增长的方向。在图5的例子中,程序栈可以增长到较低的地址码。
[0050] 当程序被初始化并且在程序列表的线6中的函数调用还没被执行时,第一或上方的表格可以与第一时间有关。当主段已经执行函数调用时,第二或下方的表格可以与第二时间有关。当程序执行函数调用时,如下方的表格所示,变量和返回地址可以被存储在程序栈上。
[0051] 摧毁堆栈攻击的溢出的基本原理将在下面被解释。函数“strcpy”可以将数据“msg”复制到数据“缓冲”,而不检查其各自的量。当“msg”的量延伸“缓冲”的量时,溢出可能发生,并且“msg”的部分可以被写入其它变量,其被存储在相邻于“msg”的程序栈上。例如,连续的地址码可以被使用,并且程序栈可以在存储器增长的方向中被改变。例如,局部变量“var1_local”可以由缓冲器溢出改变。当溢出是足够大,即,在这个例子中大于4字节时,返回地址可以被改变。这可以改变程序流程。当返回指令在函数的末端被执行时,程序指针可以按预期不返回到主段。程序流程可以在改变的返回地址继续。这可以导致严重的错误。在返回指令被执行之前,检查返回地址的完整性可能有助于减少由溢出造成的损坏并且有助于防止摧毁堆栈攻击。
[0052] 现参照图6,图6示出了示例流程图以解释数据处理系统的实施例的基本功能的示例交互。应假定,数据处理系统执行包括多个指令、至少一个跳转指令和至少一个返回指令的程序。起始点可以例如是82。在块82,应由数据处理系统执行的当前指令可能改变,例如,通过推进程序指针。在块66,数据处理系统可以检查当前指令是否是跳转指令。当当前指令不是跳转指令时,数据处理系统可以继续进行块74。在块74,数据处理系统可以检查当前指令是否是返回指令。当当前指令不是返回指令时,数据处理系统可以在块82执行当前指令。数据处理系统可以继续进行块80,例如,通过推进程序指针。即,数据处理系统可以总是在执行它之前检查当前指令是否是跳转指令或返回指令。当当前指令既不是跳转指令也不是返回指令时,数据处理系统可以正常执行它。
[0053] 当当前指令是跳转指令时,数据处理系统可以继续进行块68。在块68,数据处理系统可以如结合图1所提到的,在第一存储器中存储返回地址,即,由所增加的程序指针的值。在块70,数据处理系统可以在第二存储器中存储返回地址的副本,即,返回地址副本。跳转指令可以随后在块72被执行。当跳转指令被完成时,数据处理系统可以继续进行图6中所示的块74或直接继续进行块82。
[0054] 当当前指令是返回指令时,数据处理系统可以继续进行块76。在块76,数据处理系统可以将返回地址与返回地址副本进行比较。如结合图1所提到的,该比较可以例如由硬件逻辑单元执行。附加检查返回地址和返回地址副本是否相同可能放慢程序执行。当第二存储器可以例如是CAM时,该比较的执行可以非常快。搜索CAM可能需要大约1或2时钟周期。当第二存储器是普通的随机存取存储器时,搜索可能需要较长时间,并且本领域所属技术人员所熟知的不同的搜索策略可以被应用。
[0055] 当返回地址和返回地址副本是相同时,程序可以继续块78。在块78,数据处理单元可能执行返回指令。当返回指令被完成时,数据处理系统可以继续进行块82。
[0056] 当返回地址和返回地址副本不同时,数据处理系统可以执行图6中未明确显示的不同的动作。例如,数据处理系统可以产生到信号的异常消息,其中返回地址被改变。改变的返回地址可以是用于在执行的程序中的严重的错误或用于通过一种摧毁堆栈方法的黑客攻击的信号。异常消息可以例如由硬件逻辑单元产生。直接使用第二存储器的输出信号作为异常消息,例如,结合图2所描述的命中信号可以是可能的。异常消息可以例如在处理单元的内核中被评估。当异常消息被产生时,数据处理系统可以停止执行程序。
[0057] 数据处理系统可以在比较的结果是可用的之前继续进行程序的执行。这可以在图6中导致块76和78的并行执行。数据处理系统可以通过使用来自第一存储器的未验证的返回地址立即执行返回指令。同时,数据处理系统可以搜索第二存储器以检查返回地址和返回地址副本是否是相同的。搜索可以由硬件逻辑单元执行,该硬件逻辑单元可以由返回指令的执行触发。当硬件逻辑单元检测到返回地址被改变时,程序执行可以基于产生的异常消息被停止,该异常消息可以作为陷阱。这可能仅通过搜索所需要的时间延迟严重的错误的检测。返回指令立即被执行,并且当返回地址没有被改变时,程序执行不被延迟。块76和78的并行执行可以允许返回地址的更复杂的保护。例如,对可以被比较,其中每一个对可以包括程序栈地址码和相应的返回地址。
[0058] 当异常消息被产生时,数据处理系统可以继续基于返回地址副本执行程序。返回地址副本或被存储在第二存储器中,并且可以通过将偏移添加到用于第一存储器的地址码不产生第二存储器的地址码。这可以确保返回地址副本可以在程序栈上不被由溢出改变。这可以可能将返回地址副本复制回到第一存储器以恢复原始的返回地址。返回指令可以基于所恢复的返回地址被正常执行。当程序执行不管异常消息继续执行时,被处理的数据可以被损坏,并且用于处理损坏的数据的附加动作可以被应用。
[0059] 本发明可以在计算机程序中被实现。该程序在计算机系统上运行,至少包括用于当在可编程的器件上,例如计算机系统或启动可编程的器件以执行根据本发明的器件或系统的功能,运行时,执行一种根据本发明的方法的步骤的代码部分。
[0060] 计算机程序是一系列指令例如特定应用程序和/或操作系统。计算机程序可能例如包括以下中的一个或多个:子程序、函数、程序、对象方法、对象实现、可执行的应用程序、小程序、小服务程序、源代码、对象代码、共享库/动态装载库和/或设计在计算机系统上的执行的其它指令序列。
[0061] 计算机程序可以在计算机可读存储介质上被内部地存储或通过计算机可读传输介质传输到计算机系统。全部或一些计算机程序可以被永久地、可移除地提供在计算机可读介质或远程地耦合于信息过程系统。计算机可读介质可能包括,例如但不限于以下的任何数量:磁存储介质包括磁盘和磁带存储介质;光学存储介质例如光盘介质(例如,CD-ROM、CD-R等等)以及数字视盘存储介质;非易失性存储器存储介质包括半导体存储单元例如FLASH存储、EEPROM、EPROM、ROM;磁数字存储;MRAM;易失性存储介质包括寄存器、缓冲或缓存、主存储器、等等;以及数字传输介质包括计算机网络、点对点通信器件、以及载波传输介质,只举几例。
[0062] 计算机过程通常包括执行(运行)程序或程序的部分,现有的程序值和状态信息,以及操作系统用于管理过程的执行的资源。操作系统(OS)是管理一台计算机的资源共享以及提供给程序员用于访问这些资源的界面的软件。操作系统过程系统数据和用户输入,以及通过配置和管理任务以及内部系统资源作为系统对用户和程序员的一项服务响应。
[0063] 计算机系统可能,例如,包括至少一个处理单元、关联存储器和大量的输入/输出(I/O)器件。当执行计算机程序时,计算机系统根据计算机程序过程信息并且通过I/O器件生产生成的输出信息。
[0064] 在前面的说明中,参照本发明实施例的特定例子已对本发明进行了描述。然而,很明显各种修改和变化可以在不脱离附属权利要求中所陈述的本发明的范围的情况下被做出。
[0065] 本发明所描述的每一个信号可以被设计为正逻辑或负逻辑。在负逻辑信号的情况下,所述逻辑真状态相当于逻辑电平0的地方所述信号是低活性。在正逻辑信号的情况下,所述逻辑真状态相当于逻辑电平1的地方所述信号是高活性。注意,本发明说所描述的任何信号可以被设计为负逻辑信号或正逻辑信号。因此,在替代实施例中,那些被描述为正逻辑信号的信号可以被实施为负逻辑信号,以及那些被描述为负逻辑信号的信号可以被实施为正逻辑信号。
[0066] 此外,当将信号、状态位、或类似的装置分别变为其逻辑真或逻辑假状态时,术语“明确肯定”或“设置”以及“否定”(或“非明确肯定”或“清除”)在本发明中被使用。如果逻辑真状态是逻辑电平“1”,逻辑假状态是逻辑电平“0”。如果逻辑真状态是逻辑电平“0”,逻辑假状态是逻辑电平“1”。
[0067] 本领域所属技术人员将认识到逻辑块之间的界限仅仅是说明性的并且替代实施例可能合并逻辑块或电路元件或在各种逻辑块或电路元件上强加替代的分解功能。因此,应了解本发明描述的架构仅仅是示范的,并且事实上实现相同功能的很多其它架构可以被实现。例如,内核和硬件逻辑单元可以作为单一的集成电路或或者作为两个或多个可以通过适当的连接被连接的单独的电路被实现。
[0068] 为实现相同功能的任何元件的布置是有效地“关联”以便所需的功能得以实现。因此,为实现特定功能,本发明中结合在一起的任何两个元件可以被看作彼此“相关联”以便所需的功能得以实现,不论架构还是中间元件。同样地,例如此关联的任何两个元件还可以被认为是彼此被“可操作连接”或“可操作耦合”以实现所需的功能。
[0069] 此外,本领域所属技术人员将认识到上述描述的操作功能之间的界限只是说明性的。多个操作的功能可以组合成单一操作,单一操作可以分布在附加操作中并且操作可以至少部分地在重叠的时间内被执行。而且,替代实施例可能包括特定操作的多个例子,并且操作的顺序在各种其它实施例中会改变。
[0070] 又如,在实施例中,说明的例子可以被作为位于单一集成电路上的电路或在相同器件内的电路被实现。例如,处理单元可能包含了至少一个用于访问第一存储器和第二存储器的存储控制器。处理单元和存储控制器的内核可以位于单一集成电路上。或者,例子可以被实现为以一种适当的方式彼此互联的任何数量的单独集成电路或单独器件。例如,至少一个存储控制器、处理单元的内核和硬件逻辑单元可以作为单独集成电路被实现。
[0071] 又如,例子或其中的一部分可能作为物理电路的软或代码表征被实现,或作为能够转化成物理电路的逻辑表征,例如在任何合适类型的硬件描述语言中被实现。
[0072] 此外,本发明不限定在非程序化硬件中被实现的物理器件或单元,但也可以应用在可编程器件或单元中。这些器件或单元通过操作能够执行所需的器件功能。该执行是根据合适的程序代码,例如,主机、微型计算机、服务器、工作站、个人电脑、笔记本、个人数字助理、电子游戏、汽车和其它嵌入式系统、手机和其它无线器件,在本申请中通常表示“计算机系统”。
[0073] 然而,其它修改、变化和替代也是可能的。说明书和附图相应地被认为是从说明性的而不是严格意义上来讲的。
[0074] 在权利要求中,放置在括号之间的任何参照符号不得被解释为限定权利要求。单词“包括”不排除其它元件或随后在权利要求中列出的那些步骤的存在。此外,本发明所用的“a”或“an”被定义为一个或多个。并且,在权利要求中所用词语例如“至少一个”以及“一个或多个”不应该被解释以暗示通过不定冠词“a”或“an”引入的其它权利要求元件限定任何其它特定权利要求。所述特定权利要求包括这些所介绍的对发明的权利元件,所述权利元件不仅仅包括这种元件。即使当同一权利要求中包括介绍性短语“一个或多个”或“至少一个”以及不定冠词,例如“a”或“an”。使用定冠词也是例如此。除非另有说明,使用术语例如“第一”以及“第二”是用于任意区分这些术语描述的元件的。因此,这些术语不一定表示时间或这些元件的其它优先次序。某些措施在相互不同权利要求中被列举的事实并不表示这些措施的组合不能被用于获取优势。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈