一种war、jar程序包加解密方法、系统及介质技术方案

技术编号:37555934 阅读:13 留言:0更新日期:2023-05-15 07:39
本发明专利技术提供了一种war、jar程序包加解密方法、系统及介质,方法包括:获取待加密程序包;待加密程序包包括类加载器和源程序;采用加密算法对待加密程序包中所有class文件进行加密,以得到加密程序包;当对加密程序包进行解密时,利用JVM加载加密程序包,采用解密方法对加密程序包中的部分class文件进行解密,以得到类加载器以及部分源代码;采用解密后得到的类加载器加载加密程序包,采用解密方法对加密程序包中的剩余class文件进行解密,以得到全部源程序。该方法加密后的程序包无法被反编译,解密过程在内存中不落地,大大增加解密的安全性,加解密方法简单易上手。加解密方法简单易上手。加解密方法简单易上手。

【技术实现步骤摘要】
一种war、jar程序包加解密方法、系统及介质


[0001]本专利技术属于网络安全
,具体涉及一种war、jar程序包加解密方法、系统及介质。

技术介绍

[0002]当攻击者获得未进行加密和代码混淆的war、jar程序包后,可以通过工具对war、jar程序包进行反编译,获得相关源代码。所以规避应用程序包被获取源码已成为业内亟需解决的问题。
[0003]目前war、jar程序包加密主要是对类(class)文件进行加密,加密完成后再编译成程序包,当运行解密后的程序包时,通过自定义的类加载器(classloader)进行解密和加载,从而实现加密程序的运行。但是这种方法存在以下缺陷:一旦类加载器被反编译,意味着所有class文件都会被解密出来,安全性不能获得保障。

技术实现思路

[0004]针对现有技术中的缺陷,本专利技术提供一种war、jar程序包加解密方法、系统及介质,提高了加解密过程的安全性。
[0005]第一方面,一种war、jar程序包加解密方法,包括:
[0006]获取待加密程序包;待加密程序包包括类加载器和源程序;
[0007]采用加密算法对待加密程序包中所有class文件进行加密,以得到加密程序包;
[0008]当对加密程序包进行解密时,利用JVM加载加密程序包,采用解密方法对加密程序包中的部分class文件进行解密,以得到类加载器以及部分源代码;
[0009]采用解密后得到的类加载器加载加密程序包,采用解密方法对加密程序包中的剩余class文件进行解密,以得到全部源程序。
[0010]进一步地,加密算法包括:
[0011]解析出class文件的常量池;
[0012]遍历常量池中所有常量类型,当存在常量类型为CONSTANT_Methodref_info时,分别对常量类型为CONSTANT_Class_info和CONSTANT_NameAndType的常量值逐位减N。
[0013]进一步地,利用JVM加载加密程序包具体包括:
[0014]设置JVM中类文件加载的钩子函数;
[0015]利用钩子函数将加密程序包加载进JVM。
[0016]进一步地,解密方法包括:
[0017]解析出class文件的常量池;
[0018]遍历常量池中所有常量类型,当存在常量类型为CONSTANT_Methodref_info时,分别对常量类型为CONSTANT_Class_info和CONSTANT_NameAndType的常量值逐位加N。
[0019]进一步地,类加载器中加载有解密方法。
[0020]进一步地,源程序包括JVM启动参数。
[0021]第二方面,一种war、jar程序包加解密系统,包括用于执行如第一方面方法的单元。
[0022]第三方面,一种war、jar程序包加解密系统,包括处理器和存储器,处理器和存储器相互连接,其中,存储器用于存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用程序指令,执行第一方面的方法。
[0023]第四方面,一种计算机可读存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时使处理器执行第一方面的方法。
[0024]由上述技术方案可知,本专利技术提供的war、jar程序包加解密方法、系统及介质,使用加密算法对类文件进行加密,最后通过JVM和类加载器进行解密,完成对jar、war程序包的加解密。该方法加密后的程序包无法被反编译,解密过程在内存中不落地,大大增加解密的安全性,加解密方法简单易上手。
附图说明
[0025]为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
[0026]图1为实施例提供的war、jar程序包加解密方法的流程图。
[0027]图2为实施例提供的加密方法的流程图。
[0028]图3为实施例提供的JVM解密方法的流程图。
[0029]图4为实施例提供的Web容器解密方法的流程图。
具体实施方式
[0030]下面将结合附图对本专利技术技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本专利技术的技术方案,因此只作为示例,而不能以此来限制本专利技术的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本专利技术所属领域技术人员所理解的通常意义。
[0031]应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0032]还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本专利技术。如在本专利技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0033]如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0034]实施例:
[0035]一种war、jar程序包加解密方法,包括:
[0036]获取待加密程序包;待加密程序包包括类加载器和源程序;
[0037]采用加密算法对待加密程序包中所有class文件进行加密,以得到加密程序包;
[0038]当对加密程序包进行解密时,利用JVM(内存模型)加载加密程序包,采用解密方法对加密程序包中的部分class文件进行解密,以得到类加载器以及部分源代码;
[0039]采用解密后得到的类加载器加载加密程序包,采用解密方法对加密程序包中的剩余class文件进行解密,以得到全部源程序。
[0040]在本实施例中,待加密程序包中的源程序可以为war或jar程序。参见图1,该方法当获得待加密程序包后,利用加密程序加密待加密程序包中class文件,将得到的加密程序包放入tomcat容器中等待被加载。在进行解密时,JVM加载加密程序包,并由agent代理执行解密。该方法在加载程序包时先进行解密,解密过程不需要对数据进行持久化,仅在内存找那个执行即可,实现了数据不落地。
[0041]在本实施例中,参见图2,在进行加密时,该方法首先使用命令解压war、jar程序包,遍历war、jar程序包中的文件,当文件为class文件时,调用加密算法加密class文件,当完成所有class文件的加密后本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种war、jar程序包加解密方法,其特征在于,包括:获取待加密程序包;所述待加密程序包包括类加载器和源程序;采用加密算法对所述待加密程序包中所有class文件进行加密,以得到加密程序包;当对所述加密程序包进行解密时,利用JVM加载所述加密程序包,采用解密方法对所述加密程序包中的部分class文件进行解密,以得到所述类加载器以及部分所述源代码;采用解密后得到的所述类加载器加载所述加密程序包,采用解密方法对所述加密程序包中的剩余class文件进行解密,以得到全部所述源程序。2.根据权利要求1所述war、jar程序包加解密方法,其特征在于,所述加密算法包括:解析出所述class文件的常量池;遍历所述常量池中所有常量类型,当存在常量类型为CONSTANT_Methodref_info时,分别对常量类型为CONSTANT_Class_info和CONSTANT_NameAndType的常量值逐位减N。3.根据权利要求2所述war、jar程序包加解密方法,其特征在于,所述利用JVM加载所述加密程序包具体包括:设置JVM中类文件加载的钩子函数;利用所述钩子函数将所述加密程序包加载进所述JVM。4.根据权利要求2所述war、jar程序包加解密方法,其特征在于,所述解密方...

【专利技术属性】
技术研发人员:刘乾斌汪善富任艳王志祝青柳
申请(专利权)人:深圳市联软科技股份有限公司
类型:发明
国别省市:

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

1