一种java程序代码保护方法、装置、设备及存储介质制造方法及图纸

技术编号:33378108 阅读:47 留言:0更新日期:2022-05-11 22:46
本发明专利技术涉及一种java程序代码保护方法、装置、设备及存储介质,其包括建立加密jar包,并将所述加密jar包存储至待调用文件夹;根据所述待调用文件夹中的加密jar包,对java程序加载器进行修改;根据修改后的所述java程序加载器,将待加密的java程序代码进行加密;修改JVM的class解密组件,对加密后的java程序代码进行解密。本发明专利技术提供的一种java程序代码保护方法、装置、设备及存储介质,通过建立加密jar包,基于加密jar包对程序加载器进行修改,再根据修改后的程序加载器对待加密的java程序代码进行加密,并修改class解密组件,对加密后的java程序代码进行解密,提高了导出字节码的难度,减小了程序报错的概率。减小了程序报错的概率。减小了程序报错的概率。

【技术实现步骤摘要】
一种java程序代码保护方法、装置、设备及存储介质


[0001]本专利技术涉及信息安全
,尤其涉及一种java程序代码保护方法、装置、设备及存储介质。

技术介绍

[0002]由于java程序是由编译生成的字节码在虚拟机上执行,代码非常容易被反编译,常用的代码保护手段有代码混淆、class加密等。代码混淆是将程序源码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。java程序代码混淆常用的手段是将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字,使得阅读的人无法根据名字猜测其用途。
[0003]class文件由于可以进行反编译,对信息系统核心关键的模块来说,可能会造成技术的泄漏。目前常用的class文件加密的方式是使用加密算法(DES、AES、RSA等)加密编译后的字节码文件,然后在程序加载前进行解密。
[0004]class加密常用的技术手段自定义一个类加载器Classloader,在这个类加载器中解密class文件。这种方案问题很明显,类加载器是整个加密环节的薄弱点,一旦类加载器文件被反编译,class加密就形同虚设。好点的方案是把类加载器也进行加密,然后使用jvmti技术,c++编写Agent.dll或so组件去解密类加载器class,即使是这样,但也完全可以从java层的Classloader在Agent后拿到解密后的class,根本不安全。甚至改一下本地jre的Classloader的jar源码,也能直接dump到解密后的class,或者从java进程中直接读所有的class,运行时候的class是完全没有加密的,所以也不存在任何安全性。

技术实现思路

