一种字节码加密的方法、字节码解密的方法及终端技术

技术编号:21185033 阅读:45 留言:0更新日期:2019-05-22 15:38
本发明专利技术适用于计算机技术领域,提供了一种字节码加密的方法、字节码解密的方法及终端,该方法包括:检测到项目对象模型POM存在加密插件包时,基于预设属性配置POM中的待加密的目标字节码所属的目标Java包的路径;获取目标Java包,并将目标Java包打包生成jar包;根据jar包的包信息确定目标字节码对应的加密环境;通过Java类库调用动态库,为目标字节码设置与加密环境对应的预设参数;采用预设参数对应的加密算法对完成设置的目标字节码加密,生成加密jar包。上述方案,在不同加密环境下采用不同的加密算法对字节码进行加密,不容易被agent破解,有效地保护字节码文件,防止反编译,从而有效的保护了源代码。

A Byte Code Encryption Method, Byte Code Decryption Method and Terminal

The invention is applicable to the field of computer technology and provides a bytecode encryption method, a bytecode decryption method and a terminal. The method includes: configuring the path of the target Java package belonging to the target bytecode to be encrypted in the POM based on preset attributes when the encrypted plug-in package exists in the project object model POM is detected; acquiring the target Java package and packaging the target Java package to generate the jar package. The encrypted environment corresponding to the target bytecode is determined according to the package information of the jar package; the dynamic library is invoked through the Java class library to set the preset parameters corresponding to the encrypted environment for the target bytecode; and the encrypted jar package is generated by encrypting the target bytecode corresponding to the preset parameters using the encryption algorithm corresponding to the preset parameters. In the above scheme, different encryption algorithms are used to encrypt bytecode in different encryption environments. It is not easy to be cracked by agent. It can effectively protect bytecode files and prevent decompilation, thus effectively protect the source code.

【技术实现步骤摘要】
一种字节码加密的方法、字节码解密的方法及终端
本专利技术属于计算机
,尤其涉及一种字节码加密的方法、字节码解密的方法及终端。
技术介绍
Java源代码经过编译,生成字节码文件(后缀名为.class的文件),所生成的字节码文件在Java虚拟机中解释运行。由于字节码文件自描述性很强,保留了很多符号以及编译信息,导致字节码文件很容易被反编译成可读性很强的源代码,导致开发者的劳动成果被剽窃或者产品被篡改。现有技术中,通常通过对变量混淆或者打乱代码执行流程等方式对字节码文件加密,但是这样的加密方式很容易被agent破解,不能有效地保护字节码文件,不能有效地保护源代码。
技术实现思路
有鉴于此,本专利技术实施例提供了一种字节码加密的方法、字节码解密的方法及终端,以解决现用技术中通过传统的加密方式对字节码进行加密,导致字节码文件容易被破解,不能有效保护字节码文件,从而不能有效保护源代码的问题。本专利技术实施例的第一方面提供了一种字节码加密的方法,包括:当检测到项目对象模型POM存在加密插件包时,基于预设属性配置所述POM中的待加密的目标字节码所属的目标Java包的路径;根据所述路径获取所述目标Java包,并将所述目标Java包打包生成jar包;根据所述jar包的包信息确定所述目标字节码对应的加密环境;通过Java类库调用动态库,为所述目标字节码设置与所述加密环境对应的预设参数;不同的加密环境对应不同的预设参数;采用所述预设参数对应的加密算法对完成设置的所述目标字节码加密,生成加密jar包。本专利技术实施例的第二方面提供了一种字节码解密的方法,包括:在检测到用于启动已加密的目标jar包的启动指令时,获取所述目标jar包,并基于所述目标jar包的包信息确定所述目标jar包的加密环境;所述启动指令包含启动参数;根据所述目标jar包的加密环境,调用与所述加密环境对应的专用动态库;调用所述专用动态库访问虚拟机工具接口JVMTI,在所述JVMTI中采用第一解密算法对所述目标jar包解密,得到第一解密jar包;其中,所述第一解密算法用于解密Java类字节码且与所述加密环境对应;所述第一解密jar包含有解密后的Java类字节码以及spring加载类字节码;当检测到所述第一解密jar包中的所述spring加载类字节码未包含代理参数时,采用第二解密算法对所述spring加载类字节码进行解密,得到目标字节码;其中,所述第二解密算法用于解密所述spring加载类字节码且与所述加密环境对应,所述目标字节码包含解密后的Java类字节码以及解密后的spring加载类字节码。本专利技术实施例的第三方面提供了一种终端,该终端包括:配置单元,用于当检测到项目对象模型POM存在加密插件包时,基于预设属性配置所述POM中的待加密的目标字节码所属的目标Java包的路径;获取单元,用于根据所述路径获取所述目标Java包,并将所述目标Java包打包生成jar包;确定单元,用于根据所述jar包的包信息确定所述目标字节码对应的加密环境;设置单元,用于通过Java类库调用动态库,为所述目标字节码设置与所述加密环境对应的预设参数;不同的加密环境对应不同的预设参数;加密单元,用于采用所述预设参数对应的加密算法对完成设置的所述目标字节码加密,生成加密jar包。本专利技术实施例的第四方面提供了一种终端,该终端包括:检测单元,用于在检测到用于启动已加密的目标jar包的启动指令时,获取所述目标jar包,并基于所述目标jar包的包信息确定所述目标jar包的加密环境;所述启动指令包含启动参数;调用单元,用于根据所述目标jar包的加密环境,调用与所述加密环境对应的专用动态库;第一解密单元,用于调用所述专用动态库访问虚拟机工具接口JVMTI,在所述JVMTI中采用第一解密算法对所述目标jar包解密,得到第一解密jar包;其中,所述第一解密算法用于解密Java类字节码且与所述加密环境对应;所述第一解密jar包含有解密后的Java类字节码以及spring加载类字节码;第二解密单元,用于当检测到所述第一解密jar包中的所述spring加载类字节码未包含代理参数时,采用第二解密算法对所述spring加载类字节码进行解密,得到目标字节码;其中,所述第二解密算法用于解密所述spring加载类字节码且与所述加密环境对应,所述目标字节码包含解密后的Java类字节码以及解密后的spring加载类字节码。本专利技术实施例的第五方面提供了另一种终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储支持终端执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行以下步骤:当检测到项目对象模型POM存在加密插件包时,基于预设属性配置所述POM中的待加密的目标字节码所属的目标Java包的路径;根据所述路径获取所述目标Java包,并将所述目标Java包打包生成jar包;根据所述jar包的包信息确定所述目标字节码对应的加密环境;通过Java类库调用动态库,为所述目标字节码设置与所述加密环境对应的预设参数;不同的加密环境对应不同的预设参数;采用所述预设参数对应的加密算法对完成设置的所述目标字节码加密,生成加密jar包。本专利技术实施例的第六方面提供了另一种终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储支持终端执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行以下步骤:在检测到用于启动已加密的目标jar包的启动指令时,获取所述目标jar包,并基于所述目标jar包的包信息确定所述目标jar包的加密环境;所述启动指令包含启动参数;根据所述目标jar包的加密环境,调用与所述加密环境对应的专用动态库;调用所述专用动态库访问虚拟机工具接口JVMTI,在所述JVMTI中采用第一解密算法对所述目标jar包解密,得到第一解密jar包;其中,所述第一解密算法用于解密Java类字节码且与所述加密环境对应;所述第一解密jar包含有解密后的Java类字节码以及spring加载类字节码;当检测到所述第一解密jar包中的所述spring加载类字节码未包含代理参数时,采用第二解密算法对所述spring加载类字节码进行解密,得到目标字节码;其中,所述第二解密算法用于解密所述spring加载类字节码且与所述加密环境对应,所述目标字节码包含解密后的Java类字节码以及解密后的spring加载类字节码。本专利技术实施例的第七方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:当检测到项目对象模型POM存在加密插件包时,基于预设属性配置所述POM中的待加密的目标字节码所属的目标Java包的路径;根据所述路径获取所述目标Java包,并将所述目标Java包打包生成jar包;根据所述jar包的包信息确定所述目标字节码对应的加密环境;通过Java类库调用动态库,为所述目标字节码设置与所述加密环境对应的预设参数;不同的加密环境对应不同的预设参数;采用所述预设参数对应的加密算法对完成设置的所述目标字节码加密,生本文档来自技高网...

