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包。本专利技术实施例的第二方面提供了一种字节码解密的方法,包括:在检测到用于启动已加 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。