首页> 中国专利> 使用混合代码签名跟踪程序的调用上下文

使用混合代码签名跟踪程序的调用上下文

摘要

一种用于混合代码签名的方法,包括:通过处理器执行应用,所述执行包括执行所述应用的根指令;通过所述处理器分析所述应用的所述执行,所述分析包括存储参考签名;通过所述处理器确定在所述根指令的所述执行之后执行的指令的工作签名,所述确定包括响应于存储所述参考签名,实现所述指令的散列函数;通过在计数器中存储值,跟踪所述工作签名的更新;以及当至少所述工作签名与所述参考签名不匹配时,通过所述处理器使用所述散列函数持续更新所述工作签名。

著录项

  • 公开/公告号CN103765402A

    专利类型发明专利

  • 公开/公告日2014-04-30

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201280040570.2

  • 发明设计人 M·J·塞拉诺;

    申请日2012-06-26

  • 分类号G06F15/00;

  • 代理机构北京市中咨律师事务所;

  • 代理人于静

  • 地址 美国纽约

  • 入库时间 2024-02-20 00:11:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-29

    授权

    授权

  • 2014-06-04

    实质审查的生效 IPC(主分类):G06F15/00 申请日:20120626

    实质审查的生效

  • 2014-04-30

    公开

    公开

说明书

背景技术

本发明一般地涉及数据处理,更具体地说,涉及使用混合代码签名跟 踪程序的调用上下文。

优化编译器和运行时代码优化器可以通过基于程序的运行时简档执行 代码转换,获得显著的性能优势。一个非常有用的运行时简档是捕获程序 的控制流历史,这是程序的个体指令或函数调用的执行顺序。这种控制流 历史知识可以推动强大的程序优化,例如函数内联、代码克隆、超级块形 成和预取插入。

程序的控制流历史可以由在其执行中采取的一系列分支指令简明地表 示。分支指令是程序中的点,在这些点选择应该遵循两个或更多路径中的 哪一个。对于代码优化器而言,知道每个分支指令的结果便已足够,可以 通过该信息知道在代码的运行时执行中采用的精确指令序列。

可以使用软件技术收集一系列采用的分支。但是,这些技术需要昂贵 的程序插装,并且因此可能产生大量开销。尽管这些软件技术足以用于静 态性能分析,但它们可能不足以用于需要将开销保持在低成本的动态运行 时环境。为了降低收集数据的开销,微处理器可以采用硬件技术收集该信 息。但是,存储其它分支指令(例如,64位分支指令)和目标地址的附加 区域开销可能限制专用于记录分支的硬件数量。

发明内容

一个实施例是一种方法,其包括用于生成混合代码签名的方法。所述 方法包括:通过处理器执行应用,所述执行包括执行所述应用的根指令; 通过所述处理器分析所述应用的所述执行,所述分析包括存储从所述根指 令确定的参考签名;通过所述处理器确定在所述根指令的所述执行之后执 行的指令的工作签名,所述确定包括响应于存储所述参考签名而实现所述 指令的散列函数;通过在计数器中存储值而跟踪所述工作签名的更新;以 及当所述工作签名至少与所述参考签名不匹配时,通过所述处理器使用所 述散列函数持续更新所述工作签名。

另一个实施例是一种系统,其具有被配置为执行一种方法的处理器。 所述方法包括:执行应用,所述执行包括执行所述应用的根指令;分析所 述应用的所述执行,所述分析包括存储参考签名;确定在所述根指令的所 述执行之后执行的指令的工作签名,所述确定包括响应于存储所述参考签 名而实现所述指令的散列函数;通过在计数器中存储值而跟踪所述工作签 名的更新;以及当所述工作签名至少与所述参考签名不匹配时,使用所述 散列函数持续更新所述工作签名。

另一个实施例是一种计算机程序产品,其具有有形存储介质,所述有 形存储介质可由处理电路读取并且存储指令以便由所述处理电路执行以执 行一种方法。所述方法包括:执行应用,所述执行包括执行所述应用的根 指令;分析所述应用的所述执行,所述分析包括存储参考签名;确定在所 述根指令的所述执行之后执行的指令的工作签名,所述确定包括响应于存 储所述参考签名而实现所述指令的散列函数;通过在计数器中存储值而跟 踪所述工作签名的更新;以及当所述工作签名至少与所述参考签名不匹配 时,使用所述散列函数持续更新所述工作签名。

