CN111159658A - 字节码处理方法、***、装置、计算机设备和存储介质 - Google Patents
字节码处理方法、***、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111159658A CN111159658A CN201911291973.4A CN201911291973A CN111159658A CN 111159658 A CN111159658 A CN 111159658A CN 201911291973 A CN201911291973 A CN 201911291973A CN 111159658 A CN111159658 A CN 111159658A
- Authority
- CN
- China
- Prior art keywords
- bytecode
- target
- byte code
- code
- decryption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title abstract description 34
- 238000004806 packaging method and process Methods 0.000 claims abstract description 60
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000004590 computer program Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 25
- 238000011161 development Methods 0.000 description 37
- 239000003795 chemical substances by application Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000012856 packing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种字节码处理方法、***、装置、计算机设备和存储介质。上述方法包括:当接收到目标源代码的打包指令时根据打包指令获取目标源代码的第一字节码;采用预设加密规则对第一字节码进行加密,加密后的第一字节码作为第二字节码;对第二字节码设置第一标识信息,设置后的第二字节码作为第三字节码,第一标识信息用于标示第三字节码已被加密;对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。上述方法能够避免字节码对应的源代码的泄露。
Description
技术领域
本申请涉及代码处理技术领域,特别是涉及一种字节码处理方法、***、装置、计算机设备和存储介质。
背景技术
项目的源代码属于商业机密,如果源代码泄露,会直接导致公司效益损失。例如游戏服务端的源代码泄露,其他人利用泄露的源代码去搭建私服以谋取利益,将直接导致公司的游戏玩家流失,造成公司效益降低。如果是竞争公司拿到泄露的源代码,通过泄露的源代码快速搭建类似游戏,则直接造成更大的经济损失。所以,防止源代码泄露是一个必须解决的问题。
对于项目的源代码开发,要求开发人员必须在内网进行开发。由于项目需求,需要将开发后源代码对应的字节码发布到网络对外的项目网络平台。由于根据字节码可以逆向反编译得到对应的源代码,因此发布到网络对外的项目网络平台的字节码一旦被盗窃,容易造成源代码的泄露。例如,开发后游戏源代码对应的字节码需要发布到网络对外的项目网络平台,以使得游戏服务端能够从项目网络平台获取对应的字节码,并利用字节码执行对应的游戏功能。但是游戏源代码对应的字节码可逆向反编译得到游戏源代码,网络对外的项目网络平台的游戏字节码容易造成游戏源代码的泄露。
发明内容
基于此,有必要针对上述技术问题,提供一种能够避免源代码泄露的字节码处理方法、***、装置、计算机设备和存储介质。
一种字节码处理方法,该方法包括:当接收到目标源代码的打包指令时,根据打包指令获取目标源代码的第一字节码;采用预设加密规则对第一字节码进行加密,加密后的第一字节码作为第二字节码;对第二字节码设置第一标识信息,设置后的第二字节码作为第三字节码,第一标识信息用于标示第三字节码已被加密;对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。
在其中一个实施例中,字节码处理方法还包括:获取目标加密算法模型和第一目标密钥参数;根据第一目标密钥参数确定目标加密算法模型中的第一模型参数,根据目标加密算法模型和第一模型参数得到目标加密算法,根据目标加密算法获取预设加密规则。
一种字节码处理方法,该方法包括:当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码;当检测到第四字节码含有第二标识信息时确定第四字节码已被加密;采用预设解密规则对第四字节码进行解密,得到解密后的第四字节码,解密后的第四字节码作为第五字节码。
在其中一个实施例中,字节码处理方法还包括:获取已被加密的第四字节码的加密信息;根据加密信息获取目标解密算法模型和第二目标密钥参数;根据第二目标密钥参数确定目标解密算法模型中的第二模型参数,根据目标解密算法模型和第二模型参数得到目标解密算法,根据目标解密算法获取预设解密规则。
在其中一个实施例中,字节码处理方法还包括:获取目标解码器,目标解码器的字节码已被加密,向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥;接收服务器返回的目标解码器的解密密钥;根据解密密钥对目标解码器的字节码进行解密;采用预设解密规则对第四字节码进行解密,包括:采用解密后的目标解码器对第四字节码进行解密,目标解码器使用预设解密规则对第四字节码进行解密。
在其中一个实施例中,第三标识信息包括本地IP地址信息,向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥,包括:向服务器发送携带本地IP地址信息的密钥获取请求,以使得服务器根据本地IP地址信息确定发送密钥获取请求的设备符合第一预设条件时返回目标解码器的解密密钥;或,第三标识信息包括本地设备的设备信息,向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥,包括:向服务器发送携带本地设备的设备信息的密钥获取请求,以使得服务器根据本地设备的设备信息确定本地设备符合第二预设条件时返回目标解码器的解密密钥。
一种字节码处理***,***包括字节码加密装置和字节码解密装置;字节码加密装置用于当接收到目标源代码的打包指令时,根据打包指令获取目标源代码的第六字节码,采用预设加密规则对第六字节码进行加密,加密后的第六字节码作为第七字节码,对第七字节码进行打包以生成用于代码发布的Jar格式的文件包;字节码解密装置用于当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第七字节码,获取目标解码器,当目标解码器的字节码已被加密时,采用预设解密密钥对目标解码器的字节码进行解密,利用解密后的目标解码器对第七字节码进行解密,解密后的第七字节码为目标源代码的第六字节码。
一种字节码处理装置,该装置包括:第一获取模块,当接收到目标源代码的打包指令时,根据打包指令获取目标源代码的第一字节码;加密模块,用于采用预设加密规则对第一字节码进行加密,加密后的第一字节码作为第二字节码;设置模块,用于对第二字节码设置第一标识信息,设置后的第二字节码作为第三字节码,第一标识信息用于标示第三字节码已被加密;打包模块,用于对第三字节码进行打包以生成用于代码发布的Jar格式的文件包;
或,该装置包括:第二获取模块,用于当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码;确定模块,用于当检测到第四字节码含有第二标识信息时确定第四字节码已被加密;解密模块,用于采用预设解密规则对第四字节码进行解密,得到解密后的第四字节码,解密后的第四字节码作为第五字节码。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例方法的步骤。
上述字节码处理方法、***、装置、计算机设备和存储介质,当本地设备(例如开发终端)接收到打包指令时,根据打包指令获取目标源代码的第一字节码,采用预设加密规则对第一字节码进行加密,将加密后的第一字节码作为第二字节码,并对第二字节码设置第一标识信息,将设置后的第二字节码作为第三字节码。其中,第一标识信息能够标示出第三字节码已被加密。最后,对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。因此,当Jar格式的文件包进行对外代码发布时,外部设备获取到Jar格式的文件包并解析Jar格式的文件包得到第三字节码。此时的第三字节码为加密后的字节码,未经过授权的外部设备(例如盗窃第三字节码的非法设备)由于没有对应的解密规则无法对第三字节码进行解密,从而无法得到目标源代码的第一字节码,进而无法根据第一字节码反编译得到对应的源代码,因而避免了源代码的泄露。
进一步地,经过授权的外部设备,例如本地设备对应的服务端设备,能够对加密的第三字节码进行解密。具体为,当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码(可以是上述第三字节码)。当检测到第四字节码含有第二标识信息(可以是上述第一标识信息)时确定第四字节码已被加密,采用解密规则对第四字节码进行解密,得到解密后的第四字节码,将解密后的第四字节码作为第五字节码。第五字节码即为目标源代码对应的Jar格式的文件包解密后的字节码,也即是上述目标源代码的第一字节码。
综上,上述字节码处理方法、***、装置、计算机设备和存储介质,本地设备在对目标源代码对应的字节码进行打包以对外代码发布之前,对字节码进行加密。外部设备获得加密的字节码之后,对加密的字节码进行解密以获得字节码。因此,通过加密和解密的方式,避免了不具备字节码解密的外部设备直接获得字节码并对字节码反编译得到源代码而造成的源代码泄露。
附图说明
图1为一个实施例中一种字节码处理方法的应用环境图;
图2为一个实施例中一种字节码处理方法的流程示意图;
图3为一个实施例中一种字节码处理方法的简化流程示意图;
图4为另一个实施例中一种字节码处理方法的流程示意图;
图5为再一个实施例中一种字节码处理方法的流程示意图;
图6为又一个实施例中一种字节码处理方法的流程示意图;
图7为又一个实施例中一种字节码处理方法的流程示意图;
图8为一个实施场景中一种字节码处理方法的流程示意图;
图9为一个实施例中一种字节码处理装置的结构框图;
图10为一个实施例中计算机设备的内部结构图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
术语解释:
Java Agent:Java探针技术,用于修改字节码。
Agent:特指利用Java Agent来提供解密的Jar格式的文件包。
Instrumentation:为提供直接操作Java字节码的一个类。
Maven插件,Gradle插件:项目管理工具。
class文件:字节码文件,源代码编译后会产生字节码文件,如果字节码文件被偷窃了,偷窃者可以通过反编译技术得到源码。
类加载器:用于加载字节码类。
解码器:用于解密被加密过的字节码流。
Java字节码魔数:用于标识该文件类型为字节码,标准以0XCAFEBABE开头。
本申请提供的一种字节码处理方法,应用于如图1所示的应用环境中。内部网络平台100中包含有开发终端102和服务器104。内部网络平台100不对外开放,因此内部网络平台100之外的设备无法通过网络访问内部网络平台100中的相关数据。内部网络平台100中的开发终端102和服务器104使用内部网络进行数据通信,因此保证了两者数据通信的安全性。其中,开发人员根据项目需求使用开发终端102进行相关项目的源代码开发,并且开发终端102将源代码进行编译后得到对应的字节码。当开发终端102接收到由开发人员触发而生成的打包指令后,将对应的字节码进行打包以得到Jar格式的文件包。进一步地,根据项目需求开发终端102将Jar格式的文件包上传到服务器104,由服务器104将Jar格式的文件包发布到项目网络平台106。项目网络平台106中包含有多个字节码对应的Jar格式的文件包。服务器107为管控项目网络平台106的服务器,用于对项目网络平台106进行信息管理。项目网络平台106对外开放。用户终端108根据项目需求向项目网络平台106请求获取对应的项目数据时,服务器107获取Jar格式的文件包中的字节码,运行字节码之后使用开发终端102提供的项目的源代码对应的项目功能,从而得到用户终端108请求的项目数据,进而通过项目网络平台106向用户终端108下发对应的项目数据。其中,开发终端102也可称为本地设备,此时服务器107和用户终端108可称为外部设备。
在本申请的实施例中,当开发终端102接收到目标源代码的打包指令时根据打包指令获取目标源代码的第一字节码,采用预设加密规则对第一字节码进行加密,将加密后的第一字节码作为第二字节码,对第二字节码设置第一标识信息,设置后的第二字节码作为第三字节码,第一标识信息用于标示第三字节码已被加密。对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。因此,开发终端102将第三字节码的Jar格式的文件包发布到项目网络平台106,除了服务器107之外的其他设备从项目网络平台106中盗窃到第三字节码的Jar格式的文件包时,由于无法对第三字节码进行解密,无法获得目标源代码的第一字节码,从而无法根据第一字节码反编译得到目标源代码,因此避免了项目的源代码泄露,提高了项目的源代码的安全性。其中,项目可以是游戏,项目的源代码为游戏的源代码。项目网络平台106为游戏字节码对外发布的网络平台。开发终端102以及用户终端108均可以包括多个种类的终端,如笔记本电脑、手机和台式电脑等。服务器104和服务器107可以是由多个服务器构成的服务器集群来实现。
在本申请的实施例中,服务器107接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码。进一步地,当检测到第四字节码含有第二标识信息时确定第四字节码已被加密。此时,采用预设解密规则对第四字节码进行解密,得到解密后的第四字节码。进而,服务器可以利用解密后的第四字节码实现目标源代码对应的项目功能。
本申请的一个实施例中提供一种字节码处理方法,如图2所示,以该字节码处理方法应用于如图1所示的开发终端102为例,包括以下步骤:
S102,当接收到目标源代码的打包指令时,根据打包指令获取目标源代码的第一字节码。
开发人员基于项目需求在开发终端102中开发项目对应的源代码,并使用开发终端102对项目的源代码进行编译得到对应的字节码。具体地,开发得到的源代码为java源代码,java源代码对应的文件为java格式的文件。开发终端102使用java编译器对java源代码进行编译后得到java字节码,也即得到class格式的文件。当开发终端102接收到由开发人员触发而生成的目标源代码的打包指令时,根据打包指令获取目标源代码的第一字节码。其中,打包指令用于指示将目标源代码的字节码打包成Jar格式的文件包以将Jar格式的文件包进行代码发布,因此开发终端102接收到目标源代码的打包指令时,可以明确知道打包指令指向的第一字节码,并且可知该第一字节码用于打包成Jar格式的文件包以进行代码发布。具体地,编写Maven插件或者Gradle插件并将Maven插件或者Gradle插件安装在开发终端102中,通过Maven插件或者Gradle插件接收目标源代码的打包指令,并根据打包指令获取目标源代码的第一字节码。
在一实现方式中,目标源代码的打包指令携带有用于识别目标源代码的第一字节码的标识信息。开发终端102根据第一字节码的标识信息获取目标源代码的第一字节码。具体地,开发人员在触发开发终端102以生成打包指令时,开发终端102根据触发操作获取第一字节码的标识信息,将第一字节码的标识信息封装进生成的打包指令中。开发终端102接收到目标源代码的打包指令时,解析打包指令中的第一字节码的标识信息,根据第一字节码的标识信息获取第一字节码。具体可以由安装在开发终端102的插件来实现目标源代码的打包指令的接收以及根据打包指令中的第一字节码的标识信息获取第一字节码。因此,开发终端可以生成打包指令,也可以接收打包指令以根据打包指令获取对应的第一字节码。
S104,采用预设加密规则对第一字节码进行加密,加密后的第一字节码作为第二字节码。
在本实施例中,开发终端102获取到第一字节码之后,采用预设加密规则对第一字节码进行加密。预设加密规则可以是直接采用已知的加密算法,例如AES算法。也可以是采用自定义的加密算法。具体地,编写Maven插件或者Gradle插件,将Maven插件或者Gradle插件安装在开发终端102中,通过Maven插件或者Gradle插件采用预设加密规则对第一字节码进行加密。因此,采用预设加密规则对第一字节码进行加密,提高了第一字节码的安全性,避免恶意使用第一字节码反编译得到对应的源代码造成的源代码泄露。
S106,对第二字节码设置第一标识信息,设置后的第二字节码作为第三字节码,第一标识信息用于标示第三字节码已被加密。
第二字节码为加密后的字节码,设备无法识别第二字节码的内部信息。因此,无法判断第二字节码为加密的字节码。在本实施例中,对第二字节码设置第一标识信息,第三字节码包含第一标识信息,此时第一标识信息能够标示第三字节码已被加密。具体地,第一标识信息可以是自定义的字节码魔数。其中,字节码魔数由JVM(Java Virtual Machine,Java虚拟机)标准定义,用于标明字节码可被JVM加载。一般地,标准字节码魔数为0xcafebabe,开发终端102根据标准字节码魔数设置自定义的字节码魔数,以用自定义的字节码魔数标示出第三字节码已被加密。因此,服务器107可以通过自定义的字节码魔数识别出已被加密的第三字节码和未被加密的其他字节码,避免对未被加密的其他字节码进行解密操作,从而减少管控项目网络平台的服务器107的操作出错。
S108,对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。
在本实施例中,开发终端102对第三字节码进行打包,以生成可执行的Jar格式的文件包。开发终端102通过服务器104将Jar格式的文件包上传到项目网络平台106,通过项目网络平台106对外发布。项目网络平台106对应有管控项目网络平台的服务器107。服务器107通过项目网络平台106获取该Jar格式的文件包之后,得到Jar格式的文件包内加密的第三字节码。进一步地,服务器107通过识别第三字节码的第一标识信息确定第三字节码已被加密。服务器107拥有第三字节码的解密规则,能够通过第三字节码的第一标识信息识别出第三字节码被加密时利用解密规则对第三字节码进行解密。此时,若其他非法设备从项目网络平台106盗窃到第三字节码时,无法对第三字节码进行解密,从而保证了第三字节码对应的第一字节码的安全性,进而避免其他非法设备通过第一字节码反编译得到对应的源代码造成的源代码泄露。
以下给出一具体实施场景,以进一步说明本实施例的字节码处理方法。
如图3所示:
图3描述了字节码加密的简易流程:开发人员编写一个Maven插件或者Gradle的插件,将Maven插件或者Gradle的插件安装到开发终端102。在内网项目开始打包时,Maven插件或者Gradle的插件对项目的每一个字节码做加密操作。然后对加密后的字节码设置自定义的字节码魔数,用于标明该字节码被加密过。因此实现了字节码加密混淆。最后生成可执行Jar格式的文件包,将Jar格式的文件包发布到外网。这样,外网的Jar格式的文件包就算被偷窃了,也是加密后的Jar格式的文件包,根本没法使用。因此,保证了字节码的安全性,避免根据字节码反编译得到源代码而造成的源代码泄露。
本实施例的字节码处理方法,当本地设备(开发终端102)接收到打包指令时,根据打包指令获取目标源代码的第一字节码,采用预设加密规则对第一字节码进行加密,将加密后的第一字节码作为第二字节码,并对第二字节码设置第一标识信息,将设置后的第二字节码作为第三字节码。其中,第一标识信息能够标示出第三字节码已被加密。最后,对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。因此,当Jar格式的文件包进行对外代码发布时,外部设备获取到Jar格式的文件包并解析Jar格式的文件包得到第三字节码。此时的第三字节码为加密后的字节码,未经过授权的外部设备由于没有对应的解密规则无法对第三字节码进行解密,从而无法得到目标源代码的第一字节码,进而无法根据第一字节码反编译得到对应的源代码,避免了源代码的泄露。
在一个实施例中,如图4所示,步骤S104之前,还包括步骤:
S1032,获取目标加密算法模型和第一目标密钥参数。
S1034,根据第一目标密钥参数确定目标加密算法模型中的第一模型参数,根据目标加密算法模型和第一模型参数得到目标加密算法,根据目标加密算法获取预设加密规则。
在该实施例中,预设加密规则采用加密算法模型和密钥参数构成。加密算法模型可以是已知的加密算法的算法模型。密钥参数为自定义的密钥参数。具体地,开发终端102内预先存储有一个或多个加密算法模型,并且自定义出一个或多个密钥参数。开发终端获取目标加密算法模型和第一目标密钥参数,根据目标加密算法模型和第一目标密钥参数获取预设加密规则,以使用该预设加密规则对第一字节码进行加密,从而提高了第一字节码的保密性。具体地,根据第一目标密钥参数确定目标加密算法模型中的第一模型参数,根据目标加密算法模型和第一模型参数得到目标加密算法,进而根据目标加密算法获取预设加密规则。举例说明,目标加密算法模型可以是Y=X+A。其中,X为第一字节码,A为第一模型参数,Y为加密后的第一字节码。自定义的第一目标密钥参数为数值a,则根据数值a可以确定出第一模型参数A为数值a。目标加密算法为Y=X+a。比如,原文数据(第一字节码)为123456。自定义的第一目标密钥参数为1时,目标加密算法是对原文数据的每个数字加上一个数,则加密后得到的数据(加密后的第一字节码)为234567。需要说明的是,此处的举例说明只是为了对步骤S1034进行解释说明,步骤S1034不应该限定于该举例说明的实现方式。
本申请的另一个实施例中提供一种字节码处理方法,如图5所示,以该字节码处理方法应用于如图1所示的管控项目网络平台的服务器107为例,包括以下步骤:
S202,当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码。
在本实施例中,开发终端102将字节码加密后的Jar格式的文件包发布到项目网络平台106。当服务器107通过项目网络平台106接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码。其中,目标源代码可以是游戏项目的源代码,Jar格式的文件包中的第四字节码为游戏项目对应的字节码。项目网络平台106可以是游戏项目的源代码对应的Jar格式的文件包对外发布的平台。
S204,当检测到第四字节码含有第二标识信息时确定第四字节码已被加密。
在本实施例中,服务器107检测到第四字节码含有第二标识信息时,识别出第四字节码为已被加密的字节码。第二标识信息用于标示第四字节码已被加密。此处的第二标识信息也可以是自定义的字节码魔数。服务器107可以通过自定义的字节码魔数判断出字节码已被加密。具体地,检测到第四字节码含有第二标识信息时,确定第四字节码已被加密。若检测到第四字节码未含有第二标识信息时确定第四字节码未被加密。因此,通过第四字节码的第二标识信息确定第四字节码已被加密,简化了判定第四字节码为已被加密字节码的相关检测操作,从而提高目标源代码的字节码的处理效率。
S206,采用预设解密规则对第四字节码进行解密,得到解密后的第四字节码,解密后的第四字节码作为第五字节码。
在本实施例中,服务器107中存储有预先设定的预设解密规则。该预设解密规则与对第四字节码进行加密的加密规则对应。服务器107判定出第四字节码已被加密时,采用预设解密规则对第四字节码进行解密。预设解密规则为服务器107根据开发终端102的加密规则生成的预设解密规则。服务器107采用预设解密规则对第四字节码进行解密后,得到的第五字节码即为目标源代码对应的字节码。服务器107可以执行第五字节码以实现目标源代码对应的项目功能。其中,第四字节码可以是上述对字节码进行加密的字节码处理方法中提到的第三字节码,此时第五字节码可以是上述目标源代码对应的第一字节码。
本实施例的字节码处理方法,当服务器107接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码(可以是上述字节码加密时的第三字节码)。当检测到第四字节码含有第二标识信息(可以是上述第一标识信息)时确定第四字节码已被加密,采用解密规则对第四字节码进行解密,得到解密后的第四字节码,将解密后的第四字节码作为第五字节码。第五字节码即为目标源代码对应的Jar格式的文件包解密后的字节码,例如为上述加密过程中的目标源代码的第一字节码。此外,除了服务器107之外的其他设备从项目网络平台106中盗窃到Jar格式的文件包时,由于无法对Jar格式的文件包的字节码进行解密,无法获得目标源代码对应的字节码,从而无法根据字节码反编译得到目标源代码,因此避免了项目的源代码泄露,提高了项目的源代码的安全性。
在一个实施例中,如图6所示,步骤S206之前,还包括步骤:
S2052,获取已被加密的第四字节码的加密信息。
S2054,根据加密信息获取目标解密算法模型和第二目标密钥参数。
S2056,根据第二目标密钥参数确定目标解密算法模型中的第二模型参数,根据目标解密算法模型和第二模型参数得到目标解密算法,根据目标解密算法获取预设解密规则。
在该实施例中,服务器107获取已被加密的第四字节码的加密信息。此处的加密信息可以是表征第四字节码已被加密的信息。例如,加密信息为第四字节码中“已被加密”的标识。加密信息还可以是标识出第四字节码的加密规则信息。例如,第四字节码的加密规则信息为:采用加密算法模型和密钥参数对第四字节码进行加密。进一步地,服务器107根据加密信息获取目标解密算法和第二目标密钥参数。具体地,服务器107根据加密信息确定第四字节码对应的加密规则为:采用加密算法模型和密钥参数对第四字节码进行加密。因此,服务器107根据加密信息获取对应的目标解密算法模型和第二目标密钥。
具体地,服务器107根据加密信息确定出第四字节码的目标加密算法模型和第一目标密钥。根据目标加密算法模型确定出目标解密算法模型,根据第一目标密钥确定出第二目标密钥。进而,根据第二目标密钥参数确定目标解密算法模型中的第二模型参数,根据目标解密算法模型和第二模型参数得到目标解密算法,最终根据目标解密算法获取预设解密规则。以上述的目标加密算法模型和第一目标密钥的实施例进行举例说明:目标加密算法模型为Y=X+A。自定义的第一目标密钥参数为数值a,则根据数值a可以确定出第一模型参数A为数值a。此时,目标解密算法模型为X=Y-A。第二目标密钥也为a。最终,服务器107根据目标解密算法获取预设解密规则,并利用该预设解密规则对第四字节码进行解密。因此,实现了第四字节码的解密。
在一个实施例中,如图7所示,步骤S206之前,还包括:
S2051,获取目标解码器,目标解码器的字节码已被加密,向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥。
S2053,接收服务器返回的目标解码器的解密密钥。
S2055,根据解密密钥对目标解码器的字节码进行解密。
此时步骤S206包括:
S2061,采用解密后的目标解码器对第四字节码进行解密,目标解码器使用预设解密规则对第四字节码进行解密。
在该实施例中,服务器107使用目标解码器对第四字节码进行解密。但是,服务器107的目标解码器为字节码被加密的解码器。服务器107需要向服务器104发送请求,以获取目标解码器的字节码的解密密钥。其中,服务器104为管理Jar格式的文件包的代码发布的服务器。具体地,服务器107向服务器104发送携带第三标识信息的密钥获取请求,以使得服务器104根据第三标识信息返回目标解码器的解密密钥。具体地,服务器104可以根据第三标识信息判断密钥获取请求的合法性。当确定发送密钥获取请求的服务器107的合法性后向服务器107返回目标解码器的解密密钥。此外,服务器107也只有拿到服务器104返回的解密密钥才能对目标解码器的字节码进行解密,以利用解密后的目标解码器对第四字节码进行解密。因此,可以进一步提高第四字节码的安全性,避免第四字节码对应的源代码的泄露。
在一个实施例中,第三标识信息包括本地IP地址信息。步骤S2051包括:向服务器发送携带本地IP地址信息的密钥获取请求,以使得服务器根据本地IP地址信息确定发送密钥获取请求的设备符合第一预设条件时返回目标解码器的解密密钥。
在该实施例中,服务器107向服务器104发送携带本地IP地址信息的密钥获取请求。服务器104根据服务器107的本地IP地址信息确定发送密钥获取请求的设备(服务器107)符合第一预设条件时返回目标解码器的解密密钥。服务器104根据本地IP地址信息确定发送密钥获取请求的设备符合预设条件可以是:服务器104根据本地IP地址信息判断密钥获取请求的设备的IP地址是否为预先存储的设备IP白名单中的IP地址。若是,则确定发送密钥获取请求的设备符合第一预设条件。其中,设备IP白名单中包含有多个IP地址。每个IP地址对应的设备为白名单设备。服务器104向白名单设备发送目标解码器的解密密钥。因此,服务器104对服务器107的本地IP地址信息进行审核,确定服务器107符合预设条件时才向服务器107发送目标解码器的解密密钥,非服务器107之外的其他设备即使通过项目网络平台106中盗窃到目标解码器,也无法从服务器104中获得目标解码器的解密密钥,从而可以进一步提高第四字节码的安全性,避免第四字节码对应的源代码的泄露。
在一个实施例中,第三标识信息包括本地设备的设备信息。步骤S2051包括:向服务器发送携带本地设备的设备信息的密钥获取请求,以使得服务器根据本地设备的设备信息确定本地设备符合第二预设条件时返回目标解码器的解密密钥。
在该实施例中,服务器107向服务器104发送携带本地设备的设备信息的密钥获取请求。服务器104根据服务器107的本地设备的设备信息确定服务器107符合第二预设条件时返回目标解码器的解密密钥。其中,本地设备的设备信息可以是本地设备的物理地址,也即是服务器107的物理地址。服务器根据本地设备的设备信息确定本地设备符合第二预设条件可以是:服务器根据本地设备的物理地址确定本地设备是否符合第二预设条件。第二预设条件可以是服务器104中预先存储的多个设备的物理地址集合。本地设备的物理地址属于物理地址集合中的物理地址时确定本地设备符合第二预设条件。
在一个实施例中,步骤S2055之后,还包括:将解密后的目标解码器进行存储。此时,步骤S2061之后还包括:当再次接收到已被加密的第四字节码时,利用存储的解密后的目标解码器对第四字节码进行解密。
在本实施例中,服务器107对解密后的目标解码器进行存储,以使得下次接收到已被加密的第四字节码时,直接从本地存储中获取解密后的目标解码器,以对第四字节码进行解密。因此,无需再向服务器104发送密钥获取请求,提高第四字节码的解密效率。进一步地,服务器107将解密后的目标解码器缓存到内存中。当再次接收到已被加密的第四字节码时,从内存中读取解密后的目标解码器,以利用解密后的目标解码器对第四字节码进行解密。因此,可以防止目标解码器的泄露,或者放置目标解码器的解密密钥的泄露。
以下针对上述用于对字节码进行解密的字节码处理方法提供一具体实施场景,以详述该字节码处理方法:
服务器107获得的Jar格式的文件包中字节码为加密后的字节码,通过解密才能加载到真正的字节码。具体地,如图8所示,当服务器107中类加载器加载字节码流时,判断字节码流是否以标准的字节码魔数开头。若否,表明该字节码被加密过,则会通过解码器对字节码流中的字节码进行解密。具体地,服务器107判断缓存中是否存在解码器。若是,直接获取解码器,利用解码器解密要加载的字节码,将解密后的字节码替换解密前的字节码,以得到真正的字节码。若缓存中不存在解码器,则获取加密过的解码器,通过调用远程物理机获取解码器的密钥,再利用得到的密钥对解码器进行解密,从而利用解密后的解码器对要加载的字节码进行解密,将解密后的字节码替换解密前的字节码,以得到真正的字节码。具体地,字节码解密过程通过服务器107的Agent实现,其利用Java Agent的Instrumentation对字节码流进行替换。如果解码器的代码直接放到Agent中,假设Agent和目标项目同时被泄露,同样可以通过该Agent对目标项目进行解密。为了防止这种情况,对Agent中解码器的字节码进行加密。服务器107通过调用远程的服务器104获取解码器的密钥,以使用密钥对解码器的字节码进行解密后才能真正得到解码器,而获取密钥这个过程通过远程服务器104的机器IP白名单来保证,只有被授权过的设备(例如服务器107)才能获取密钥。因此,进一步保证了源代码对应的字节码的安全性。
因此,上述字节码处理方法,提供了字节码的加密和解密方式,可以有效的防御代码泄露导致代码被窃取的问题。
本申请还提供一种字节码处理***。该字节码处理***用于采用上述字节码处理方法对字节码进行加密和解密。具体地,该字节码处理***包括字节码加密装置和字节码解密装置。字节码加密装置用于当接收到目标源代码的打包指令时,根据打包指令获取目标源代码的第六字节码,采用预设加密规则对第六字节码进行加密,加密后的第六字节码作为第七字节码,对第七字节码进行打包以生成用于代码发布的Jar格式的文件包。字节码解密装置用于当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第七字节码,获取目标解码器,当目标解码器的字节码已被加密时,采用预设解密密钥对目标解码器的字节码进行解密,利用解密后的目标解码器对第七字节码进行解密,解密后的第七字节码为目标源代码的第六字节码。
需要说明的是,该字节码处理***的字节码加密装置采用上述用于对字节码进行加密的字节码处理方法进行字节码加密,该字节码处理***的字节码解密装置采用上述用于对字节码进行解密的字节码处理方法进行字节码解密。具体的加密和解密过程,可参见上述具体实施例所述,此处不再重述。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,附图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本申请还提供一种字节码处理装置,如图9所示,该装置包括第一获取模块10、加密模块20、设置模块30以及打包模块40。
第一获取模块10,用于当接收到目标源代码的打包指令时,根据打包指令获取目标源代码的第一字节码;加密模块20,用于采用预设加密规则对第一字节码进行加密,加密后的第一字节码作为第二字节码;设置模块30,用于对第二字节码设置第一标识信息,设置后的第二字节码作为第三字节码,第一标识信息用于标示第三字节码已被加密;打包模块40,用于对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。
在其中一个实施例中,字节码处理装置还包括(图9未示):第一获得模块,用于获取目标加密算法模型和第一目标密钥参数;第二获得模块,用于根据第一目标密钥参数确定目标加密算法模型中的第一模型参数,根据目标加密算法模型和第一模型参数得到目标加密算法,根据目标加密算法获取预设加密规则。
或者,本申请提供的一种字节码处理装置,如图9所示,包括第二获取模块50、确定模块60以及解密模块70。
第二获取模块50,用于当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码;确定模块60,用于当检测到第四字节码含有第二标识信息时确定第四字节码已被加密;解密模块70,用于采用预设解密规则对第四字节码进行解密,得到解密后的第四字节码,解密后的第四字节码作为第五字节码。
在其中一个实施例中,字节码处理装置还包括(图9未示):第三获得模块,用于获取已被加密的第四字节码的加密信息;第四获得模块,用于根据加密信息获取目标解密算法模型和第二目标密钥参数;第五获得模块,用于根据第二目标密钥参数确定目标解密算法模型中的第二模型参数,根据目标解密算法模型和第二模型参数得到目标解密算法,根据目标解密算法获取预设解密规则。
在其中一个实施例中,字节码处理装置还包括(图9未示):发送模块,用于获取目标解码器,目标解码器的字节码已被加密,向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥;接收模块,用于接收服务器返回的目标解码器的解密密钥;解码器解密模块,用于根据解密密钥对目标解码器的字节码进行解密;此时,解密模块70包括:解密单元,用于采用解密后的目标解码器对第四字节码进行解密,目标解码器使用预设解密规则对第四字节码进行解密。
在其中一个实施例中,第三标识信息包括本地IP地址信息。发送模块包括:第一发送单元,用于向服务器发送携带本地IP地址信息的密钥获取请求,以使得服务器根据本地IP地址信息确定发送密钥获取请求的设备符合第一预设条件时返回目标解码器的解密密钥;或,第三标识信息包括本地设备的设备信息。发送模块包括:第二发送单元,用于向服务器发送携带本地设备的设备信息的密钥获取请求,以使得服务器根据本地设备的设备信息确定本地设备符合第二预设条件时返回目标解码器的解密密钥。
关于字节码处理装置的具体限定可以参见上文中对于字节码处理方法的限定,在此不再赘述。上述字节码处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端设备,其内部结构图可以如图10所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的服务器通过网络连接通信。该计算机程序被处理器执行时以实现用于对字节码进行加密的一种字节码处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机设备,该计算机设备可以为服务器,其内部结构图可以如图11所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与其他服务器连接,以与其他服务器进行数据交互。该计算机程序被处理器执行时以实现上述任一实施例中用于对字节码进行解密的一种字节码处理方法。
本领域技术人员可以理解,图10和图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:当接收到目标源代码的打包指令时,根据打包指令获取目标源代码的第一字节码;采用预设加密规则对第一字节码进行加密,加密后的第一字节码作为第二字节码;对第二字节码设置第一标识信息,设置后的第二字节码作为第三字节码,第一标识信息用于标示第三字节码已被加密;对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:获取目标加密算法模型和第一目标密钥参数;根据第一目标密钥参数确定目标加密算法模型中的第一模型参数,根据目标加密算法模型和第一模型参数得到目标加密算法,根据目标加密算法获取预设加密规则。
或者,计算机设备中处理器执行计算机程序时实现以下步骤:当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码;当检测到第四字节码含有第二标识信息时确定第四字节码已被加密;采用预设解密规则对第四字节码进行解密,得到解密后的第四字节码,解密后的第四字节码作为第五字节码。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:获取已被加密的第四字节码的加密信息;根据加密信息获取目标解密算法模型和第二目标密钥参数;根据第二目标密钥参数确定目标解密算法模型中的第二模型参数,根据目标解密算法模型和第二模型参数得到目标解密算法,根据目标解密算法获取预设解密规则。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:获取目标解码器,目标解码器的字节码已被加密,向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥;接收服务器返回的目标解码器的解密密钥;根据解密密钥对目标解码器的字节码进行解密;处理器执行计算机程序实现上述的采用预设解密规则对第四字节码进行解密步骤时,具体实现以下步骤:采用解密后的目标解码器对第四字节码进行解密,目标解码器使用预设解密规则对第四字节码进行解密。
在其中一个实施例中,第三标识信息包括本地IP地址信息。处理器执行计算机程序实现上述的向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥步骤时,具体实现以下步骤:向服务器发送携带本地IP地址信息的密钥获取请求,以使得服务器根据本地IP地址信息确定发送密钥获取请求的设备符合第一预设条件时返回目标解码器的解密密钥。
在其中一个实施例中,第三标识信息包括本地设备的设备信息。处理器执行计算机程序实现上述的向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥步骤时,具体实现以下步骤:向服务器发送携带本地设备的设备信息的密钥获取请求,以使得服务器根据本地设备的设备信息确定本地设备符合第二预设条件时返回目标解码器的解密密钥。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收到目标源代码的打包指令时,根据打包指令获取目标源代码的第一字节码;采用预设加密规则对第一字节码进行加密,加密后的第一字节码作为第二字节码;对第二字节码设置第一标识信息,设置后的第二字节码作为第三字节码,第一标识信息用于标示第三字节码已被加密;对第三字节码进行打包以生成用于代码发布的Jar格式的文件包。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:获取目标加密算法模型和第一目标密钥参数;根据第一目标密钥参数确定目标加密算法模型中的第一模型参数,根据目标加密算法模型和第一模型参数得到目标加密算法,根据目标加密算法获取预设加密规则。
或者,计算机可读存储介质中计算机程序被处理器执行时实现以下步骤:当接收到目标源代码对应的Jar格式的文件包时,获取Jar格式的文件包中的第四字节码;当检测到第四字节码含有第二标识信息时确定第四字节码已被加密;采用预设解密规则对第四字节码进行解密,得到解密后的第四字节码,解密后的第四字节码作为第五字节码。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:获取已被加密的第四字节码的加密信息;根据加密信息获取目标解密算法模型和第二目标密钥参数;根据第二目标密钥参数确定目标解密算法模型中的第二模型参数,根据目标解密算法模型和第二模型参数得到目标解密算法,根据目标解密算法获取预设解密规则。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:获取目标解码器,目标解码器的字节码已被加密,向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥;接收服务器返回的目标解码器的解密密钥;根据解密密钥对目标解码器的字节码进行解密;计算机程序被处理器执行实现上述的采用预设解密规则对第四字节码进行解密步骤时,具体实现以下步骤:采用解密后的目标解码器对第四字节码进行解密,目标解码器使用预设解密规则对第四字节码进行解密。
在其中一个实施例中,第三标识信息包括本地IP地址信息。计算机程序被处理器执行实现上述的向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥步骤时,具体实现以下步骤:向服务器发送携带本地IP地址信息的密钥获取请求,以使得服务器根据本地IP地址信息确定发送密钥获取请求的设备符合第一预设条件时返回目标解码器的解密密钥。
在其中一个实施例中,第三标识信息包括本地设备的设备信息。计算机程序被处理器执行实现上述的向服务器发送携带第三标识信息的密钥获取请求,以使得服务器根据第三标识信息返回目标解码器的解密密钥步骤时,具体实现以下步骤:向服务器发送携带本地设备的设备信息的密钥获取请求,以使得服务器根据本地设备的设备信息确定本地设备符合第二预设条件时返回目标解码器的解密密钥。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种字节码处理方法,所述方法包括:
当接收到目标源代码的打包指令时,根据所述打包指令获取所述目标源代码的第一字节码;
采用预设加密规则对所述第一字节码进行加密,加密后的所述第一字节码作为第二字节码;
对所述第二字节码设置第一标识信息,设置后的所述第二字节码作为第三字节码,所述第一标识信息用于标示所述第三字节码已被加密;
对所述第三字节码进行打包以生成用于代码发布的Jar格式的文件包。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取目标加密算法模型和第一目标密钥参数;
根据所述第一目标密钥参数确定所述目标加密算法模型中的第一模型参数,根据所述目标加密算法模型和所述第一模型参数得到目标加密算法,根据所述目标加密算法获取所述预设加密规则。
3.一种字节码处理方法,其特征在于,所述方法包括:
当接收到目标源代码对应的Jar格式的文件包时,获取所述Jar格式的文件包中的第四字节码;
当检测到所述第四字节码含有第二标识信息时确定所述第四字节码已被加密;
采用预设解密规则对所述第四字节码进行解密,得到解密后的第四字节码,解密后的所述第四字节码作为第五字节码。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取已被加密的所述第四字节码的加密信息;
根据所述加密信息获取目标解密算法模型和第二目标密钥参数;
根据所述第二目标密钥参数确定所述目标解密算法模型中的第二模型参数,根据所述目标解密算法模型和所述第二模型参数得到目标解密算法,根据所述目标解密算法获取所述预设解密规则。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取目标解码器,所述目标解码器的字节码已被加密,向服务器发送携带第三标识信息的密钥获取请求,以使得所述服务器根据所述第三标识信息返回所述目标解码器的解密密钥;
接收所述服务器返回的所述目标解码器的解密密钥;
根据所述解密密钥对所述目标解码器的字节码进行解密;
所述采用所述预设解密规则对所述第四字节码进行解密,包括:
采用解密后的所述目标解码器对所述第四字节码进行解密,所述目标解码器使用所述预设解密规则对所述第四字节码进行解密。
6.根据权利要求5所述的方法,其特征在于,所述第三标识信息包括本地IP地址信息,所述向服务器发送携带第三标识信息的密钥获取请求,以使得所述服务器根据所述第三标识信息返回所述目标解码器的解密密钥,包括:
向所述服务器发送携带所述本地IP地址信息的密钥获取请求,以使得所述服务器根据所述本地IP地址信息确定发送所述密钥获取请求的设备符合第一预设条件时返回所述目标解码器的解密密钥;
或,所述第三标识信息包括本地设备的设备信息,所述向服务器发送携带第三标识信息的密钥获取请求,以使得所述服务器根据所述第三标识信息返回所述目标解码器的解密密钥,包括:
向所述服务器发送携带所述本地设备的设备信息的密钥获取请求,以使得所述服务器根据所述本地设备的设备信息确定所述本地设备符合第二预设条件时返回所述目标解码器的解密密钥。
7.一种字节码处理***,其特征在于,所述***包括字节码加密装置和字节码解密装置;
所述字节码加密装置用于当接收到目标源代码的打包指令时,根据所述打包指令获取所述目标源代码的第六字节码,采用预设加密规则对所述第六字节码进行加密,加密后的所述第六字节码作为第七字节码,对所述第七字节码进行打包以生成用于代码发布的Jar格式的文件包;
所述字节码解密装置用于当接收到所述目标源代码对应的Jar格式的文件包时,获取所述Jar格式的文件包中的所述第七字节码,获取目标解码器,当所述目标解码器的字节码已被加密时,采用预设解密密钥对所述目标解码器的字节码进行解密,利用解密后的所述目标解码器对所述第七字节码进行解密,解密后的所述第七字节码为所述目标源代码的第六字节码。
8.一种字节码处理装置,其特征在于,所述装置包括:
第一获取模块,当接收到目标源代码的打包指令时,根据所述打包指令获取所述目标源代码的第一字节码;
加密模块,用于采用预设加密规则对所述第一字节码进行加密,加密后的所述第一字节码作为第二字节码;
设置模块,用于对所述第二字节码设置第一标识信息,设置后的所述第二字节码作为第三字节码,所述第一标识信息用于标示所述第三字节码已被加密;
打包模块,用于对所述第三字节码进行打包以生成用于代码发布的Jar格式的文件包;
或,所述装置包括:
第二获取模块,用于当接收到目标源代码对应的Jar格式的文件包时,获取所述Jar格式的文件包中的第四字节码;
确定模块,用于当检测到所述第四字节码含有第二标识信息时确定所述第四字节码已被加密;
解密模块,用于采用所述预设解密规则对所述第四字节码进行解密,得到解密后的第四字节码,解密后的所述第四字节码作为第五字节码。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至2中任一项所述方法的步骤;或,所述处理器执行所述计算机程序时实现权利要求3至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至2中任一项所述的方法的步骤;或,所述计算机程序被处理器执行时实现权利要求3至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911291973.4A CN111159658B (zh) | 2019-12-16 | 2019-12-16 | 字节码处理方法、***、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911291973.4A CN111159658B (zh) | 2019-12-16 | 2019-12-16 | 字节码处理方法、***、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111159658A true CN111159658A (zh) | 2020-05-15 |
CN111159658B CN111159658B (zh) | 2022-04-01 |
Family
ID=70557232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911291973.4A Active CN111159658B (zh) | 2019-12-16 | 2019-12-16 | 字节码处理方法、***、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111159658B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111625378A (zh) * | 2020-05-28 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 一种源代码远程查看方法和装置 |
CN111984944A (zh) * | 2020-08-28 | 2020-11-24 | 重庆小雨点小额贷款有限公司 | 一种源代码处理方法、相关装置及存储介质 |
CN112148318A (zh) * | 2020-10-12 | 2020-12-29 | Oppo广东移动通信有限公司 | 应用包发布方法、应用方法、装置、介质、服务器及设备 |
CN112637225A (zh) * | 2020-12-28 | 2021-04-09 | 厦门市美亚柏科信息股份有限公司 | 一种数据发送方法、接收方法、客户端及服务端 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050005103A1 (en) * | 2003-06-12 | 2005-01-06 | International Business Machines Corporation | System and method for securing code and ensuring proper execution using state-based encryption |
CN102346834A (zh) * | 2011-11-25 | 2012-02-08 | 武汉钢铁(集团)公司 | Java应用软件加密保护的方法 |
CN102360412A (zh) * | 2011-09-26 | 2012-02-22 | 飞天诚信科技股份有限公司 | Java源代码的保护方法和*** |
CN103218549A (zh) * | 2012-01-19 | 2013-07-24 | 阿里巴巴集团控股有限公司 | 一种Java源代码加解密的方法及装置 |
CN105022936A (zh) * | 2014-04-30 | 2015-11-04 | 北京畅游天下网络技术有限公司 | 一种类class文件加密解密方法和装置 |
CN108011879A (zh) * | 2017-11-30 | 2018-05-08 | 广州酷狗计算机科技有限公司 | 文件加密、解密的方法、装置、设备和存储介质 |
CN108664773A (zh) * | 2018-04-26 | 2018-10-16 | 北京三快在线科技有限公司 | Java源代码的保护方法及装置 |
US20180373848A1 (en) * | 2015-12-29 | 2018-12-27 | Guardsquare Nv | A build system with plugins for encryption of application components |
CN109495258A (zh) * | 2018-12-19 | 2019-03-19 | 世纪龙信息网络有限责任公司 | 监控数据解密的方法、装置、计算机设备及存储介质 |
CN109784007A (zh) * | 2018-12-04 | 2019-05-21 | 厦门中控智慧信息技术有限公司 | 一种字节码加密的方法、字节码解密的方法及终端 |
-
2019
- 2019-12-16 CN CN201911291973.4A patent/CN111159658B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050005103A1 (en) * | 2003-06-12 | 2005-01-06 | International Business Machines Corporation | System and method for securing code and ensuring proper execution using state-based encryption |
CN102360412A (zh) * | 2011-09-26 | 2012-02-22 | 飞天诚信科技股份有限公司 | Java源代码的保护方法和*** |
CN102346834A (zh) * | 2011-11-25 | 2012-02-08 | 武汉钢铁(集团)公司 | Java应用软件加密保护的方法 |
CN103218549A (zh) * | 2012-01-19 | 2013-07-24 | 阿里巴巴集团控股有限公司 | 一种Java源代码加解密的方法及装置 |
CN105022936A (zh) * | 2014-04-30 | 2015-11-04 | 北京畅游天下网络技术有限公司 | 一种类class文件加密解密方法和装置 |
US20180373848A1 (en) * | 2015-12-29 | 2018-12-27 | Guardsquare Nv | A build system with plugins for encryption of application components |
CN108011879A (zh) * | 2017-11-30 | 2018-05-08 | 广州酷狗计算机科技有限公司 | 文件加密、解密的方法、装置、设备和存储介质 |
CN108664773A (zh) * | 2018-04-26 | 2018-10-16 | 北京三快在线科技有限公司 | Java源代码的保护方法及装置 |
CN109784007A (zh) * | 2018-12-04 | 2019-05-21 | 厦门中控智慧信息技术有限公司 | 一种字节码加密的方法、字节码解密的方法及终端 |
CN109495258A (zh) * | 2018-12-19 | 2019-03-19 | 世纪龙信息网络有限责任公司 | 监控数据解密的方法、装置、计算机设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
K.TSAI: ""Android App copy protection mechanism with semi-trusted loader,"", 《2015 17TH INTERNATIONAL CONFERENCE ON ADVANCED COMMUNICATION TECHNOLOGY (ICACT》 * |
吴芳等: ""一种Java字节码保护技术的研究和实现"", 《微处理机》 * |
张爱娟等: ""基于重定义JVM类加载器移动代码的安全"", 《计算机工程》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111625378A (zh) * | 2020-05-28 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 一种源代码远程查看方法和装置 |
CN111984944A (zh) * | 2020-08-28 | 2020-11-24 | 重庆小雨点小额贷款有限公司 | 一种源代码处理方法、相关装置及存储介质 |
CN111984944B (zh) * | 2020-08-28 | 2024-04-19 | 重庆小雨点小额贷款有限公司 | 一种源代码处理方法、相关装置及存储介质 |
CN112148318A (zh) * | 2020-10-12 | 2020-12-29 | Oppo广东移动通信有限公司 | 应用包发布方法、应用方法、装置、介质、服务器及设备 |
WO2022078057A1 (zh) * | 2020-10-12 | 2022-04-21 | Oppo广东移动通信有限公司 | 应用包发布方法、应用方法、装置、介质、服务器及设备 |
CN112148318B (zh) * | 2020-10-12 | 2024-02-13 | Oppo广东移动通信有限公司 | 应用包发布方法、应用方法、装置、介质、服务器及设备 |
CN112637225A (zh) * | 2020-12-28 | 2021-04-09 | 厦门市美亚柏科信息股份有限公司 | 一种数据发送方法、接收方法、客户端及服务端 |
Also Published As
Publication number | Publication date |
---|---|
CN111159658B (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3387813B1 (en) | Mobile device having trusted execution environment | |
CN111159658B (zh) | 字节码处理方法、***、装置、计算机设备和存储介质 | |
CN108664773B (zh) | Java源代码的保护方法及装置 | |
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
US9054865B2 (en) | Cryptographic system and methodology for securing software cryptography | |
US11263311B2 (en) | Securing virtual-machine software applications | |
CN109784007B (zh) | 一种字节码加密的方法、字节码解密的方法及终端 | |
CN108363580A (zh) | 应用程序安装方法、装置、计算机设备和存储介质 | |
CN102576391A (zh) | 嵌入在shell代码中的软件许可 | |
CN110826031B (zh) | 加密方法、装置、计算机设备及存储介质 | |
CN111191195A (zh) | 一种用于保护apk的方法和装置 | |
CN103971034A (zh) | 一种保护Java软件的方法及装置 | |
US20150186681A1 (en) | Method of encryption and decryption for shared library in open operating system | |
JP4664055B2 (ja) | プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法 | |
CN117313046A (zh) | 一种代码加固方法、代码加载方法、设备及介质 | |
CN109784072B (zh) | 一种安全文件管理方法和*** | |
CN114896621B (zh) | 应用服务的获取方法、加密方法、装置、计算机设备 | |
US20230058046A1 (en) | Apparatus and Method for Protecting Shared Objects | |
KR20190060181A (ko) | 공유 오브젝트의 코드 보호를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법 | |
CN117828555B (zh) | 一种低成本Java源代码保护方法及装置 | |
CN115906016A (zh) | 源码保护方法、装置、设备及存储介质 | |
WO2016058747A1 (en) | System and method for protecting a device against attacks on procedure calls by encrypting arguments | |
CN115906056A (zh) | 加载动态库的方法、***、设备、存储介质及程序产品 | |
CN113360181A (zh) | 用于工业互联网的代码调用方法及装置 | |
CN112860306A (zh) | 文件生成方法和装置、文件运行方法和装置、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |