对计算机程序代码的执行轨迹进行模糊化制造技术

技术编号:4648045 阅读:301 留言:0更新日期:2012-04-11 18:40
一种计算机实现的生成篡改保护的计算机程序代码的方法。所述方法包括获得计算机程序代码的表示,所述计算机程序代码适于使得数据处理系统以第一执行次序执行多个计算任务,每个计算任务在所述计算机程序代码的表示中由至少一个程序语句来表示;获得所述计算任务的多个可替换执行次序;生成程序代码的可执行表示,其适于使得数据处理系统从所述多个可替换执行次序中选择随机化执行次序并且以所选择的随机化执行次序执行计算任务。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及计算机程序代码的篡改保护,特别是通过对计算机程序代码的执行轨迹(execution trace )进行才莫糊化(obfuscate)。
技术介绍
软件篡改是一种攻击方式,其目的在于改变一件软件的运行方式以便为攻击者带来违法利益。篡改的目标可以是避开/禁用复制保护或安全机制以提取秘密或受版权保护的材料,或者引入诸如计算机病毒之类的恶意代码。在许多情况下,违法利益会为软件生产者带来实质性的财务损失。因此,攻击者和软件供应商预期会分别努力破坏和改进针对软件篡改的保护机制。在移动电话的背景下,SIM锁定或诸如数字权利管理(DRM)之类的其它敏感软件组件的保护特别受到关注。此外,其它软件实体的篡改保护和/或出于其它目的和/或与之相结合使用会是有益的。为了修改软件组件,攻击者通常必须至少对软件组件如何工作有部分了解。通过使得反向工程更加困难,软件篡改会由此被延迟(如果没有被阻止的话)。使得软件更加难以分析的变换对于这一目的是有用的;这样的变换通常被称作模糊化(obfuscation)。用于对软件进行反向工程的技术可大致分为两组技术静态(或"离线")代码分析和动态(或"在线(live),,)代码分析。当执行动态分析时,软件在其执行时被观察。相反,静态分析通常限于程的一种技术是执行轨迹的比较。'、^'一、^ 一 "令的^储器地址的序列:一 由此可通过运行程;来收集执行轨:,;列如通过使用特定硬件支持(所谓的轨迹緩冲器)或通过基于软件的地址记录。使用程序的执行轨迹和可执行代码,能够据此重建所执行指令的实际序列。5通过提供两个激励集合并且对所产生的执行轨迹中的差异进行比较,攻击者能够获得对软件组件的了解。特别地,执行轨迹的比较可以识别程序的关键决策点。在移动设备的SIM锁定和DRM解决方案的背景下,关键决策点的示例是用于校正签名或校验和的测试。例如,攻击者可以通过比较两个不同移动设备(例如,运营商锁定设备和未被运营商锁定的设备)所运行的软件的执行轨迹,以便获得有关程序的哪些部分与SIM锁定功能相关的信息。之前使通过动态分析进行反向工程更为困难的尝试包括尝试限制攻击者在软件执行时对其进行观察的机会。然而,这样的对抗措施这种对抗措施的 一 个示例包括对可执行代码进行加密以及使用将代码的解密和执行相结合的特定硬件。即使适当实施的基于硬件的解密技术能够提供良好的保护,但是这种保护也是以额外的特定硬件为代价来实现的。被称为反调试器(anti-debugger)技术的另 一种方法的目的在于使得观察特定调试器中的程序执行的过程复杂化。在一些平台上,执行代码能够向操作系统查询附于该过程的可能调试器,并且例如如果是这种情况就终止。另 一种选择是对调试器所使用的技术进行干扰,例如通过篡改断点的设置。然而,反调试器技术专用于特定调制器而且并不提供通用的篡改保护技术。此外,在调试嵌入式系统时通常使用指令集激励器和硬件支持的调试器,由此降低了反调试器技术的实际有用性。此外,使用完全以硬件实施的轨迹缓沖器仍然可以收集执行轨迹。模糊化是一种用来使代码复杂化的技术。模糊化使得代码在其被反编译时更加难以被理解,但是其通常对于代码的功能没有影响。能够使用程序的模糊化通过使得程序更加难以进行反向工程来对它们进行保护。已经提出了多种模糊化技术。由Tatsuya Toyofuku等人在TEnokido等(Eds ) : EUC Workshops 2005. LNCS 3823,第916-925页发表的文章"Program Obfuscation Scheme Using Random Numbers toComplicate Control Flow"提出了一种这样的模糊化机制。然而,该方法被报告为易于受到动态分析的攻击。WOO 1/69355公开了一种用于通过在程序中插入附加例程以及多个随机建立的附加控制流来向计算机程序中嵌入水印的方法,由此产生具有相应控制流的程序的特定(即带有水印的)版本。美国专利6,668,325 ,口 Christian S. Collberg和Clark 丁homborson的文章 "Watermarking, Tamper-proofing, and Obfuscation - Tools forSoftware protection" , IEEE Transactions on Software engineering, 28:6(2002年6月)描述了多种模糊化变换。在这样的变换上引入冗余的if语句。所述if语句的条件是所谓的不透明谓词(opaque predicate ),其具有在程序被模糊化但是难以通过代码的静态分析来识别时已知的某种属性。例如永远评估为例如TRUE (真)的不透明谓词可以用在这样的if语句中。结果,在模糊化时知道仅有if语句的一个分支将会被执行。因此,在模糊化期间,可以将待执行的代码插入该分支,而决不会执行的其它分支可包括某种任意的"虚设(dummy)"代码。以上现有技术文档进一步描述了使用其结果可以是TRUE或FALSE(假)的不透明谓词以便选择给定计算任务的两种可替换实例之一 。然而,即使这种技术使得代码的静态分析更为困难,但是其并未有效增加试图识别关键决策点的动态分析的难度。美国专利6,668,325中所公开的 一种特定变换被称作有序变换(ordering transformation)并且包括对源代码项目(表达式内的项目、基本块内的语句等)的随机化放置,从而防止代码的反向工程。对源代码项目的重排序基于依赖性分析来执行,所述依赖性分析被执行以确定哪些重排序在技术上是有效的。因此,该现有技术的变换过程生成待执行的源代码的 一种技术上可能的重排序。结果所产生的可执行代码将表示该所生成的排序。然而,其仍然存在以下一般问题,4是供了一种有效的方法,用于对程序代码进行模糊化以便使得更加难以通过分析程序的执行轨迹来获得有用信息,例如以便识别感兴趣的决策点和/或其它关键点。
技术实现思路
通过一种计算机实现的生成篡改保护的计算机程序代码的方法来解决以上和其它问题,所述方法包括-获得计算机程序代码的表示,所述计算机程序代码适于使得数据处理系统以第 一 执行次序执行多个计算任务,每个计算任务在所述计算机程序代码的表示中由至少 一个程序语句来表示; -获得所述计算任务的多个可替换执行次序; -生成程序代码的可执行表示,其适于使得数据处理系统从所述执行;1序执行计算任务。、 "、、'''这里所描述的方法实施例提供了软件组件的程序代码(例如源代码)到经修改代码的变换,当所述代码被执行时,这产生经有效地模糊化的执行轨迹。特别地,经变换的代码使得执行结果代码的计算机在多个排序中选择一种排序,即在运行时选择多种可能排序之一,而不是在变换和代码生成过程期间事先确定为一种特定排序。因此,由于排序可以因 执行而异,所以在利用不同输入来执行代码时难以获得有用信息(如 果不是不可能的话),因此由于在使用不同输入执行软件时执行轨迹 中的差异而防止了关键决策点可被轻易检测到。因此,这里所描述的方法实施例以这样的方式对软件组件的输入 表示进行变换增加比较执行轨迹所需的努力。相关差异被隐藏在大 量表面上随机的差异之中。因本文档来自技高网
...

【技术保护点】
一种计算机实现的用于生成篡改保护的计算机程序代码的方法,所述方法包括: -获得计算机程序代码的表示,所述计算机程序代码适于使得数据处理系统以第一执行次序执行多个计算任务,每个计算任务在所述计算机程序代码的表示中由至少一个程序语句来表示 ; -获得计算任务的多个可替换执行次序; -生成程序代码的可执行表示,其适于使得数据处理系统从所述多个可替换执行次序中选择随机化执行次序并且以所选择的随机化执行次序执行计算任务。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:J埃克B约翰逊C冯普拉坦
申请(专利权)人:艾利森电话股份有限公司
类型:发明
国别省市:SE[瑞典]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1