通过本发明的技术实现其它特性和优点。在此详细描述了本发明的其 它实施例和方面,并且它们被视为要求保护的本发明的一部分。为了更好 地理解本发明以及优点和特性,将参考说明书和附图。

附图说明

在说明书结尾处的权利要求中具体指出并明确要求保护了被视为本发 明的主题。从下面结合附图的详细描述,本发明的上述和其它特性和优点 将变得显而易见,这些附图是:

图1示出根据示例性实施例的系统的框图的一个实例;

图2示出其中可以实现示例性实施例的处理系统的另一个框图;

图3示出根据一个实施例的用于计算混合调用上下文签名的示例性过 程流程;

图4示出根据示例性实施例的用于数据寄存器的示例性接口;以及

图5示出根据一个实施例的用于混合调用上下文签名的数据结构的一 种实例结构。

具体实施方式

示例性实施例提供一种混合方法,以便通过使用专用寄存器计算硬件 调用上下文签名,使用程序的调用上下文信息增强硬件跟踪。知道调用上 下文(即,当前在堆栈中活跃的方法调用链)对于了解大型程序的动态行 为而言很重要。根据一个实施例,调用上下文信息以硬件签名表示。各实 施例涉及用于概率方法的混合方案,该方法通过使用函数调用深度和程序 地址的组合,跟踪调用上下文信息(或代码签名)。通过计数器捕获函数 调用深度,该计数器针对函数调用递增和递减,而通过返回地址的散列函 数捕获程序地址。一个示例性实施例包括使用签名中的调用深度以及散列 函数,以便改进跟踪调用上下文的概率方法。在其它实施例中,针对循环 实现混合方案,这些循环使用靠近循环的分支地址的散列,并且实现循环 计数器以便跟踪循环的开始和结束,该循环跟踪分支指令并且在分支指令 之后继续。

现在转到各图,图1中示出用于在示例性实施例中实现混合代码签名 的计算机系统100的框图。网络数据处理系统100是其中可以实现各实施 例的计算机网络。网络数据处理系统100包含网络102,其是用于在网络 数据处理系统100中连接在一起的各种设备和计算机之间提供通信链路的 介质。网络102可以包括连接,例如有线、无线通信链路或光缆。图1旨 在作为一个实例,而不是作为不同实施例的体系结构限制。

在所示实例中,服务器104和服务器106以及存储单元108连接到网 络102。此外,客户端110、112和114连接到网络102。这些客户端110、 112和114例如可以是个人计算机或网络计算机。在所示实例中,服务器 104为客户端110、112和114提供数据,例如引导文件、操作系统映像和 应用。在该实例中,客户端110、112和114是服务器104的客户端。网络 数据处理系统100可以包括其它服务器、客户端和其它设备(未示出)。

在一个示例性实施例中,网络数据处理系统100是因特网,同时网络 102代表全球范围内使用传输控制协议/网际协议(TCP/IP)协议集来相互 通信的网络和网关的集合。在其它实施例中,网络数据处理系统100可以 实现为许多不同类型的网络,例如内联网、局域网(LAN)或广域网 (WAN)。硬件调用上下文签名可以在服务器104-106或客户端110-114 中实现。

现在参考图2,示出其中可以实现示例性实施例的计算机系统200的 框图。数据处理系统200是计算机的一个实例,例如图1中的服务器104 或客户端110,其中可以针对示例性实施例定位实现所述过程的计算机可 用代码或指令。系统200采用外围组件互连(PCI)局域总线体系结构。 尽管所示实例采用PCI总线,但可以使用其它总线体系结构,例如图形加 速端口(AGP)和工业标准体系结构(ISA)。处理器202和主存储器204 通过主机208连接到PCI局域总线206。主机208还可以包括用于处理器 202的集成存储控制器和高速缓冲存储器。可以通过直接组件互连或通过 附加板与PCI局域总线206进行其它连接。

