关键词:
JAVA代码
混淆技术
抗攻击能力
软件保护
摘要:
由于Sun公司已经免费提供JVM的源代码,并且Java源代码被编译成字节码存储在***文件中,而这些***文件格式的规范又是可公开获取的,这使得有技术背景的任何人都能很轻易地编写出可以处理、修改或转换.class文件的工具。虽然Java应用程序能够“编写一次,随处运行”,但这种环境的架构方式使Java程序远比本机应用程序更容易被黑客逆向工程。现在保护 Java程序比较实用的方法就是对 Java代码进行混淆变换,增加程序被逆向分析的难度,使其被反编译后可理解性很差,以此达到保护Java软件的目的。\n 目前,很多的代码混淆技术对代码进行混淆变换之后,虽然增加了 Java源程序的复杂度以及抗攻击能力,但与此同时也在很大程度上增加了程序的执行开销。为了提高基于垃圾代码的控制流混淆方法的优化效果,针对插入分支垃圾代码以及循环垃圾代码会引入大量的额外开销的问题,本文从软件保护中代码混淆技术出发,对代码混淆技术的研究现状和原理、混淆算法攻击以及基于控制流混淆技术进行了深入的探索和研究,提出基于 Java代码控制混淆中插入垃圾代码的改进方案。本文主要工作如下:\n 1.基于Java代码控制流混淆算法中,其插入分支垃圾代码,能够在一定程度上增加程序的复杂度,但是由于插入差异性较大的垃圾代码时,很容易被攻击者静态分析所识破,因此为了进一步增强 Java程序的安全性,本文提出所插入的垃圾代码必须具备一定的相关性,这样可以进一步增加Java软件被逆向分析的难度。\n 2.基于Java代码的控制流混淆算法中,所插入的分支垃圾代码以及循环垃圾代码,在程序执行时所有垃圾代码都会被执行,这会在很大程度上增加系统的开销,为此本文提出一种非全执行的控制流混淆算法。相比一般的控制流混淆算法,该算法既能在一定程度上保持原有程序的复杂度,又能不会给 Java程序带来过多的系统执行开销。\n 3.由于近几年一些主流的反编译软件其针对性极强,类型单一的混淆算法,已经不再能满足软件安全性的要求,本文提出引入标识符重名的混淆方法。标识符重命名方法与其他种类的混淆方法相比,其优势在于给系统带来的额外开销非常小,并且能为软件增加一定的安全性。\n 论文工作研究表明,新的混淆变换方法,不仅能在一定程度上保护 Java软件的安全,同时还能很好的保证软件的执行效率,具有较高的实用价值。