类分裂的代码混淆技术(1)
2014-10-18 01:10
导读:计算机应用论文论文,类分裂的代码混淆技术(1)怎么写,格式要求,写法技巧,科教论文网展示的这篇文章是很好的参考:摘 要 包含有大部分或全部源码信息的软件发行版本的普及,比如易被反编译成
摘 要 包含有大部分或全部源码信息的软件发行版本的普及,比如易被反编译成源码的Java字节代码,增加了软件被恶意逆向工程攻击的可能。文章介绍了面向对象语言的类分裂混淆方法,同时也给出了混淆技术的定义、分类和评判标准。 关键词 逆向工程;代码混淆;软件保护;类分裂1 引言 计算机软件的安全一直是软件企业和相关研究领域的关注重点,当前存在的软件保护技术分别有硬件辅助保护、序列号保护、加密保护、服务器认证、防篡改以及代码混淆等。随着JAVA语言、逆向工程的迅速发展和普遍运用以及恶意主机对软件的逆向分析等突出安全问题的不断涌现,使得代码混淆,这一新的保护软件安全的技术正越来越受到人们的重视。2 代码混淆的定义和分类2.1 代码混淆定义 给定一个程序P、策略T,经过混淆变换后得到程序P' (见图 1)。此过程称之为混淆变换,如果对程序进行一种功能保持的变换,变换后的程序拥有和原始程序相同的功能。更确切的说法应该包含以下两个条件:①如果P出错终止或终止失败,P'不一定终止。②P和P'在正常终止情况下,P'必须产生与P相同的输出。 所不同的是经过转换的P'相较P更难于被静态分析等逆向工程方法攻击,即使被反编译,生成的程序也难以被人阅读和理解。

图1 代码混淆2.2 代码混淆分类 根据混淆对象和对其进行操作的差别,可将代码混淆技术分为布局(layout)混淆、控制(control)混淆、数据(data)混淆、预防(preventive)混淆等几种。 (1)外形混淆。该类混淆主要包括对程序中的变量名、常量名、类名、方法名称等标识符作词法上的变换改名和删除程序中与执行无关的调试信息、注释、源码格式等。 (2)控制混淆。该类混淆的目的是使得攻击者对程序的控制流难以理解。主要包括打乱某段代码本身逻辑关系的聚集混淆(Aggregation Transformation)、把相关语句分散到程序不同位置并实现某项功能的次序混淆(Ordering Transformation)和隐藏真实执行路径的执行混淆(Computation Transformation)