在所示实例中,局域网(LAN)适配器210、小型计算机系统接口SCSI 主机总线适配器212和扩展总线接口214通过直接组件连接与PCI局域总 线206连接。此外,音频适配器216、图形适配器218和音频/视频适配器 219通过插入到扩展槽中的附加板连接到PCI局域总线206。扩展总线接 口214为键盘及鼠标适配器220、调制解调器222和其它存储器224提供 连接。SCSI主机总线适配器212为硬盘驱动器226、磁带驱动器228和 CD-ROM驱动器230提供连接。还支持用于PCI扩展槽或附加连接器的 其它支持。

操作系统232在处理器202上运行,并且用于协调和提供对图2中的 系统200内的各种组件的控制。在一个实施例中,操作系统232是商用企 业操作系统,例如可从国际商业机器公司获得的z/Os。多个面向对象的编 程应用(例如C或C++)可以与操作系统232结合运行,并且提供从在客 户端200上执行的这些应用对操作系统232的调用。在一个非限制性实例 中,系统200包括应用234、236、240以及跟踪应用238,将监视跟踪应 用238通过专用寄存器的分析和管理。此外,包括函数、例程等的应用 234-240可以存储在存储设备(例如硬盘驱动器226)上,并且可以加载到 主存储器204中以便由处理器202执行。用于操作系统、面向对象的编程 系统的指令以及应用或程序位于存储设备(例如磁盘驱动器226)上,并 且可以加载到主存储器204中以便由处理器202执行。各示例性实施例的 过程可以由处理器202使用计算机实现的指令来执行,这些指令可以位于 存储器(例如,主存储器204、只读存储器224)或者一个或多个外围设备 中。

除了图2中所示的硬件之外或替代该硬件,可以使用其它内部硬件或 外围设备,例如闪存只读存储器(ROM)、等效的非易失性存储器或光盘 驱动器等。此外,在各实施例中,可以将所述过程应用于多处理器数据处 理系统。例如,系统200(如果可选地被配置为网络计算机)可以不包括 SCSI主机总线适配器212、硬盘驱动器226、磁带驱动器228和CD-ROM 230。在这种情况下,计算机(正确地称为客户端计算机)包括某种类型的 网络通信接口,例如LAN适配器210、调制解调器222等。作为另一个实 例,系统200可以是被配置为可在不依赖某种类型网络通信接口的情况下 引导的独立系统,无论客户端200是否包括某种类型的网络通信接口。作 为另一实例,系统200可以是个人数字助理(PDA),其被配置有ROM 和/或闪存ROM以便提供非易失性存储器以存储操作系统文件和/或用户 生成的数据。图2中的所示实例和上述实例并非旨在暗示体系结构限制。 在各实施例中,所述过程由处理器202使用计算机实现的指令来执行,这 些指令可以位于存储器(例如,主存储器204、存储器224)或者一个或多 个外围设备226-230中。

图3示出根据示例性实施例的用于使用混合方案生成混合代码签名的 方法。在一个实施例中,可以在如图2中所示的主存储器204或存储器204 中实现硬件签名。所述方法在方框305开始。在方框310,通过利用程序 执行路径中的预定指令(例如根指令)的地址,计算参考签名(RSIG)。 将所计算的RSIG保存在专用寄存器中,该寄存器称为调用签名寄存器400 (如图4中所示的CSIG400)。在一个示例性实施例中,CSIG是64位 寄存器,其包括32位参考签名405(图4中所示的RSIG405)和32位调 用上下文签名410(图4中所示的WSIG410)。CSIG400是每当执行调 用和返回指令时由硬件持续更新的寄存器。RSIG405具有的值是感兴趣的 特定指令地址的组合,例如在一个实例中,特定指令地址是在指令序列之 前的频繁执行的指令(根指令)的地址,该指令序列始终在根指令之后执 行。在各实施例中,在初始化跟踪检测硬件之前,针对每个导向根指令的 程序路径,确定要存储为签名RSIG405的根指令签名的值。在各备选实 施例中,使用采样机制从硬件寄存器获得签名。图4中示出CSIG400的 一种示例性结构。

