《使用混合代码签名跟踪程序的调用上下文.pdf》由会员分享,可在线阅读,更多相关《使用混合代码签名跟踪程序的调用上下文.pdf(14页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103765402 A (43)申请公布日 2014.04.30 CN 103765402 A (21)申请号 201280040570.2 (22)申请日 2012.06.26 13/214,352 2011.08.22 US G06F 15/00(2006.01) (71)申请人 国际商业机器公司 地址 美国纽约 (72)发明人 MJ塞拉诺 (74)专利代理机构 北京市中咨律师事务所 11247 代理人 于静 张亚非 (54) 发明名称 使用混合代码签名跟踪程序的调用上下文 (57) 摘要 一种用于混合代码签名的方法, 包括 : 通过 处理器执行应用, 所述执行包。
2、括执行所述应用的 根指令 ; 通过所述处理器分析所述应用的所述执 行, 所述分析包括存储参考签名 ; 通过所述处理 器确定在所述根指令的所述执行之后执行的指令 的工作签名, 所述确定包括响应于存储所述参考 签名, 实现所述指令的散列函数 ; 通过在计数器 中存储值, 跟踪所述工作签名的更新 ; 以及当至 少所述工作签名与所述参考签名不匹配时, 通过 所述处理器使用所述散列函数持续更新所述工作 签名。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.02.20 (86)PCT国际申请的申请数据 PCT/US2012/044120 2012.06.26 (87)PCT国际申请的。
3、公布数据 WO2013/028258 EN 2013.02.28 (51)Int.Cl. 权利要求书 2 页 说明书 7 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书7页 附图4页 (10)申请公布号 CN 103765402 A CN 103765402 A 1/2 页 2 1. 一种用于生成混合代码签名的方法, 所述方法包括 : 通过处理器执行应用, 所述执行包括执行所述应用的根指令 ; 通过所述处理器分析所述应用的所述执行, 所述分析包括存储从所述根指令确定的参 考签名 ; 通过所述处理器确定在所述根指令的所述执行之后执行的指令的工。
4、作签名, 所述确定 包括响应于存储所述参考签名而实现所述指令的散列函数 ; 通过在计数器中存储值而跟踪所述工作签名的更新 ; 以及 当所述工作签名至少与所述参考签名不匹配时, 通过所述处理器使用所述散列函数持 续更新所述工作签名。 2. 根据权利要求 1 的方法, 其中所述工作签名的所述更新进一步包括确定执行应用的 其它辅助条件。 3. 根据权利要求 2 的方法, 其中所述其它辅助条件的所述确定进一步包括判定所述根 指令的地址是否与预定地址相匹配、 存储在循环计数器中的第一值是否与第二预定值相匹 配, 或者所述参考签名是否与将所述地址与所述工作签名 “异或” 或将所述第一值与所述工 作签名 “。
5、异或” 中的至少一个的散列值相匹配。 4. 根据权利要求 1 的方法, 其中所述工作签名的所述更新进一步包括在所述根指令之 后执行所述应用。 5. 根据权利要求 1 的方法, 还包括响应于在所述应用的执行期间执行调用指令和返回 指令, 更新所述工作签名。 6. 根据权利要求 1 的方法, 还包括响应于在所述应用的执行期间执行分支指令并且在 所述分支指令之后继续, 更新所述工作签名。 7. 根据权利要求 3 的方法, 还包括在所述调用指令的执行期间递增所述计数器的值, 以及在所述返回指令的执行期间递减所述计数器的值。 8. 根据权利要求 1 的方法, 还包括响应于所述根指令的执行, 初始地将所述。
6、参考签名 存储为所述工作签名。 9. 根据权利要求 1 的方法, 其中所述工作签名进一步包括通过将所述参考签名与所述 工作签名 “异或” 而生成所述工作签名的散列值。 10. 一种系统, 其包括被配置为执行一种方法的处理器, 所述方法包括 : 执行应用, 所述执行包括执行所述应用的根指令 ; 分析所述应用的所述执行, 所述分析包括存储参考签名 ; 确定在所述根指令的所述执行之后执行的指令的工作签名, 所述确定包括响应于存储 所述参考签名而实现所述指令的散列函数 ; 通过在计数器中存储值而跟踪所述工作签名的更新 ; 以及 当所述工作签名至少与所述参考签名不匹配时, 使用所述散列函数持续更新所述工。
7、作 签名。 11. 根据权利要求 10 的系统, 其中所述工作签名的所述更新进一步包括确定执行应用 的其它辅助条件。 12. 根据权利要求 11 的系统, 其中所述其它辅助条件的所述确定进一步包括判定所述 根指令的地址是否与预定地址相匹配、 存储在循环计数器中的第一值是否与第二预定值相 权 利 要 求 书 CN 103765402 A 2 2/2 页 3 匹配, 或者所述参考签名是否与将所述地址与所述工作签名 “异或” 或将所述第一值与所述 工作签名 “异或” 中的至少一个的散列值相匹配。 13. 根据权利要求 10 的系统, 其中所述工作签名的所述更新进一步包括在所述应用的 执行期间执行调用。
8、指令和返回指令。 14. 根据权利要求 10 的系统, 其中所述工作签名的所述更新进一步包括在所述应用的 执行期间执行分支指令并且在所述分支指令之后继续。 15. 根据权利要求 10 的系统, 其中所述方法还包括在所述调用指令的执行期间递增所 述计数器的值, 以及在所述返回指令的执行期间递减所述计数器的值。 16. 根据权利要求 10 的系统, 其中所述方法还包括响应于所述根指令的执行, 初始地 将所述参考签名存储为所述工作签名。 17. 根据权利要求 10 的系统, 其中所述工作签名包括将所述参考签名与所述工作签名 “异或” 的散列值。 18. 一种计算机程序产品, 包括 : 有形存储介质,。
9、 其可由处理电路读取并且存储指令以便由所述处理电路执行以执行一 种方法, 所述方法包括 : 执行应用, 所述执行包括执行所述应用的根指令 ; 分析所述应用的所述执行, 所述分析包括存储参考签名 ; 确定在所述根指令的所述执行之后执行的指令的工作签名, 所述确定包括响应于存储 所述参考签名而实现所述指令的散列函数 ; 通过在计数器中存储值而跟踪所述工作签名的更新 ; 以及 当所述工作签名至少与所述参考签名不匹配时, 使用所述散列函数持续更新所述工作 签名。 19. 根据权利要求 18 的计算机程序产品, 其中所述方法还包括所述工作签名的更新包 括确定执行应用的其它辅助条件。 20. 根据权利要求。
10、 19 的计算机程序产品, 其中所述其它辅助条件的所述确定进一步包 括判定所述根指令的地址是否与预定地址相匹配、 存储在循环计数器中的第一值是否与第 二预定值相匹配, 或者所述参考签名是否与将所述地址与所述工作签名 “异或” 或将所述第 一值与所述工作签名 “异或” 中的至少一个的散列值相匹配。 21. 根据权利要求 18 的计算机程序产品, 其中所述工作签名的所述更新进一步包括在 所述应用的执行期间执行调用指令和返回指令。 22. 根据权利要求 18 的计算机程序产品, 其中所述工作签名的所述更新进一步包括在 所述应用的执行期间执行分支指令并且在所述分支指令之后继续。 23. 根据权利要求 。
11、18 的计算机程序产品, 其中所述方法还包括在所述调用指令的执行 期间递增所述计数器的值, 以及在所述返回指令的执行期间递减所述计数器的值。 24. 根据权利要求 18 的计算机程序产品, 其中所述方法还包括响应于所述根指令的执 行, 初始地将所述参考签名存储为所述工作签名。 25. 根据权利要求 18 的计算机程序产品, 其中所述方法还包括通过将所述参考签名与 所述工作签名 “异或” 而生成所述工作签名的散列值。 权 利 要 求 书 CN 103765402 A 3 1/7 页 4 使用混合代码签名跟踪程序的调用上下文 背景技术 0001 本发明一般地涉及数据处理, 更具体地说, 涉及使用混。
12、合代码签名跟踪程序的调 用上下文。 0002 优化编译器和运行时代码优化器可以通过基于程序的运行时简档执行代码转换, 获得显著的性能优势。一个非常有用的运行时简档是捕获程序的控制流历史, 这是程序的 个体指令或函数调用的执行顺序。这种控制流历史知识可以推动强大的程序优化, 例如函 数内联、 代码克隆、 超级块形成和预取插入。 0003 程序的控制流历史可以由在其执行中采取的一系列分支指令简明地表示。 分支指 令是程序中的点, 在这些点选择应该遵循两个或更多路径中的哪一个。对于代码优化器而 言, 知道每个分支指令的结果便已足够, 可以通过该信息知道在代码的运行时执行中采用 的精确指令序列。 00。
13、04 可以使用软件技术收集一系列采用的分支。 但是, 这些技术需要昂贵的程序插装, 并且因此可能产生大量开销。尽管这些软件技术足以用于静态性能分析, 但它们可能不足 以用于需要将开销保持在低成本的动态运行时环境。为了降低收集数据的开销, 微处理器 可以采用硬件技术收集该信息。但是, 存储其它分支指令 (例如, 64 位分支指令) 和目标地 址的附加区域开销可能限制专用于记录分支的硬件数量。 发明内容 0005 一个实施例是一种方法, 其包括用于生成混合代码签名的方法。 所述方法包括 : 通 过处理器执行应用, 所述执行包括执行所述应用的根指令 ; 通过所述处理器分析所述应用 的所述执行, 所述。
14、分析包括存储从所述根指令确定的参考签名 ; 通过所述处理器确定在所 述根指令的所述执行之后执行的指令的工作签名, 所述确定包括响应于存储所述参考签名 而实现所述指令的散列函数 ; 通过在计数器中存储值而跟踪所述工作签名的更新 ; 以及当 所述工作签名至少与所述参考签名不匹配时, 通过所述处理器使用所述散列函数持续更新 所述工作签名。 0006 另一个实施例是一种系统, 其具有被配置为执行一种方法的处理器。所述方法包 括 : 执行应用, 所述执行包括执行所述应用的根指令 ; 分析所述应用的所述执行, 所述分析 包括存储参考签名 ; 确定在所述根指令的所述执行之后执行的指令的工作签名, 所述确定 。
15、包括响应于存储所述参考签名而实现所述指令的散列函数 ; 通过在计数器中存储值而跟踪 所述工作签名的更新 ; 以及当所述工作签名至少与所述参考签名不匹配时, 使用所述散列 函数持续更新所述工作签名。 0007 另一个实施例是一种计算机程序产品, 其具有有形存储介质, 所述有形存储介质 可由处理电路读取并且存储指令以便由所述处理电路执行以执行一种方法。所述方法包 括 : 执行应用, 所述执行包括执行所述应用的根指令 ; 分析所述应用的所述执行, 所述分析 包括存储参考签名 ; 确定在所述根指令的所述执行之后执行的指令的工作签名, 所述确定 包括响应于存储所述参考签名而实现所述指令的散列函数 ; 通。
16、过在计数器中存储值而跟踪 说 明 书 CN 103765402 A 4 2/7 页 5 所述工作签名的更新 ; 以及当所述工作签名至少与所述参考签名不匹配时, 使用所述散列 函数持续更新所述工作签名。 0008 通过本发明的技术实现其它特性和优点。 在此详细描述了本发明的其它实施例和 方面, 并且它们被视为要求保护的本发明的一部分。为了更好地理解本发明以及优点和特 性, 将参考说明书和附图。 附图说明 0009 在说明书结尾处的权利要求中具体指出并明确要求保护了被视为本发明的主题。 从下面结合附图的详细描述, 本发明的上述和其它特性和优点将变得显而易见, 这些附图 是 : 0010 图 1 示。
17、出根据示例性实施例的系统的框图的一个实例 ; 0011 图 2 示出其中可以实现示例性实施例的处理系统的另一个框图 ; 0012 图 3 示出根据一个实施例的用于计算混合调用上下文签名的示例性过程流程 ; 0013 图 4 示出根据示例性实施例的用于数据寄存器的示例性接口 ; 以及 0014 图 5 示出根据一个实施例的用于混合调用上下文签名的数据结构的一种实例结 构。 具体实施方式 0015 示例性实施例提供一种混合方法, 以便通过使用专用寄存器计算硬件调用上下文 签名, 使用程序的调用上下文信息增强硬件跟踪。知道调用上下文 (即, 当前在堆栈中活跃 的方法调用链) 对于了解大型程序的动态行。
18、为而言很重要。根据一个实施例, 调用上下文 信息以硬件签名表示。各实施例涉及用于概率方法的混合方案, 该方法通过使用函数调用 深度和程序地址的组合, 跟踪调用上下文信息 (或代码签名) 。通过计数器捕获函数调用深 度, 该计数器针对函数调用递增和递减, 而通过返回地址的散列函数捕获程序地址。 一个示 例性实施例包括使用签名中的调用深度以及散列函数, 以便改进跟踪调用上下文的概率方 法。在其它实施例中, 针对循环实现混合方案, 这些循环使用靠近循环的分支地址的散列, 并且实现循环计数器以便跟踪循环的开始和结束, 该循环跟踪分支指令并且在分支指令之 后继续。 0016 现在转到各图, 图 1 中示。
19、出用于在示例性实施例中实现混合代码签名的计算机系 统 100 的框图。网络数据处理系统 100 是其中可以实现各实施例的计算机网络。网络数据 处理系统 100 包含网络 102, 其是用于在网络数据处理系统 100 中连接在一起的各种设备 和计算机之间提供通信链路的介质。网络 102 可以包括连接, 例如有线、 无线通信链路或光 缆。图 1 旨在作为一个实例, 而不是作为不同实施例的体系结构限制。 0017 在所示实例中, 服务器 104 和服务器 106 以及存储单元 108 连接到网络 102。此 外, 客户端 110、 112 和 114 连接到网络 102。这些客户端 110、 112。
20、 和 114 例如可以是个人 计算机或网络计算机。在所示实例中, 服务器 104 为客户端 110、 112 和 114 提供数据, 例如 引导文件、 操作系统映像和应用。在该实例中, 客户端 110、 112 和 114 是服务器 104 的客户 端。网络数据处理系统 100 可以包括其它服务器、 客户端和其它设备 (未示出) 。 0018 在一个示例性实施例中, 网络数据处理系统100是因特网, 同时网络102代表全球 说 明 书 CN 103765402 A 5 3/7 页 6 范围内使用传输控制协议/网际协议 (TCP/IP) 协议集来相互通信的网络和网关的集合。 在 其它实施例中, 。
21、网络数据处理系统 100 可以实现为许多不同类型的网络, 例如内联网、 局域 网 (LAN) 或广域网 (WAN) 。硬件调用上下文签名可以在服务器 104-106 或客户端 110-114 中实现。 0019 现在参考图 2, 示出其中可以实现示例性实施例的计算机系统 200 的框图。数据 处理系统 200 是计算机的一个实例, 例如图 1 中的服务器 104 或客户端 110, 其中可以针对 示例性实施例定位实现所述过程的计算机可用代码或指令。系统 200 采用外围组件互连 (PCI) 局域总线体系结构。尽管所示实例采用 PCI 总线, 但可以使用其它总线体系结构, 例 如图形加速端口 (。
22、AGP) 和工业标准体系结构 (ISA) 。处理器 202 和主存储器 204 通过主机 208连接到PCI局域总线206。 主机208还可以包括用于处理器202的集成存储控制器和高 速缓冲存储器。可以通过直接组件互连或通过附加板与 PCI 局域总线 206 进行其它连接。 0020 在所示实例中, 局域网 (LAN) 适配器 210、 小型计算机系统接口 SCSI 主机总线适配 器 212 和扩展总线接口 214 通过直接组件连接与 PCI 局域总线 206 连接。此外, 音频适配 器 216、 图形适配器 218 和音频 / 视频适配器 219 通过插入到扩展槽中的附加板连接到 PCI 局。
23、域总线 206。扩展总线接口 214 为键盘及鼠标适配器 220、 调制解调器 222 和其它存储器 224 提供连接。SCSI 主机总线适配器 212 为硬盘驱动器 226、 磁带驱动器 228 和 CD-ROM 驱 动器 230 提供连接。还支持用于 PCI 扩展槽或附加连接器的其它支持。 0021 操作系统232在处理器202上运行, 并且用于协调和提供对图2中的系统200内的 各种组件的控制。在一个实施例中, 操作系统 232 是商用企业操作系统, 例如可从国际商业 机器公司获得的 z/Os。多个面向对象的编程应用 (例如 C 或 C+) 可以与操作系统 232 结合 运行, 并且提供。
24、从在客户端 200 上执行的这些应用对操作系统 232 的调用。在一个非限制 性实例中, 系统 200 包括应用 234、 236、 240 以及跟踪应用 238, 将监视跟踪应用 238 通过专 用寄存器的分析和管理。此外, 包括函数、 例程等的应用 234-240 可以存储在存储设备 (例 如硬盘驱动器 226) 上, 并且可以加载到主存储器 204 中以便由处理器 202 执行。用于操作 系统、 面向对象的编程系统的指令以及应用或程序位于存储设备 (例如磁盘驱动器 226) 上, 并且可以加载到主存储器 204 中以便由处理器 202 执行。各示例性实施例的过程可以由处 理器 202 使。
25、用计算机实现的指令来执行, 这些指令可以位于存储器 (例如, 主存储器 204、 只 读存储器 224) 或者一个或多个外围设备中。 0022 除了图 2 中所示的硬件之外或替代该硬件, 可以使用其它内部硬件或外围设备, 例如闪存只读存储器 (ROM) 、 等效的非易失性存储器或光盘驱动器等。此外, 在各实施例 中, 可以将所述过程应用于多处理器数据处理系统。例如, 系统 200(如果可选地被配置为 网络计算机) 可以不包括 SCSI 主机总线适配器 212、 硬盘驱动器 226、 磁带驱动器 228 和 CD-ROM230。在这种情况下, 计算机 (正确地称为客户端计算机) 包括某种类型的网。
26、络通信接 口, 例如 LAN 适配器 210、 调制解调器 222 等。作为另一个实例, 系统 200 可以是被配置为 可在不依赖某种类型网络通信接口的情况下引导的独立系统, 无论客户端 200 是否包括某 种类型的网络通信接口。作为另一实例, 系统 200 可以是个人数字助理 (PDA) , 其被配置有 ROM和/或闪存ROM以便提供非易失性存储器以存储操作系统文件和/或用户生成的数据。 图 2 中的所示实例和上述实例并非旨在暗示体系结构限制。在各实施例中, 所述过程由处 理器 202 使用计算机实现的指令来执行, 这些指令可以位于存储器 (例如, 主存储器 204、 存 说 明 书 CN 。
27、103765402 A 6 4/7 页 7 储器 224) 或者一个或多个外围设备 226-230 中。 0023 图 3 示出根据示例性实施例的用于使用混合方案生成混合代码签名的方法。在一 个实施例中, 可以在如图2中所示的主存储器204或存储器204中实现硬件签名。 所述方法 在方框 305 开始。在方框 310, 通过利用程序执行路径中的预定指令 (例如根指令) 的地址, 计算参考签名 (RSIG) 。 将所计算的RSIG保存在专用寄存器中, 该寄存器称为调用签名寄存 器 400(如图 4 中所示的 CSIG400) 。在一个示例性实施例中, CSIG 是 64 位寄存器, 其包括 32。
28、 位参考签名 405(图 4 中所示的 RSIG405) 和 32 位调用上下文签名 410(图 4 中所示的 WSIG410) 。 CSIG400是每当执行调用和返回指令时由硬件持续更新的寄存器。 RSIG405具有 的值是感兴趣的特定指令地址的组合, 例如在一个实例中, 特定指令地址是在指令序列之 前的频繁执行的指令 (根指令) 的地址, 该指令序列始终在根指令之后执行。在各实施例中, 在初始化跟踪检测硬件之前, 针对每个导向根指令的程序路径, 确定要存储为签名 RSIG405 的根指令签名的值。在各备选实施例中, 使用采样机制从硬件寄存器获得签名。图 4 中示 出 CSIG400 的一种。
29、示例性结构。 0024 再次参考图 3, 在方框 315, 将工作签名 WSIG410 的初始值初始化为 RSIG405。此 外, 在方框 320, 通过使用 CALL 级别和返回地址的散列值, 计算混合代码签名并将其存储在 WSIG410 中。通过调用和返回指令标识函数调用及其返回。CSIG400 将针对每个调用和返 回指令更新 WSIG410。对于每个调用, 循环计数器递增 1 以便跟踪调用级别, 使用计数器中 的位的调用级别实现散列函数并将其与被调用函数的返回地址进行 “异或” 以便生成混合 代码签名。在一个示例性实施例中, 散列函数包括 ROTATE_LEFT 函数。对于每个 RETU。
30、RN, 循 环计数器递减 1, 并且使用 ROTATE_RIGHT 函数计算散列值 (使用散列函数计算) 。在一个实 施例中, 散列函数包括 ROTATE_RIGHT 函数。在调用之前, 应用调用和返回函数的结果将产 生原始签名。将 CSIG400 的内容与返回地址一起用于跟踪检测, 以便当 WSIG410 中计算的 调用上下文签名与 RSIG405 中的指令地址签名相匹配时, 以及在其它实施例中, 满足其它 辅助条件 (具体取决于目标应用) 时, 所述过程在方框 325 结束。 0025 如上所述, 图 4 示出 CSIG400 寄存器的示例性结构。如图所示, CSIG400 在位 0:31。
31、 中存储表示调用上下文签名的工作签名 410 的散列值, 并且在位 32:64 中存储参考签名 405。在其它实施例中, RSIG405 和 WSIG410 也可以是 64 位精度。CSIG400 是每当执行调 用和返回指令时由硬件持续更新的寄存器。选择用于更新 CSIG400 寄存器的散列函数, 以 便该函数在任何指令处的值都表示执行的导向该指令的调用和返回序列。 然后增强跟踪检 测硬件, 以便它将跟踪的开始不是简单地识别为当执行根指令时, 而且仅当在 RSIG405 等 于预定值的时候执行根指令时。 在其它示例性实施例中, 在初始化跟踪检测硬件之前, 软件 针对每个导向根指令的程序路径, 。
32、确定 RSIG405 的在根指令处的值。在执行根指令时确定 值RSIG405的一种示例性方法是由软件计算该值。 软件可完成此计算, 方式为 : 在初始化程 序时从RSIG405的值开始, 然后手动计算WSIG410更新, 而在遇到调用和返回时遵循程序路 径。用于确定 RSIG405 的另一个示例性实施例包括在给定指令 (例如根指令) 处导致同步中 断, 在该指令处将 RSIG405 初始化为已知值。在根指令处发现 RSIG405 的值的另一个示例 性实施例将是扩展识别频繁执行的指令的地址的硬件。该硬件包括多个寄存器, 这些寄存 器包含最频繁执行的指令的地址。 可以扩展这些寄存器以便包含这些频繁。
33、执行的指令的调 用签名以及仅包含其地址。 说 明 书 CN 103765402 A 7 5/7 页 8 0026 图 5 中示出根据示例性实施例的用于计算混合代码签名的示例性散列函数及签 名结构。 如图所示, 使用计数器跟踪调用级别, 通过可逆函数计算混合调用上下文签名500。 混合调用上下文签名 500 是 M 位签名, 其包括固定数量的 N 位, 这些位存储在计数器 505 中 以便跟踪每个调用和返回。 具体地说, 对于每个调用, 计数器递增, 并且对于每个返回, 计数 器递减。计数器是循环 (wrap-around) 计数器, 以便在计数器达到最大值时, 递增计数器将 使其溢出为 0, 。
34、并且从 0 递减将设置最大位数。在一个实施例中, M 为 32, N 为 6。应该理解, 使用所计算的散列签名 510(图 3) 和 N 位计数器的值, 计算 M 位的混合签名。 0027 一种示例性混合签名包括下面示出的散列函数, 其中用于调用指令的散列函数与 ROTATE_LEFT 一起使用, 用于返回指令的散列函数与 ROTATE_RIGHT 一起使用。 0028 散列 =ROTATE_LEFT(Hashing,S)XOR(RETURN_ADDRESS2) ; 0029 散列 =ROTATE_RIGHT(Hashing XOR(RETURN_ADDRESS2),S)。 0030 采用散列。
35、函数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 函数之后, 使用针对函数调用预计的 R。
36、ETURN_ADDRESS(向 右移动 2 位) 的 “异或” 来更新散列签名。RETURN_ADDRESS 通常是在 CALL 操作之后的下一 个指令。 0031 同样, 对于返回指令, 通过散列签名与针对函数调用预计的 RETURN_ADDRESS (向右 移动 2 位) 的 “异或” 来计算散列签名。接下来通过将散列签名按位向右移动 S 位并插入低 阶 S 位作为高阶 S 位, 实现 ROTATE_RIGHT 函数。在执行调用和返回之后, 这些 ROTATE_LEFT 和 ROTATE_RIGHT 函数将产生签名 WSIG410(图 4) , 即, 与指令关联的签名始终是在执行指 令之前。
37、的签名。在混合签名 WSIG410(图 4) 与参考签名 RSIG405(图 4) 相匹配, 并且满足 其它辅助条件 (具体取决于目标应用) 之时, 跟踪检测将停止。在一个实施例中, 其它辅助 条件是指令地址与存储在另一个寄存器中的预定地址相匹配。 其它辅助条件的另一个实施 例是循环计数寄存器 (其跟踪循环中的迭代次数) 与存储在另一个寄存器中的预定值相匹 配。在另一个实施例中, 其它辅助条件是与指令地址、 循环计数器或另一个辅助寄存器 “异 或” 的工作签名 WSIG410 的散列值与参考 RSIG405 相匹配。在各实施例中, 例如当匹配循环 中的特定指令并且其对应循环计数器与所需值匹配时。
38、, 可以组合上述辅助条件。 应该理解, 辅助条件适用于在跟踪检测以及其它应用 (例如性能分析、 调试、 动态程序优化以及安全性 等) 期间提高精度。 0032 技术效果和益处包括能够针对每个调用和返回生成混合代码签名, 并且递增地将 其与参考签名相比较, 以便实现跟踪检测。 0033 在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。 如 在此使用的, 单数形式 “一” 、“一个” 和 “该” 旨在同样包括复数形式, 除非上下文明确地另 有所指。还将理解, 当在此说明书中使用时, 术语 “包括” 和 / 或 “包含” 指定了声明的特性、 整数、 步骤、 操作、 元素和 / 或。
39、组件的存在, 但是并不排除一个或多个其它特性、 整数、 步骤、 操作、 元素、 组件和 / 或其组合的存在或增加。 说 明 书 CN 103765402 A 8 6/7 页 9 0034 下面权利要求中的对应结构、 材料、 操作以及所有功能性限定的装置或步骤的等 同替换, 旨在包括任何用于与在权利要求中具体指出的其它元件相组合地执行该功能的结 构、 材料或操作。 出于示例和说明目的给出了对本发明的描述, 但所述描述并非旨在是穷举 的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下, 对于所属技 术领域的普通技术人员来说许多修改和变化都将是显而易见的。 实施例的选择和描述是为 了。
40、最佳地解释本发明的原理和实际应用, 并且当适合于所构想的特定使用时, 使得所属技 术领域的其它普通技术人员能够理解本发明的具有各种修改的各种实施例。 0035 此外, 所属技术领域的技术人员知道, 本发明的各个方面可以实现为系统、 方法或 计算机程序产品。因此, 本发明的各个方面可以具体实现为以下形式, 即 : 完全的硬件实施 方式、 完全的软件实施方式 (包括固件、 驻留软件、 微代码等) , 或硬件和软件方面结合的实 施方式, 这里可以统称为 “电路” 、“模块” 或 “系统” 。此外, 本发明的各个方面还可以实现为 在一个或多个计算机可读介质中的计算机程序产品的形式, 该计算机可读介质中。
41、包含计算 机可读的程序代码。 0036 可以采用一个或多个计算机可读介质的任意组合。 计算机可读介质可以是计算机 可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于 电、 磁、 光、 电磁、 红外线、 或半导体的系统、 装置或器件, 或者上述的任意合适的组合。计算 机可读存储介质的更具体的例子 (非穷举的列表) 包括 : 具有一个或多个导线的电连接、 便 携式计算机盘、 硬盘、 随机存取存储器 (RAM) 、 只读存储器 (ROM) 、 可擦式可编程只读存储器 (EPROM 或闪存) 、 光纤、 便携式紧凑盘只读存储器 (CD-ROM) 、 光存储器件、 磁存储器件、 或。
42、者 上述的任意合适的组合。在本文件中, 计算机可读存储介质可以是任何包含或存储程序的 有形介质, 该程序可以被指令执行系统、 装置或者器件使用或者与其结合使用。 0037 计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据 信号, 其中承载了计算机可读的程序代码。 这种传播的数据信号可以采用多种形式, 包括 但不限于电磁信号、 光信号或上述的任意合适的组合。计算机可读的信号介质可以是计 算机可读存储介质以外的任何计算机可读介质, 该计算机可读介质可以发送、 传播或者传 输用于由指令执行系统、 装置或者器件使用或者与其结合使用的程序。 0038 计算机可读介质上包含的程序代码可。
43、以用任何适当的介质传输, 包括但不限 于无线、 有线、 光缆、 RF 等等, 或者上述的任意合适的组合。 0039 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面 的操作的计算机程序代码, 所述程序设计语言包括面向对象的程序设计语言诸如 Java、 Smalltalk、 C+ 等, 还包括常规的过程式程序设计语言诸如 “C” 语言或类似的程序设计 语言。 程序代码可以完全地在用户计算机上执行、 部分地在用户计算机上执行、 作为一个独 立的软件包执行、 部分在用户计算机上部分在远程计算机上执行、 或者完全在远程计算机 或服务器上执行。在涉及远程计算机的情形中, 远程计算机可。
44、以通过任意种类的网络包 括局域网 (LAN) 或广域网 (WAN)连接到用户计算机, 或者, 可以连接到外部计算机 (例如 利用因特网服务提供商来通过因特网连接) 。 0040 下面将参照根据本发明实施例的方法、 装置 (系统) 和计算机程序产品的流程图和 / 或框图描述本发明的各个方面。应当理解, 流程图和 / 或框图的每个方框以及流程图和 / 或框图中各方框的组合, 都可以由计算机程序指令实现。这些计算机程序指令可以提供给 说 明 书 CN 103765402 A 9 7/7 页 10 通用计算机、 专用计算机或其它可编程数据处理装置的处理器, 从而生产出一种机器, 使得 这些指令在通过计。
45、算机或其它可编程数据处理装置的处理器执行时, 产生了实现流程图和 / 或框图中的一个或多个方框中规定的功能 / 动作的装置。 0041 也可以把这些计算机程序指令存储在计算机可读介质中, 这些指令使得计算机、 其它可编程数据处理装置、 或其它设备以特定方式工作, 从而, 存储在计算机可读介质中的 指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令 的制造品 (article of manufacture) 。 0042 也可以把计算机程序指令加载到计算机、 其它可编程数据处理装置、 或其它设备 上, 使得在计算机、 其它可编程装置或其它设备上执行一系列操作步骤, 以。
46、产生计算机实现 的过程, 从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和 / 或框图中 的一个或多个方框中规定的功能 / 动作的过程。 0043 附图中的流程图和框图显示了根据本发明的不同实施例的系统、 方法和计算机程 序产品的可能实现的体系架构、 功能和操作。 在这点上, 流程图或框图中的每个方框可以代 表一个模块、 程序段或代码的一部分, 所述模块、 程序段或代码的一部分包含一个或多个用 于实现规定的逻辑功能的可执行指令。 也应当注意, 在有些作为替换的实现中, 方框中所标 注的功能可以以不同于附图中所标注的顺序发生。例如, 两个连续的方框实际上可以基本 并行地执行, 它们有。
47、时也可以按相反的顺序执行, 这依所涉及的功能而定。也要注意的是, 框图和/或流程图中的每个方框、 以及框图和/或流程图中的方框的组合, 可以用执行规定 的功能或动作的专用的基于硬件的系统来实现, 或者可以用专用硬件与计算机指令的组合 来实现。 0044 在此示出的流程图只是一个实例。在此描述的这些图或步骤 (或操作) 可以存在许 多变化而不偏离本发明的精神。例如, 可以按不同的顺序执行步骤, 或者可以添加、 删除或 修改步骤。所有这些变化都被视为要求保护的本发明的一部分。 0045 尽管描述了本发明的优选实施例, 但所属技术领域的技术人员应该理解, 可以在 现在和将来进行各种落入下面权利要求范围的改进和增强。 这些权利要求应该被解释为维 护对最初描述的本发明的正确保护。 说 明 书 CN 103765402 A 10 1/4 页 11 图 1 说 明 书 附 图 CN 103765402 A 11 2/4 页 12 图 2 说 明 书 附 图 CN 103765402 A 12 3/4 页 13 图 3 图 4 说 明 书 附 图 CN 103765402 A 13 4/4 页 14 图 5 说 明 书 附 图 CN 103765402 A 14 。