[发明专利]用于代码迷惑的方法及设备有效
申请号: | 200980132311.0 | 申请日: | 2009-08-17 |
公开(公告)号: | CN102132289A | 公开(公告)日: | 2011-07-20 |
发明(设计)人: | 安托万.蒙西夫罗特;费边.拉霍德雷 | 申请(专利权)人: | 汤姆森特许公司 |
主分类号: | G06F21/22 | 分类号: | G06F21/22;G06F21/00 |
代理公司: | 北京市柳沈律师事务所 11105 | 代理人: | 吕晓章 |
地址: | 法国伊西*** | 国省代码: | 法国;FR |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 代码 迷惑 方法 设备 | ||
技术领域
本发明总地涉及软件,并且具体地涉及迷惑的(obfuscated)软件。
背景技术
本部分旨在向读者介绍可能与在下文描述和/或请求保护的本发明的各个方面有关的技术的各个方面。相信该讨论有助于向读者提供背景信息以促进对本发明各个方面的更好的理解。相应地,应当理解的是要鉴于以上来阅读这些说明,而不是将其承认为现有技术。
在“Obfuscation of Executable Code to Improve Resistance to StaticDisassembly”中,第10届ACM Conference of Computer and CommunicationsSecurity(CCS),第290-299页,2003年10月,Linn与Debray建议使用两个主要技术来扰乱(confuse)反汇编器。第一个技术是插入在正常运行时间执行期间不可抵达的地方插入的垃圾代码字节。第二种技术使用分支函数(branch function)以更改规则的例程调用。稍微简化一些,分支函数依赖函数的值(诸如关于调用指令的位置的散列(hash)值)来确定目标。在运行时间处,可容易地从堆栈顶部确定该位置。另外,分支函数也通过偏移量更改返回地址,这使得利用垃圾代码来填充介入空间(intervene space)成为可能。
在“Proceedings of the 13th USENIX Security Symposium”(2004年8月9日-13日,美国加利福尼亚州圣地亚哥)中,Kruegel等人提出了一种解决方案以克服Linn与Debray提出的迷惑方案。作者观察到Linn与Debray的分支函数本质上是一种例程,其地址在作为输入参数而在堆栈顶部传递的调用指令之后。于是,分支函数不依赖于动态输入,由于其输出依赖于单一输入参数并且在二进制初始化的数据段中呈现一些静态查找表格,因此可以模拟分支函数。从而可计算偏移量,这使得反汇编器能够跳过垃圾代码并从下一有效指令继续。
本领域技术人员将认识到,需要一种可对抗Kruegel等人提供的反汇编技术的迷惑方法。
在US 2006/0253687中,Jakubowski与Jacob提出了一种代码迷惑方法,除了别的以外,其中使用分支函数以决定跳转到什么指令。与Linn与Debray的差别是,Jakubowski与Jacob的方法使用了采取动态输入的函数,这使得即便静态地对代码进行反汇编不是不可能的,但也是非常困难的。
C.Collberg等人在“Dynamic Path-Based Software Watermarking”的第4部分(ACM Sigplan Notices,ACM Association for Computing Machinery,美国,纽约州,纽约市,XP009084970)中提出了一种类似的解决方案。他们的解决方案采用了嵌套分支函数,其中由于“最内部的”函数使用返回地址的散列法以生成新的返回地址,所以该“最内部的”函数是动态的。
作为现有技术,US 2008/0148061提出了另一类似解决方案,其中,通过调用访问数据表格的入口的完整性函数(integrity function)代替了跳转,并且对入口的值进行散列以确定返回地址。
本发明提供对于Linn与Debray的方法的改进,该改进同时作为其它现有技术方法的替代物。如果可以使用多个方法(有利地,对其进行组合),则代码迷惑变得更加有效,本领域技术人员将认识到存在对这样一种可替换解决方案的需要。
发明内容
在第一方面,本发明针对一种用于迷惑编译的计算机代码的方法,所述编译的计算机代码包括以多个基本块组织的计算机代码指令。利用具有至少一个参数的函数调用来替换第一基本块中的跳转指令,其中该函数调用在执行时依赖于该参数确定要执行的下一函数的地址。向编译的计算机代码插入向参数分配值的指令,所述参数的值使得由函数调用所确定的地址与被替换的跳转指令的目的地地址对应。将该分配指令插入至与第一基本块不同的并意图在第一基本块之前执行的第二基本块中的计算机代码中。
在第一优选实施例中,跳转函数为无条件跳转函数。
在第二优选实施例中,在之前的包括有条件跳转指令的第三基本块与第一基本块之间的执行路径中选择第二基本块。使用用于编译的计算机代码的控制流程图中的信息来选择第二基本块是有利的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汤姆森特许公司,未经汤姆森特许公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200980132311.0/2.html,转载请声明来源钻瓜专利网。