再次参考图3,在方框315,将工作签名WSIG410的初始值初始化为 RSIG405。此外,在方框320,通过使用CALL级别和返回地址的散列值, 计算混合代码签名并将其存储在WSIG410中。通过调用和返回指令标识 函数调用及其返回。CSIG400将针对每个调用和返回指令更新WSIG410。 对于每个调用,循环计数器递增1以便跟踪调用级别,使用计数器中的位 的调用级别实现散列函数并将其与被调用函数的返回地址进行“异或”以 便生成混合代码签名。在一个示例性实施例中,散列函数包括 ROTATE_LEFT函数。对于每个RETURN,循环计数器递减1,并且使 用ROTATE_RIGHT函数计算散列值(使用散列函数计算)。在一个实 施例中,散列函数包括ROTATE_RIGHT函数。在调用之前,应用调用 和返回函数的结果将产生原始签名。将CSIG400的内容与返回地址一起 用于跟踪检测,以便当WSIG410中计算的调用上下文签名与RSIG405 中的指令地址签名相匹配时,以及在其它实施例中,满足其它辅助条件(具 体取决于目标应用)时,所述过程在方框325结束。

如上所述,图4示出CSIG400寄存器的示例性结构。如图所示,CSIG 400在位0:31中存储表示调用上下文签名的工作签名410的散列值,并且 在位32:64中存储参考签名405。在其它实施例中,RSIG405和WSIG410 也可以是64位精度。CSIG400是每当执行调用和返回指令时由硬件持续 更新的寄存器。选择用于更新CSIG400寄存器的散列函数,以便该函数 在任何指令处的值都表示执行的导向该指令的调用和返回序列。然后增强 跟踪检测硬件,以便它将跟踪的开始不是简单地识别为当执行根指令时, 而且仅当在RSIG405等于预定值的时候执行根指令时。在其它示例性实 施例中,在初始化跟踪检测硬件之前,软件针对每个导向根指令的程序路 径,确定RSIG405的在根指令处的值。在执行根指令时确定值RSIG405 的一种示例性方法是由软件计算该值。软件可完成此计算,方式为:在初 始化程序时从RSIG405的值开始,然后手动计算WSIG410更新,而在 遇到调用和返回时遵循程序路径。用于确定RSIG405的另一个示例性实 施例包括在给定指令(例如根指令)处导致同步中断,在该指令处将RSIG 405初始化为已知值。在根指令处发现RSIG405的值的另一个示例性实施 例将是扩展识别频繁执行的指令的地址的硬件。该硬件包括多个寄存器, 这些寄存器包含最频繁执行的指令的地址。可以扩展这些寄存器以便包含 这些频繁执行的指令的调用签名以及仅包含其地址。

图5中示出根据示例性实施例的用于计算混合代码签名的示例性散列 函数及签名结构。如图所示,使用计数器跟踪调用级别,通过可逆函数计 算混合调用上下文签名500。混合调用上下文签名500是M位签名,其包 括固定数量的N位,这些位存储在计数器505中以便跟踪每个调用和返回。 具体地说,对于每个调用,计数器递增,并且对于每个返回,计数器递减。 计数器是循环(wrap-around)计数器,以便在计数器达到最大值时,递 增计数器将使其溢出为0,并且从0递减将设置最大位数。在一个实施例 中,M为32,N为6。应该理解,使用所计算的散列签名510(图3)和N 位计数器的值,计算M位的混合签名。

一种示例性混合签名包括下面示出的散列函数,其中用于调用指令的 散列函数与ROTATE_LEFT一起使用,用于返回指令的散列函数与 ROTATE_RIGHT一起使用。

散列=ROTATE_LEFT(Hashing,S)XOR(RETURN_ADDRESS>>2);

散列=ROTATE_RIGHT(Hashing XOR(RETURN_ADDRESS>>2),S)。

