本发明属于软件开发,涉及一种基于代码混淆技术的java源代码保护模块。
背景技术:
1、计算机源程序代码是使用开发工具所支持的语言编写的文件,是一组由字符、符号或信号码元以离散形式表示信息的明确规则体系;代码是构建软件的基本要素,计算机通过代码构建的软件可以实现不同的功能,为减少代码的安全缺陷、保障软件功能的正常运行,软件代码保护至关重要。
2、在软件开发的过程中,工程师会寻找一些开源产品以节约成本,但在实际应用、分发授权、许可控制的过程中,仍不希望自己的成果被窃取。但在常见的开发语言中,无论是.net还是java,甚至人气排名第一的javascript都存在容易被反编译的风险,如何保护代码不受窃取,如何应用程序不受破坏,是所有开发人员最为关系的话题
3、由于java语言具有堆栈式指令集、每个类被编译成一个单独文件、编译生成的class文件中保留着很多源代码的信息等特点,使得java中间代码的反编译变得非常容易。于是,反编译成为保护java程序安全最大的一种挑战。
技术实现思路
1、本发明的目的是针对java语言容易被反编译的特点,提供一种基于代码混淆技术的java源代码保护模块,保护java程序开发者的合法权益免受侵害。
2、本发明的技术方案如下:
3、一种基于代码混淆技术的java源代码保护模块,其特征在于,包括规格化处理器、词法分析器、语法分析器、编码器、单词替换器和干扰代码添加器,其中:
4、(1)规格化处理器将java源代码中的注释部分和空白删除,并对源代码进行规范化处理,使其更方便词法分析器的操作;单词链表是本系统的存储核心,用于存储分割出来的各种单词及其属性;
5、(2)词法分析器使用java语言的命名规则对源代码中的词汇进行分离,然后将得到的所有变量名、方法名和类名进行分类,最后存储在单词链表中供编码器和语法分析器使用;
6、(3)语法分析器根据java语言的语法规则,重新对单词链表中记录的各种单词进行分类,标识出自定义类名,系统类名、自定义方法名以及系统方法名,并修改单词链表,删除系统类库中定义的类名、方法名和变量名;
7、(4)编码器对单词链表中可以混淆的各个单词进行统一编码,以得到与程序段意义没有关系且难以识别的名称;
8、(5)单词替换器在源代码文件中把各种自定义变量名、类名、方法名用与其相对应的编码替换;
9、(6)干扰代码添加器在关键部分添加一些无关代码,虽然这些代码可能自始至终都不会被调用或者通过运算后的值并没有改变,但是可以扰乱读者的思路,降低代码可读性。
10、本发明通过对源代码进行预处理、词法分析、语法分析以及语义分析,对自定义类名、方法名和变量名用“i”和“i”组成的编码进行替换,并在源码文件适当位置加入干扰代码,从而设计并实现了一种基于代码混淆技术的java源代码保护模块。该混淆模块还可与字节码加密软件结合使用,进一步保护java源代码。
1.一种基于代码混淆技术的java源代码保护模块,其特征在于,包括规格化处理器、词法分析器、语法分析器、编码器、单词替换器和干扰代码添加器,其中: