彭凯
【摘要】 在软件应用当中,代码混淆技术是保护软件安全的一项重要技术,在软件安全领域当中,具有十分重要的意义,受到了很多软件开发企业的重视。但是,由于其在我国产生的时间较晚,属于一项新型的技术,因此在很多方面还不够成熟。因此,本文对基于JAVA语言的混淆器设计模型及设计思路进行了研究,进而对主要的设计模块进行了分析。
【关键词】 JAVA语言 混淆器 设计模型
随着软件事业的不断发展和应用,产生了很大的利润,因此逐渐出现了很多盗版软件,对软件开发企业的利益造成了很大的损害,也影响了软件产业的健康发展。代码混淆技术是目前保护软件版权的重要技术,它能够混淆转换源程序,产生性能等价的混淆代码,使逆向工程的难度增加,对于软件盗版是一种很有效的打击手段。
一、基于JAVA语言混淆器的设计思路
1.1防御静态分析
1、设计混淆。设计混淆是在外形方面进行混淆,它作为第一道保护软件的措施,目前已经相对成熟。主要方式为改名和删除操作,以此来混淆转换代码。2、类结构混淆。类结构混淆要首先融合或分裂软件的类结构,然后隐藏具体的类型,使系统类图的结构得到破坏,进而对真正的设计目的进行隐藏,以完成相应的混淆转换。3、类内混淆。首先应当隐藏类内部的控制流跳转,通过类内部的方法进行融合,防止调用重构方法。然后进一步缩小粒度,考虑内部循环操作[1]。再加入不透明谓词在程序控制流当中。最后交换整个方法的控制流,使攻击者无法理解程序控制流的转换,从而达到保护软件安全的目的。4、数据混淆。在类内部方法间和方法内完成混淆转换控制流之后,虽然能够起到有效的软件保护作用,但是一些重要数据仍然显示存在于程序之中。而软件盗版者恰恰极为重视这一方面,因此,还需要混淆转换数据,例如变量重组混淆、数组重构混淆等,将关键性数据进行隐藏。5、预防性混淆。预防性混淆的主要目的是为了防止反编译算、反汇编等方法进行软件盗版,对这些方法的实际应用进行阻止,以达到对软件安全的保护。
1.2防御动态分析
防御动态主要是将一些动态运行过程中的标记性信息和程序中的调试信息进行删除,同时将反跟踪调试代码进行嵌入。不过,在当前的实际应用中,防御动态分析技术还缺乏足够的成熟性。由于它主要是用来对相应程序的运行信息进行分析,而就目前的相关技术来说,要实现这一点还存在着很大的困难。因此,防御动态分析技术还需要不断的进行提高和完善,以达到更好的软件保护效果[2]。
二、混淆转换系统的设计
1、预处理模块的设计。在混淆转换系统中,开始运行的是模块预处理模块,主要是预先分析源程序代码,在选择阶段提供相应的信息给混淆转换算法选择。程序代码分析技术是预处理模块的主要技术,通过预处理模块的数据流程分析、控制流程分析和其它基本分析,源程序会生成JAVA类关系树、数据流程图、程序符号表等程序信息,在以后的程序分析中,以这些信息作为主要信息。预处理模块中包含了数据流程、控制流程、基本程序等几种分析方法,每种分析方法都具有不同的作用,各种方法的合作,共同完成了预处理模块的设计[3]。
2、混淆算法池的设计。由于软件的种类很多,因此没有任何一种混淆算法能够满足所有种类软件的安全要求。对此,应当将几种混淆算法进行组合,形成混淆算法池,这样才能有效的对各类软件的安全进行保护。要进行这样的设计,就应当具有一个能够对大量的混淆算法进行管理和储存的模块存在于代码混淆转换系统当中。其中的基本操作对象就是各种混淆算法,混淆算法池的任务是对这些混淆算法进行运用、存储和管理。
3、混淆转换执行器的设计。在混淆算法的应用中,混淆转换执行器应当具有选择功能以及排序功能[4]。在混淆转换执行器的设计过程中,需要设计混淆算法应用模块和混淆算法选择模块。将混淆算法池中选择的混淆算法和预处理模块分析处理后的程序信息输入到混淆转换执行器当中,混淆算法选择模块对最为合适的混淆算法进行选择和组合,实现程序的混淆转换。在每次执行完混淆算法之后,如果并没有达到预期的性能要求,将会返回混淆算法应用模块当中,重新选择和组合混淆算法进行混淆转换,直到最后达到要求,才会输出混淆之后的程序信息。
结论:在当今社会中,随着计算机技术和信息技术的快速发展和广泛应用,软件产业在迅速发展的同时产生了十分可观的利润,这就给盗版软件的出现创造了可能。为此,应当加强对软件安全的保护,降低盗版软件带来的危害。基于JAVA语言的混淆技术是一种十分有效的技术,本文对其设计思想及设计模块进行了分析,希望能够推动软件安全保护的进一步发展。
参 考 文 献
[1]张宝国. 基于JAVA的代码混淆研究[D].电子科技大学,2012.
[2]杨乐. 用于软件保护的代码混淆技术研究[D].江西师范大学,2013.
[3]李旭. 基于Java语言的操作系统设计与实现技术研究[D].国防科学技术大学,2013.
[4]李勇. 基于Windows平台的目标代码混淆[D].电子科技大学,2012.