CN108664773A - Java源代码的保护方法及装置 - Google Patents
Java源代码的保护方法及装置 Download PDFInfo
- Publication number
- CN108664773A CN108664773A CN201810384377.XA CN201810384377A CN108664773A CN 108664773 A CN108664773 A CN 108664773A CN 201810384377 A CN201810384377 A CN 201810384377A CN 108664773 A CN108664773 A CN 108664773A
- Authority
- CN
- China
- Prior art keywords
- file
- publishable
- encryption algorithm
- source code
- class loader
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000006870 function Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供一种Java源代码的保护方法及装置,方法包括:使用目标加密算法对字节码文件进行加密,得到加密字节码;将所述加密字节码和所述目标加密算法的加密关联信息生成一个可发布文件,其中,可发布文件的文件结构不同于字节码文件的文件结构。本申请的技术方案可以通过对编译得到的字节码文件进行加密得到加密字节码,然后将加密字节码和加密算法的关联信息生成用于发布的、自定义文件结构的可发布文件,该自定义文件结构的可发布文件可以防止反编译操作,保护其中的Java源代码的源代码逻辑、关键信息。
Description
技术领域
本申请涉及软件保护技术领域,尤其涉及一种Java源代码的保护方法及装置。
背景技术
Java源代码经过编译,生成字节码文件(后缀为.class的文件),所生成的字节码文件在Java虚拟机中解释执行。
由于字节码文件自描述性很强,保留了很多符号以及编译信息,导致Java源代码很容易被反编译成可读性很强的源代码,导致开发者的劳动成果被剽窃或者产品被篡改。现有技术中,可通过对变量进行混淆,对函数标识信息进行混淆,以及打乱代码执行流程或者隐藏关键信息等操作实现对Java源代码的保护,但是第三方仍可通过反编译、反混淆等技术来查看代码中的关键信息和逻辑,不能实现有效的Java源代码保护。
发明内容
有鉴于此,本申请提供一种新的技术方案,可以通过对编译得到的字节码文件进行加密得到加密字节码,然后将加密字节码和加密算法的关联信息生成用于发布的、自定义文件结构的可发布文件,该自定义文件结构的可发布文件可以防止反编译操作,保护其中的Java源代码的源代码逻辑、关键信息。
为实现上述目的,本申请提供技术方案如下:
根据本申请的第一方面,提出了一种Java源代码的保护方法,应用在服务器上,包括:
使用目标加密算法对字节码文件进行加密,得到加密字节码;
将所述加密字节码和所述目标加密算法的加密关联信息生成一个可发布文件,其中,可发布文件的文件结构不同于字节码文件的文件结构。
根据本申请的第二方面,提出了一种Java源代码的保护方法,应用在终端上,所述方法包括:
当接收到运行一个可发布文件的操作时,获取所述可发布文件对应的类加载器,所述可发布文件的文件结构不同于所述业务功能的源代码对应的字节码文件的文件结构;
使用所述类加载器加载所述可发布文件。
根据本申请的第三方面,提出了一种Java源代码的保护装置应用在服务器上,所述装置包括:
第一加密模块,用于使用目标加密算法对字节码文件进行加密,得到加密字节码;
文件生成模块,用于将所述加密字节码和所述目标加密算法的加密关联信息生成一个可发布文件,其中,可发布文件的文件结构不同于字节码文件的文件结构。
根据本申请的第四方面,提出了一种Java源代码的保护装置,应用在终端上,所述装置包括:
获取模块,用于当接收到运行一个可发布文件的操作时,获取所述可发布文件对应的类加载器,所述可发布文件的文件结构不同于所述业务功能的源代码对应的字节码文件的文件结构;
加载模块,用于使用所述类加载器加载所述可发布文件。
根据本申请的第五方面,提出了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第一方面所描述的Java源代码的保护方法。
根据本申请的第六方面,提出了一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第二方面所描述的Java源代码的保护方法。
根据本申请的第七方面,提出了一种服务器,所述服务器包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器,用于执行上述第一方面所描述的Java源代码的保护方法。
根据本申请的第八方面,提出了一种终端,所述终端包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器,用于执行上述第二方面所描述的Java源代码的保护方法。
由以上技术方案可见,本申请使用目标加密算法加密字节码文件后,将加密得到的加密字节码与加密关联信息生成为一个新的可发布文件,该可发布文件的文件结构不同于字节码文件的文件结构,因此可以理解为可发布文件不是一个字节码文件,可发布文件不能够被识别,可达到防止反编译操作的目的,达到保护其中的Java源代码的源代码逻辑、关键信息的效果。
附图说明
图1A是本申请一示例性实施例示出的一种Java源代码的保护方法的流程图;
图1B是图1A所示实施例中显示的可发布文件的文件结构示意图;
图2是本申请另一示例性实施例示出的一种Java源代码的保护方法的流程图;
图3是本申请又一示例性实施例示出的一种Java源代码的保护方法的交互示意图;
图4是本申请一示例性实施例示出的一种Java源代码的保护方法的流程图;
图5是本申请一示例性实施例示出的一种Java源代码的保护装置的结构图;
图6是本申请另一示例性实施例示出的一种Java源代码的保护输入装置的结构图;
图7是本申请一示例性实施例示出的一种Java源代码的保护装置的结构图;
图8是本申请另一示例性实施例示出的一种电子设备的结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与/或本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语第三等来描述各种信息,但这些信息不应限于这些术语。
图1A是本申请一示例性实施例示出的一种Java源代码的保护方法的流程图,图1B是图1A所示实施例中显示的可发布文件的文件结构示意图;该Java源代码的保护方法可应用在服务器(服务器可以理解为一个代码保护平台)上,如图1A所示,包括如下步骤:
步骤101,使用目标加密算法对字节码文件进行加密,得到加密字节码。
在一实施例中,服务器中可以预先配置一组加密算法,可以由操作人员从一组加密算法中选择一个加密算法作为目标加密算法,也可以由服务器随机选择一个加密算法作为目标加密算法。
在一实施例中,开发人员在完成Java源代码的开发和编译后,得到字节码文件(jar包),将字节码文件上传至服务器后,服务器可使用目标加密算法对字节码文件进行加密,得到加密字节码。
步骤102,将加密字节码和目标加密算法的加密关联信息生成一个可发布文件,其中,可发布文件的文件结构不同于字节码文件的文件结构。
在一实施例中,目标加密算法的加密关联信息可以包括但不限于:目标加密算法的标识信息的长度、目标加密算法、扩展字段长度、扩展内容。
在一实施例中,目标加密算法的标识信息可以用于唯一标识目标加密算法,例如,可以为目标加密算法的名称;目标加密算法可以用于指示加密字节码文件的加密算法,例如,可以为加密算法的内容或者加密算法的名称;扩展字段长度记录的是目标加密算法在可扩展文件中所需要占用的额外字段的长度;扩展内容记录的是加密算法所需要用到的额外字段,可以为公钥、解密密钥等。
在一实施例中,可发布文件的文件结构可参见图1B,由魔法数字、目标加密算法的标识信息的长度、目标加密算法、扩展字段长度、扩展内容以及加密字节码等部分组成。魔法数字的长度可以为4个字节,目标加密算法的标识信息的长度所占用的字节可以为4个字节,目标加密算法所占用的字节为n1个字节,扩展字段长度所占用的字节为4个字节、扩展内容所占用的字节为n2个字节,以及加密字节码所占用的字节为n3个字节,其中,n1、n2和n3的值可以由服务器基于具体情况设定。图1B为文件结构的一种展示方式,还可以使用JS对象标记(JavaScript Object Notation,简称为JSON)、Map等数据结构形式表示。
在一实施例中,由于可发布文件的文件结构完全不同于字节码文件的文件结构,因此可发布文件不能够被一般的类加载器或者反编译工具识别,可以从根本上防止反编译。
本实施例中,使用目标加密算法加密字节码文件后,将加密得到的加密字节码与加密关联信息生成为一个新的可发布文件,该可发布文件的文件结构不同于字节码文件的文件结构,因此可以理解为可发布文件不是一个字节码文件,可发布文件不能够被识别,可达到防止反编译操作的目的,达到保护其中的Java源代码的源代码逻辑、关键信息的效果。
本申请另一示例性实施例示出的一种Java源代码的保护方法,包括如下步骤:
步骤101,使用目标加密算法对字节码文件进行加密,得到加密字节码。
步骤102,将加密字节码和目标加密算法的加密关联信息生成一个可发布文件,其中,可发布文件的文件结构不同于字节码文件的文件结构。
步骤103,将可发布文件以及可发布文件对应的类加载器发送至终端。
在一实施例中,Java类加载器与可发布文件的加密算法对应,可在终端请求可发布文件时将对应的类加载器也发送至终端。当终端需要运行可发布文件时,终端可应用对应的Java类加载器解密并运行可发布文件。
在一实施例中,可在终端请求可发布文件时仅发送可发布文件。当终端需要运行可发布文件时,根据终端的请求,将对应的类加载器发送至终端,终端可应用对应的Java类加载器解密并运行可发布文件。
在一实施例中,将可发布文件以及可发布文件对应的类加载器发送至终端的实现方式具体可以为,将可发布文件以及可发布文件对应的类加载器直接发送至终端;在一实施例中,将可发布文件以及可发布文件对应的类加载器发送至终端的实现方式还可以为,先将可发布文件和/或可发布文件对应的类加载器发送至其他服务器,然后经由其他服务器再发送至终端。
在一实施例中,本申请实施例中的类加载器能够读取/加载文件结构与字节码文件不同的可发布文件。
图2是本申请另一示例性实施例示出的一种Java源代码的保护方法的流程图;如图2所示,包括如下步骤:
步骤201,确定目标加密算法,执行步骤202和步骤203。
在一实施例中,服务器中可以预先配置一组加密算法,可以由操作人员从一组加密算法中选择一个加密算法作为目标加密算法,也可以由服务器随机选择一个加密算法作为目标加密算法。
步骤202,使用目标加密算法对字节码文件进行加密,得到加密字节码,执行步骤204。
步骤203,基于目标加密算法的标识信息的实际长度与第一混淆值,得到目标加密算法的标识信息的长度;和/或,基于扩展内容所占用字段的实际长度与第二混淆值,生成扩展字段长度。
在一实施例中,第一混淆值可以与目标加密算法的标识信息的实际长度有关,例如,第一混淆值可以为目标加密算法的标识信息的实际长度的1/2,也即,如果目标加密算法的标识信息的实际长度为2个字节,则可设置第一混淆值为1个字节,可计算目标加密算法的标识信息的实际长度与第一混淆值的和,并将所得到的和作为目标加密算法的标识信息的长度添加到可扩展文件中,或者还可计算目标加密算法的标识信息的实际长度与第一混淆值的差,将所得到的差作为目标加密算法的标识信息的长度添加到可扩展文件中。
在一实施例中,第一混淆值还可以为一个固定值,通过计算目标加密算法的标识信息的实际长度与一个固定值的和/差/乘积/商等,得到目标加密算法的标识信息的长度,添加到可扩展文件中。
在一实施例中,第二混淆值可以与扩展内容所占用字段的实际长度有关,例如,第二混淆值可以为扩展内容所占用字段的实际长度的1/2,也即,如果扩展内容所占用字段的实际长度为2个字节,则可设置第二混淆值为1个字节,可计算扩展内容所占用字段的实际长度与第二混淆值的和,并将所得到的和作为扩展字段长度添加到可扩展文件中,或者还可计算扩展内容所占用字段的实际长度与第二混淆值的差,将所得到的差作为扩展字段长度添加到可扩展文件中。
在一实施例中,第二混淆值还可以为一个固定值,通过计算扩展内容所占用字段的实际长度与一个固定值的和/差/乘积/商等,得到扩展字段长度,添加到可扩展文件中。
步骤204,将加密字节码和目标加密算法的加密关联信息生成一个可发布文件。
在一实施例中,可按照可扩展文件的文件结构,将魔法数字、目标加密算法的标识信息的长度、目标加密算法、扩展字段长度、扩展内容、加密字节码等生成为一个可发布文件。其中,可扩展文件的前4个字节的魔法数字不为字节码文件的魔法数字(也即,0xCAFEBABE),由此,终端可基于魔法数字确定可扩展文件是否为一个加密文件,并获取对应的类加载器对可扩展文件进行加载和使用。
在一实施例中,还可对扩展内容使用第一加密算法进行加密;和/或,对目标加密算法使用第二加密算法进行加密。其中,第一加密算法和第二加密算法可以为相同的加密算法,也可以为不相同的加密算法。通过对扩展内容和/或目标加密算法进行进一步的加密,可以实现进一步的保护。
步骤205,将可发布文件以及可发布文件对应的类加载器发送至终端。
在一实施例中,Java类加载器与可发布文件的加密算法对应,可在终端请求可发布文件时将对应的类加载器也发送至终端。当终端需要运行可发布文件时,终端可应用对应的Java类加载器解密并加载可发布文件。
在一实施例中,服务器(代码保护平台)可直接将可发布文件以及可发布文件对应的类加载器发送至终端。在一实施例中,服务器(代码保护平台)可直接将可发布文件以及可发布文件对应的类加载器发送至用于发布文件的其它平台,如发布平台,由发布平台将可发布文件以及可发布文件对应的类加载发送至终端。
在一实施例中,本申请实施例中的类加载器能够运行文件结构与字节码文件不同的可发布文件。
本实施例中,通过对目标加密算法的标识信息的长度和/或扩展字段长度进行进一步的混淆处理,以及对扩展内容和/或目标加密算法进行进一步的加密可以实现对可扩展文件中的代码逻辑、关键信息、资源文件的进一步保护。
图3是本申请又一示例性实施例示出的一种Java源代码的保护方法的交互示意图;本实施例在上述实施例的基础上,以服务器和用户终端进行交互以实现Java源代码的保护为例进行示例性说明,如图3所示,包括如下步骤:
步骤301,服务器获取开发人员提供的字节码文件。
在一实施例中,开发人员为Java源代码的开发人员,开发人员可将编译Java源代码得到的字节码文件提供给服务器。
步骤302,服务器选择目标加密算法。
步骤303,服务器使用目标加密算法加密字节码文件,并生成可扩展文件。
步骤304,服务器向终端提供可扩展文件和对应的类加载器。
在一实施例中,步骤302-304的描述可参见图2所示实施例的步骤202-205的描述,这里不再详述。
在一实施例中,服务器可在向终端提供可扩展文件时同时向终端提供对应的类加载器。在一实施例中,服务器还可在接收到终端发送的获取目标加密算法对应的类加载器的请求消息时,向终端发送类加载器。其中,终端可在需要运行对应的可扩展文件时向服务器发送请求消息,并获取对应的类加载器。
步骤305,终端使用对应的类加载器加载可扩展文件。
本实施例中,提供了两种向终端发送类加载器的方式,将可发布文件和对应的类加载器同时提供给终端的方式可以避免服务器和终端之间额外的信令交互,而在终端请求时再向终端发送类加载器可以实现对类加载器的进一步保护。
图4是本申请一示例性实施例示出的一种Java源代码的保护方法的流程图;该Java源代码的保护方法可应用在终端上,如图4所示,包括如下步骤:,如图4所示,包括如下步骤:
步骤401,当接收到运行一个可发布文件的操作时,获取可发布文件对应的类加载器,可发布文件的文件结构不同于业务功能的源代码对应的字节码文件的文件结构。
在一实施例中,当终端需要运行一个可发布文件对应的业务功能时,可获取可发布文件对应的类加载器。
在一实施例中,如果服务器向终端发送可发布文件时也发送了类加载器,则终端可在本地静态获取对应的类加载器,如果服务器向终端发送可发布文件时没有发送类加载器,则终端可动态向服务器发送获取可发布文件的类加载器的请求消息,并接收服务器返回的类加载器。
在一实施例中,可发布文件可以为一个业务功能模块对应的Java源代码的字节码文件,例如,腾讯软件的会员功能对应的Java源代码的字节码文件,如果用户运行会员功能,则腾讯软件的主窗口需要获取会员功能对应的可发布文件的类加载器。
在一实施例中,可发布文件可以由魔法数字、目标加密算法的标识信息的长度、目标加密算法、扩展字段长度、扩展内容以及加密字节码等部分组成。由于可发布文件的文件结构完全不同于字节码文件的文件结构,因此可发布文件不能够被一般的类加载器或者反编译工具识别,需要专门的对应的类加载器加载和使用。
步骤402,使用类加载器加载可发布文件。
在一实施例中,终端使用类加载器加载可发布文件时,如果可发布文件中的部分内容,如目标加密算法和/或扩展内容显示为密文形式,也即,目标加密算法和/或扩展内容被使用另外的加密算法(如步骤204中提到的第一加密算法、第二加密算法)进行了加密保护,则可使用对应的解密算法进行解密。
本实施例中,终端在需要运行使用目标加密算法加密的字节码文件所组成的可扩展文件时,需要获取一个专门的对应的类加载器,可达到防止反编译操作的目的,达到保护其中的Java源代码的源代码逻辑、关键信息的效果。
与前述Java源代码的保护方法的实施例相对应,本申请还提供了Java源代码的保护装置的实施例。
图5是本申请一示例性实施例示出的一种Java源代码的保护装置的结构图,装置可应用在服务器上,如图5所示,Java源代码的保护装置包括:
第一加密模块51,用于使用目标加密算法对字节码文件进行加密,得到加密字节码;
文件生成模块52,用于将加密字节码和目标加密算法的加密关联信息生成一个可发布文件,其中,可发布文件的文件结构不同于字节码文件的文件结构。
图6是本申请另一示例性实施例示出的一种Java源代码的保护装置的结构图,如图6所示,在上述图5所示实施例的基础上,
在一实施例中,装置还包括:
发送模块53,用于将可发布文件以及可发布文件对应的类加载器发送至终端
在一实施例中,发送模块53具体用于:
接收终端发送的获取目标加密算法对应的类加载器的请求消息;
向终端发送类加载器。
在一实施例中,可发布文件由魔法数字、目标加密算法的标识信息的长度、目标加密算法、扩展字段长度、扩展内容以及加密字节码组成。
在一实施例中,装置还包括:
第一计算模块54,用于基于目标加密算法的标识信息的实际长度与第一混淆值,得到目标加密算法的标识信息的长度;和/或,
第二计算模块55,用于基于扩展内容所占用字段的实际长度与第二混淆值,生成扩展字段长度。
在一实施例中,装置还包括:
第二加密模块56,用于对扩展内容使用第一加密算法进行加密;和/或,
第三加密模块57,用于对目标加密算法使用第二加密算法进行加密。
图7是本申请一示例性实施例示出的一种Java源代码的保护装置的结构图,装置可应用在终端上,如图7所示,Java源代码的保护装置包括:
获取模块71,用于当接收到运行一个可发布文件的操作时,获取可发布文件对应的类加载器,可发布文件的文件结构不同于业务功能的源代码对应的字节码文件的文件结构;
加载模块72,用于使用类加载器加载可发布文件。
在一实施例中,获取模块71具体用于:
从本地获取可发布文件的类加载器;或者,
向服务器发送获取可发布文件的类加载器的请求消息;
接收服务器基于请求消息返回的类加载器。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
在示例性实施例中,本申请还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,该计算机程序用于执行上述建图方法,其中,计算机可读存储介质可以是只读存储器(ROM)、随机存取存储器(RAM)、光盘只读存储器(CD-ROM)、磁带、软盘和光数据存储设备等。
图8是本申请另一示例性实施例示出的一种电子设备的结构图;对应于上述图1A-图4任一实施例提供的Java源代码的保护方法,如图8所示,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成上述图5-图6所示实施例提供的Java源代码的保护装置或者图7所示实施例提供的Java源代码的保护装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以上处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (14)
1.一种Java源代码的保护方法,其特征在于,应用在服务器上,所述方法包括:
使用目标加密算法对字节码文件进行加密,得到加密字节码;
将所述加密字节码和所述目标加密算法的加密关联信息生成一个可发布文件,其中,可发布文件的文件结构不同于字节码文件的文件结构。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述可发布文件以及所述可发布文件对应的类加载器发送至终端。
3.根据权利要求2所述的方法,其特征在于,所述将所述可发布文件以及所述可发布文件对应的类加载器发送至终端,包括:
接收所述终端发送的获取目标加密算法对应的类加载器的请求消息;
向所述终端发送所述类加载器。
4.根据权利要求1所述的方法,其特征在于,所述可发布文件由魔法数字、所述目标加密算法的标识信息的长度、所述目标加密算法、扩展字段长度、扩展内容以及所述加密字节码组成。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
基于所述目标加密算法的标识信息的实际长度与第一混淆值,得到所述目标加密算法的标识信息的长度;和/或,
基于所述扩展内容所占用字段的实际长度与第二混淆值,生成所述扩展字段长度。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
对所述扩展内容使用第一加密算法进行加密;和/或,
对所述目标加密算法使用第二加密算法进行加密。
7.一种Java源代码的保护方法,其特征在于,应用在终端上,所述方法包括:
当接收到运行一个可发布文件的操作时,获取所述可发布文件对应的类加载器,所述可发布文件的文件结构不同于所述业务功能的源代码对应的字节码文件的文件结构;
使用所述类加载器加载所述可发布文件。
8.根据权利要求7所述的方法,其特征在于,所述获取所述可发布文件对应的类加载器,包括:
从本地获取所述可发布文件的类加载器;或者,
向服务器发送获取所述可发布文件的类加载器的请求消息;
接收所述服务器基于所述请求消息返回的类加载器。
9.一种Java源代码的保护装置,其特征在于,应用在服务器上,所述装置包括:
第一加密模块,用于使用目标加密算法对字节码文件进行加密,得到加密字节码;
文件生成模块,用于将所述加密字节码和所述目标加密算法的加密关联信息生成一个可发布文件,其中,可发布文件的文件结构不同于字节码文件的文件结构。
10.一种Java源代码的保护装置,其特征在于,应用在终端上,所述装置包括:
获取模块,用于当接收到运行一个可发布文件的操作时,获取所述可发布文件对应的类加载器,所述可发布文件的文件结构不同于所述业务功能的源代码对应的字节码文件的文件结构;
加载模块,用于使用所述类加载器加载所述可发布文件。
11.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-6任一所述的Java源代码的保护方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求7-8任一所述的Java源代码的保护方法。
13.一种服务器,其特征在于,所述服务器包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器,用于执行上述权利要求1-6任一所述的Java源代码的保护方法。
14.一种终端,其特征在于,所述终端包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器,用于执行上述权利要求7-8任一所述的Java源代码的保护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810384377.XA CN108664773B (zh) | 2018-04-26 | 2018-04-26 | Java源代码的保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810384377.XA CN108664773B (zh) | 2018-04-26 | 2018-04-26 | Java源代码的保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108664773A true CN108664773A (zh) | 2018-10-16 |
CN108664773B CN108664773B (zh) | 2021-07-30 |
Family
ID=63781291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810384377.XA Active CN108664773B (zh) | 2018-04-26 | 2018-04-26 | Java源代码的保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664773B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109583156A (zh) * | 2018-12-05 | 2019-04-05 | 杭州安恒信息技术股份有限公司 | 基于认证授权的代码保护方法、装置、系统及设备 |
CN109598106A (zh) * | 2018-12-05 | 2019-04-09 | 国能日新科技股份有限公司 | 企业级bs应用保护方法、装置与电子设备 |
CN110096851A (zh) * | 2019-05-13 | 2019-08-06 | 北京奇艺世纪科技有限公司 | 一种字节码的加密方法及系统 |
CN111159661A (zh) * | 2018-11-08 | 2020-05-15 | 迈普通信技术股份有限公司 | 一种防止反编译方法、装置、电子设备及存储介质 |
CN111159658A (zh) * | 2019-12-16 | 2020-05-15 | 广州三七互娱科技有限公司 | 字节码处理方法、系统、装置、计算机设备和存储介质 |
CN111523128A (zh) * | 2020-04-03 | 2020-08-11 | 咪咕文化科技有限公司 | 信息保护方法、系统、电子设备及介质 |
CN111984944A (zh) * | 2020-08-28 | 2020-11-24 | 重庆小雨点小额贷款有限公司 | 一种源代码处理方法、相关装置及存储介质 |
CN112148318A (zh) * | 2020-10-12 | 2020-12-29 | Oppo广东移动通信有限公司 | 应用包发布方法、应用方法、装置、介质、服务器及设备 |
CN112966227A (zh) * | 2021-02-04 | 2021-06-15 | 南方电网深圳数字电网研究院有限公司 | 代码加密解密方法和装置、存储介质 |
WO2021217980A1 (zh) * | 2020-04-30 | 2021-11-04 | 平安科技(深圳)有限公司 | java代码的加壳方法与系统 |
CN114943062A (zh) * | 2022-05-20 | 2022-08-26 | 中电金信软件有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN115686525A (zh) * | 2022-09-09 | 2023-02-03 | 上海和今信息科技有限公司 | 一种代码处理方法及装置 |
CN117573142A (zh) * | 2024-01-15 | 2024-02-20 | 广州大学 | 基于模拟执行的java代码反混淆器 |
CN117828555A (zh) * | 2024-03-05 | 2024-04-05 | 山东浪潮科学研究院有限公司 | 一种低成本Java源代码保护方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814124A (zh) * | 2010-04-20 | 2010-08-25 | 浪潮电子信息产业股份有限公司 | 一种基于Java的软件安全性加强的方法 |
CN105022936A (zh) * | 2014-04-30 | 2015-11-04 | 北京畅游天下网络技术有限公司 | 一种类class文件加密解密方法和装置 |
CN107784231A (zh) * | 2016-08-24 | 2018-03-09 | 北京花甲科技有限公司 | 指令的执行和动态编译方法、装置及电子设备 |
-
2018
- 2018-04-26 CN CN201810384377.XA patent/CN108664773B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814124A (zh) * | 2010-04-20 | 2010-08-25 | 浪潮电子信息产业股份有限公司 | 一种基于Java的软件安全性加强的方法 |
CN105022936A (zh) * | 2014-04-30 | 2015-11-04 | 北京畅游天下网络技术有限公司 | 一种类class文件加密解密方法和装置 |
CN107784231A (zh) * | 2016-08-24 | 2018-03-09 | 北京花甲科技有限公司 | 指令的执行和动态编译方法、装置及电子设备 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159661A (zh) * | 2018-11-08 | 2020-05-15 | 迈普通信技术股份有限公司 | 一种防止反编译方法、装置、电子设备及存储介质 |
CN109583156A (zh) * | 2018-12-05 | 2019-04-05 | 杭州安恒信息技术股份有限公司 | 基于认证授权的代码保护方法、装置、系统及设备 |
CN109598106A (zh) * | 2018-12-05 | 2019-04-09 | 国能日新科技股份有限公司 | 企业级bs应用保护方法、装置与电子设备 |
CN110096851A (zh) * | 2019-05-13 | 2019-08-06 | 北京奇艺世纪科技有限公司 | 一种字节码的加密方法及系统 |
CN110096851B (zh) * | 2019-05-13 | 2021-02-09 | 北京奇艺世纪科技有限公司 | 一种字节码的加密方法及系统 |
CN111159658A (zh) * | 2019-12-16 | 2020-05-15 | 广州三七互娱科技有限公司 | 字节码处理方法、系统、装置、计算机设备和存储介质 |
CN111159658B (zh) * | 2019-12-16 | 2022-04-01 | 广州三七互娱科技有限公司 | 字节码处理方法、系统、装置、计算机设备和存储介质 |
CN111523128A (zh) * | 2020-04-03 | 2020-08-11 | 咪咕文化科技有限公司 | 信息保护方法、系统、电子设备及介质 |
CN111523128B (zh) * | 2020-04-03 | 2023-12-08 | 咪咕文化科技有限公司 | 信息保护方法、系统、电子设备及介质 |
WO2021217980A1 (zh) * | 2020-04-30 | 2021-11-04 | 平安科技(深圳)有限公司 | java代码的加壳方法与系统 |
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广东移动通信有限公司 | 应用包发布方法、应用方法、装置、介质、服务器及设备 |
CN112966227A (zh) * | 2021-02-04 | 2021-06-15 | 南方电网深圳数字电网研究院有限公司 | 代码加密解密方法和装置、存储介质 |
CN114943062A (zh) * | 2022-05-20 | 2022-08-26 | 中电金信软件有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN114943062B (zh) * | 2022-05-20 | 2023-06-16 | 中电金信软件有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN115686525A (zh) * | 2022-09-09 | 2023-02-03 | 上海和今信息科技有限公司 | 一种代码处理方法及装置 |
CN117573142A (zh) * | 2024-01-15 | 2024-02-20 | 广州大学 | 基于模拟执行的java代码反混淆器 |
CN117573142B (zh) * | 2024-01-15 | 2024-04-23 | 广州大学 | 基于模拟执行的java代码反混淆器 |
CN117828555A (zh) * | 2024-03-05 | 2024-04-05 | 山东浪潮科学研究院有限公司 | 一种低成本Java源代码保护方法及装置 |
CN117828555B (zh) * | 2024-03-05 | 2024-05-28 | 山东浪潮科学研究院有限公司 | 一种低成本Java源代码保护方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108664773B (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108664773B (zh) | Java源代码的保护方法及装置 | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
CN111159658B (zh) | 字节码处理方法、系统、装置、计算机设备和存储介质 | |
US9501646B2 (en) | Program verification apparatus, program verification method, and computer readable medium | |
CN111656345B (zh) | 启用容器文件中加密的软件模块 | |
CN109614769A (zh) | 按照参考平台清单和数据封装的安全操作系统启动 | |
JP7089303B2 (ja) | 推論装置、処理システム、推論方法及び推論プログラム | |
WO2019062015A1 (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
CN105229652A (zh) | 检测针对软件应用的利用 | |
US9292708B2 (en) | Protection of interpreted source code in virtual appliances | |
Lee et al. | Security issues on the CNG cryptography library (Cryptography API: Next Generation) | |
CN107577715B (zh) | So文件的保护方法及装置 | |
CN112966229A (zh) | 安全运行sdk的方法及装置 | |
CN117313046A (zh) | 一种代码加固方法、代码加载方法、设备及介质 | |
US10628561B2 (en) | Technique for enabling nominal flow of an executable file | |
CN108021790B (zh) | 文件保护方法、装置、计算设备及计算机存储介质 | |
CN114297589A (zh) | 应用程序的资源保护方法、资源读取方法及装置 | |
EP3876119A1 (en) | Method for protecting a data in a software application | |
US20190199694A1 (en) | Individual encryption of control commands | |
JP7364241B2 (ja) | 署名生成装置、署名生成方法及び署名プログラム | |
CN114139117A (zh) | 应用程序加固方法、装置、电子设备及存储介质 | |
CN110298146B (zh) | 一种应用程序的处理、运行方法及装置 | |
CN113220314A (zh) | App资源加载及apk生成方法、装置、设备及介质 | |
CN108259490B (zh) | 一种客户端校验方法及装置 | |
CN115994370B (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 |