[0005]有鉴于此,有必要提供一种java程序代码保护方法、装置、设备及存储介质,用以解决现有技术中代码混淆难以理解以及单一的class加密易被破解的问题。
[0006]为达到上述技术目的,本专利技术采取了以下技术方案:
[0007]第一方面,本专利技术提供了一种java程序代码保护方法,包括:
[0008]建立加密jar包,并将加密jar包存储至待调用文件夹;
[0009]根据待调用文件夹中的加密jar包,对java程序加载器进行修改;
[0010]根据修改后的java程序加载器,将待加密的java程序代码进行加密;
[0011]修改JVM的class解密组件,对加密后的java程序代码进行解密。
[0012]优选的,建立加密jar包,包括:建立认证加密的java工程,并将认证加密的java工程编译打包成加密jar包。
[0013]优选的,根据待调用文件夹中的加密jar包,对java程序加载器进行修改,包括:将加密jar包覆盖原有的程序加载器,对原有的程序加载器进行修改。
[0014]优选的,根据待调用文件夹中的加密jar包,对java程序加载器进行修改之后,包括:通过自定义的预设算法以及加密jar包,将JVM的class解密组件进行修改。
[0015]优选的,通过自定义的预设算法以及加密jar包,将JVM的class解密组件进行修改之前,还包括:将加密jar包加载至预设内存区域。
[0016]优选的,根据修改后的java程序加载器,将待加密的java程序代码进行加密,包括:通过修改后的程序加载器,将待加密的java程序代码进行加密。
[0017]优选的,修改JVM的class解密组件,对加密后的java程序代码进行解密,包括:根据修改后JVM的class解密组件,将java程序加载器加密的文件进行解密。
[0018]第二方面,本专利技术还提供了一种java程序代码保护装置,包括:
[0019]建立模块,用于建立加密jar包,并将加密jar包存储至待调用文件夹;
[0020]修改模块,用于根据待调用文件夹中的加密jar包,对java程序加载器进行修改;
[0021]加密模块,用于根据修改后的java程序加载器,将待加密的java程序代码进行加密;
[0022]解密模块,用于修改JVM的class解密组件,对加密后的java程序代码进行解密。
[0023]第三方面,本专利技术还提供了一种电子设备,包括存储器和处理器,其中,
[0024]存储器,用于存储程序;
[0025]处理器,与存储器耦合,用于执行存储器中存储的程序,以实现上述任一种实现方式中的java程序代码保护方法中的步骤。
[0026]第四方面,本专利技术还提供了一种计算机可读存储介质,用于存储计算机可读取的程序或指令,程序或指令被处理器执行时,能够实现上述任一种实现方式中的java程序代码保护方法中的步骤。
[0027]采用上述实施例的有益效果是:本专利技术提供的一种java程序代码保护方法、装置、设备及存储介质,通过建立加密jar包,基于加密jar包对程序加载器进行修改,再根据修改后的程序加载器对待加密的java程序代码进行加密,并修改class解密组件,对加密后的java程序代码进行解密,提高了导出字节码的难度,减小了程序报错的概率。
附图说明
[0028]图1为本专利技术提供的java程序代码保护方法的一实施例的流程示意图;
[0029]图2为本专利技术提供的java程序代码保护装置的一实施例的结构示意图;
[0030]图3为本专利技术实施例提供的java程序代码保护电子设备的结构示意图。
具体实施方式
[0031]下面结合附图来具体描述本专利技术的优选实施例,其中,附图构成本申请一部分,并与本专利技术的实施例一起用于阐释本专利技术的原理,并非用于限定本专利技术的范围。
[0032]在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0033]在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本专利技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0034]本专利技术提供了一种java程序代码保护方法、装置、设备及存储介质,以下分别进行说明。
[0035]请参阅图1,图1为本专利技术提供的java程序代码保护方法的一实施例的流程示意图,本专利技术的一个具体实施例,公开了一种java程序代码保护方法,包括:
[0036]S101、建立加密jar包,并将加密jar包存储至待调用文件夹;
[0037]S102、根据待调用文件夹中的加密jar包,对java程序加载器进行修改;
[0038]S103、根据修改后的java程序加载器,将待加密的java程序代码进行加密;
[0039]S104、修改JVM的class解密组件,对加密后的java程序代码进行解密。
[0040]在本专利技术的具体的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种java程序代码保护方法,其特征在于,包括:建立加密jar包,并将所述加密jar包存储至待调用文件夹;根据所述待调用文件夹中的加密jar包,对java程序加载器进行修改;根据修改后的所述java程序加载器,将待加密的java程序代码进行加密;修改JVM的class解密组件,对加密后的java程序代码进行解密。2.根据权利要求1所述的java程序代码保护方法,其特征在于,所述建立加密jar包,包括:建立认证加密的java工程,并将所述认证加密的java工程编译打包成所述加密jar包。3.根据权利要求1所述的java程序代码保护方法,其特征在于,所述根据所述待调用文件夹中的加密jar包,对java程序加载器进行修改,包括:将所述加密jar包覆盖原有的程序加载器,对原有的程序加载器进行修改。4.根据权利要求1所述的java程序代码保护方法,其特征在于,所述根据所述待调用文件夹中的加密jar包,对java程序加载器进行修改之后,包括:通过自定义的预设算法以及所述加密jar包,将所述JVM的class解密组件进行修改。5.根据权利要求4所述的java程序代码保护方法,其特征在于,所述通过自定义的预设算法以及所述加密jar包,将所述JVM的class解密组件进行修改之前,还包括:将所述加密jar包加载至预设内存区域。6.根据权利要求3所述的java程序代码保护方法,其特征在于,所述根...

【专利技术属性】
技术研发人员:李成林段攀邵宗前石元春
申请(专利权)人:武汉达梦数据库股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1