关键词:
反编译
代码混淆
标识符重命名混淆
混淆工具
摘要:
由于Java程序很容易被反编译和逆向工程,使得保护知识产权和保密信息在不信任环境中不被窃取变得很困难,因此迫切需要有效的保护Java软件的方法。而目前最实用的解决方法就是对Java程序进行混淆。代码混淆技术就是在不改变语义的情况下,使得混淆后的程序很难被反编译工具破解或者破解后的程序可读性很差,从而达到保护Java软件的目的。目前,对代码混淆技术的研究主要集中在控制流混淆和数据流混淆上,这两种混淆技术在提高程序的复杂度和抗攻击能力的同时,增加了程序额外的执行开销,这种执行开销有时甚至会导致程序不能正常运行。
针对上面的情况,本文以保护Java软件、提高程序复杂度和抗攻击能力、同时不增加程序额外的执行开销为目的,深入研究了标识符重命名混淆技术,并设计实现了一种Java软件混淆工具。本文主要工作如下:
1.研究Java类文件、代码混淆技术及其研究现状,对现有的混淆技术进行详细的分类和比较,并在此基础之上针对控制流混淆和数据流混淆的不足,提出四种标识符重命名混淆算法,包括滥用标识符、重载无关联方法、非法标识符替换以及重写静态方法,并分析了四种算法对程序执行开销的影响。
2.设计并实现一种Java软件混淆工具——JIRO(Java Identifier RenamingObfuscator),该混淆工具主要包括代码优化和代码混淆两种功能,其中代码混淆功能模块所使用的关键技术是本文提出的四种标识符重命名混淆算法。
3.在JIRO上做大量实验,并结合实验从混淆变换的正确性、混淆变换的强度和混淆变换耐受性三个方面对JIRO的功能进行分析。根据统计得到的实验数据,分析JIRO对程序执行开销的影响,并对JIRO进行测试和对其应用情况进行分析。
论文工作表明,基于标识符重命名混淆技术的混淆工具JIRO,具有很好的混淆效果,同时没有增加程序的额外执行开销,能够有效的保护Java软件。