采用散列函数ROTATE_LEFT以及XOR运算符计算混合签名,从 而利用混合签名(或散列签名)的值。ROTATE_LEFT(Hashing,S)被定 义为将初始化后的WSIG410按位向左旋转S位。在某些示例性实施例中, S=3、5、7或9。在ROTATE_LEFT函数中,针对大于1的调用级别计 算并存储在CSIG400中的初始参考签名RSIG405(图4)或混合签名被 向左旋转S位。ROTATE_LEFT函数被定义为将散列签名按位向左移动S 位并且插入高阶S位作为低阶S位。针对散列签名执行ROTATE_LEFT 函数之后,使用针对函数调用预计的RETURN_ADDRESS(向右移动2 位)的“异或”来更新散列签名。RETURN_ADDRESS通常是在CALL 操作之后的下一个指令。

同样,对于返回指令,通过散列签名与针对函数调用预计的 RETURN_ADDRESS(向右移动2位)的“异或”来计算散列签名。接下 来通过将散列签名按位向右移动S位并插入低阶S位作为高阶S位,实现 ROTATE_RIGHT函数。在执行调用和返回之后,这些ROTATE_LEFT 和ROTATE_RIGHT函数将产生签名WSIG410(图4),即,与指令关 联的签名始终是在执行指令之前的签名。在混合签名WSIG410(图4)与 参考签名RSIG405(图4)相匹配,并且满足其它辅助条件(具体取决于 目标应用)之时,跟踪检测将停止。在一个实施例中,其它辅助条件是指 令地址与存储在另一个寄存器中的预定地址相匹配。其它辅助条件的另一 个实施例是循环计数寄存器(其跟踪循环中的迭代次数)与存储在另一个 寄存器中的预定值相匹配。在另一个实施例中,其它辅助条件是与指令地 址、循环计数器或另一个辅助寄存器“异或”的工作签名WSIG410的散 列值与参考RSIG405相匹配。在各实施例中,例如当匹配循环中的特定 指令并且其对应循环计数器与所需值匹配时,可以组合上述辅助条件。应 该理解,辅助条件适用于在跟踪检测以及其它应用(例如性能分析、调试、 动态程序优化以及安全性等)期间提高精度。

技术效果和益处包括能够针对每个调用和返回生成混合代码签名,并 且递增地将其与参考签名相比较,以便实现跟踪检测。

在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明 的限制。如在此使用的,单数形式“一”、“一个”和“该”旨在同样包 括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使 用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、 元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、 操作、元素、组件和/或其组合的存在或增加。

下面权利要求中的对应结构、材料、操作以及所有功能性限定的装置 或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元 件相组合地执行该功能的结构、材料或操作。出于示例和说明目的给出了 对本发明的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开 的形式。在不偏离本发明的范围和精神的情况下,对于所属技术领域的普 通技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述 是为了最佳地解释本发明的原理和实际应用,并且当适合于所构想的特定 使用时,使得所属技术领域的其它普通技术人员能够理解本发明的具有各 种修改的各种实施例。

此外,所属技术领域的技术人员知道,本发明的各个方面可以实现为 系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为 以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、 驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统 称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实 现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机 可读介质中包含计算机可读的程序代码。

可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可 以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质 例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、 装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体 的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计 算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦 式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储 器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。 在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质, 该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传 播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号 可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合 适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何 计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令 执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括 —但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的 各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程 序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设 计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在 用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包 执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计 算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过 任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户 计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通 过因特网连接)。

下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产 品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框 图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序 指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其 它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在 通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程 图和/或框图中的一个或多个方框中规定的功能/动作的装置。

也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使 得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而, 存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的 一个或多个方框中规定的功能/动作的指令的制造品(article of  manufacture)。

也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、 或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列 操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装 置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的 功能/动作的过程。

附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法 和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程 图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述 模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的 可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功 能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上 可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的 功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/ 或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬 件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

在此示出的流程图只是一个实例。在此描述的这些图或步骤(或操作) 可以存在许多变化而不偏离本发明的精神。例如,可以按不同的顺序执行 步骤,或者可以添加、删除或修改步骤。所有这些变化都被视为要求保护 的本发明的一部分。

尽管描述了本发明的优选实施例,但所属技术领域的技术人员应该理 解,可以在现在和将来进行各种落入下面权利要求范围的改进和增强。这 些权利要求应该被解释为维护对最初描述的本发明的正确保护。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号