【技术保护点】
1.一种字节码加密的方法,其特征在于,包括:当检测到项目对象模型POM存在加密插件包时,基于预设属性配置所述POM中的待加密的目标字节码所属的目标Java包的路径;根据所述路径获取所述目标Java包,并将所述目标Java包打包生成jar包;根据所述jar包的包信息确定所述目标字节码对应的加密环境;通过Java类库调用动态库,为所述目标字节码设置与所述加密环境对应的预设参数;不同的加密环境对应不同的预设参数;采用所述预设参数对应的加密算法对完成设置的所述目标字节码加密,生成加密jar包。

【技术特征摘要】
1.一种字节码加密的方法,其特征在于,包括:当检测到项目对象模型POM存在加密插件包时,基于预设属性配置所述POM中的待加密的目标字节码所属的目标Java包的路径;根据所述路径获取所述目标Java包,并将所述目标Java包打包生成jar包;根据所述jar包的包信息确定所述目标字节码对应的加密环境;通过Java类库调用动态库,为所述目标字节码设置与所述加密环境对应的预设参数;不同的加密环境对应不同的预设参数;采用所述预设参数对应的加密算法对完成设置的所述目标字节码加密,生成加密jar包。2.如权利要求1所述的方法,其特征在于,所述包信息包括生成所述jar包的运行环境的标识以及所述jar包的属性信息;所述根据所述jar包的包信息确定所述目标字节码对应的加密环境,包括:根据所述包信息中的所述运行环境的标识或所述属性信息确定所述目标字节码对应的加密环境。3.如权利要求1所述的方法,其特征在于,所述通过Java类库调用动态库,为所述目标字节码设置与所述加密环境对应的预设参数,包括:通过Java类库调用动态库,基于所述动态库调用预设函数在所述目标字节码后添加与所述加密环境对应的预设参数。4.一种字节码解密的方法,其特征在于,包括:在检测到用于启动已加密的目标jar包的启动指令时,获取所述目标jar包,并基于所述目标jar包的包信息确定所述目标jar包的加密环境;所述启动指令包含启动参数;根据所述目标jar包的加密环境,调用与所述加密环境对应的专用动态库;调用所述专用动态库访问虚拟机工具接口JVMTI,在所述JVMTI中采用第一解密算法对所述目标jar包解密,得到第一解密jar包;其中,所述第一解密算法用于解密Java类字节码且与所述加密环境对应;所述第一解密jar包含有解密后的Java类字节码以及spring加载类字节码;当检测到所述第一解密jar包中的所述spring加载类字节码未包含代理参数时,采用第二解密算法对所述spring加载类字节码进行解密,得到目...

【专利技术属性】
技术研发人员:毕李宁
申请(专利权)人:厦门中控智慧信息技术有限公司
类型:发明
国别省市:福建,35

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

1