CN108170433A - 一种Java代码的混淆方法、恢复方法及其装置 - Google Patents
一种Java代码的混淆方法、恢复方法及其装置 Download PDFInfo
- Publication number
- CN108170433A CN108170433A CN201711408742.8A CN201711408742A CN108170433A CN 108170433 A CN108170433 A CN 108170433A CN 201711408742 A CN201711408742 A CN 201711408742A CN 108170433 A CN108170433 A CN 108170433A
- Authority
- CN
- China
- Prior art keywords
- file
- obscured
- java
- java class
- class file
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000011084 recovery Methods 0.000 claims description 48
- 239000007943 implant Substances 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000686 essence Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Java代码的混淆方法、恢复方法及其装置,该Java代码的混淆方法包括:定义混淆规则,以及将混淆规则存储在混淆规则文件中;根据混淆规则,对Java类文件进行混淆,获得混淆的Java类文件;将混淆的Java类文件和混淆规则文件打包成JAR文件。本发明通过定义混淆规则,灵活地配置哪些Java类文件需要混淆,此外,混淆的Java类文件还实现了混淆细节,从而防止被反编译,以及混淆后的Java类文件依然符合Java类文件格式规范,能够参与编译,而且不会造成Java程序依赖的其他第三方框架和类库运行时的错误。
Description
技术领域
本发明涉及计算机安全领域,具体来说,涉及一种Java代码的混淆方法、恢复方法及其装置。
背景技术
源代码作为科技公司的核心资产应当被严格保护起来,以防他人窃取。虽然绝大多数公司都有一系列安全措施杜绝源代码泄露,但是Java程序由于其自身特点,存在源代码被泄露的风险。Java编译器将源代码编译后生成Java虚拟机可以执行的字节码,并以特定的文件格式和内容布局将字节码存储在Java类文件中。Java反编译工具可以读取Java类文件的内容,从而反向编译出Java程序的源代码。
对于做系统输出或者运营公有云服务的科技公司来说,Java程序是部署在客户的计算机环境,或者第三方公有云平台(例如,阿里云,腾讯云等)。因此,如何防止客户未经授权传播Java程序,或者黑客窃取Java程序,进而反编译Java类文件导致源代码细节泄露,是一个亟待解决的问题。
目前防止反编译的技术主要分为两种:命名混淆技术和Java类文件加密技术,具体地:
命名混淆技术是通过更改Java程序中的变量名、方法名等方式,降低代码可读性,增大阅读反编译后代码的难读。但本质上并没有解决问题,通过仔细阅读反编译后的代码,还是能够理解程序的实现细节;
类文件加密技术是通过使用加密算法,将Java类文件内容全部加密的方式来阻止反编译。该方法从本质上解决了反编译的问题,但同时带来其他问题。首先,加密后的类文件不符合Java类文件格式规范,不是一个合法的Java类文件。如果其他Java类在编译时期依赖这个类,Java编译器因无法解析加密后的Java类文件而报错,导致该方法不能用于Java类库的加密。其次,很多第三方框架和类库会在程序启动或者运行时动态地读取Java类文件。如果Java程序使用了这些第三方框架和类库,由于Java类文件被加密,导致运行时出错。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种Java代码的混淆方法、恢复方法及其装置,其可以灵活地配置混淆规则,从而决定哪些Java类需要混淆,混淆后的Java类文件依然能够参与编译,而且不会造成其他第三方框架和类库运行时的错误。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种Java代码的混淆方法。
该Java代码的混淆方法包括:定义混淆规则,以及将混淆规则存储在混淆规则文件中;根据混淆规则,对Java类文件进行混淆,获得混淆的Java类文件;将混淆的Java类文件和混淆规则文件打包成JAR文件。
根据本发明的一个实施例,根据混淆规则,对Java类文件进行混淆,获得混淆的Java类文件包括:根据混淆规则,确定需混淆的Java类文件;将需混淆的Java类文件中类方法的代码段进行混淆,从而获得混淆的Java类文件。
根据本发明的另一方面,提供了一种Java代码的恢复方法。
该Java代码的恢复方法包括:将恢复算法写入动态库,将动态库植入到Java程序运行的操作系统中;以及调用指定的类加载器,以及通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件。
根据本发明的一个实施例,通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件包括:指定的类加载器读取JAR文件中的混淆规则文件中的混淆规则,判断Java类文件是否需要恢复;在判断Java类文件需要恢复的情况下,通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件。
根据本发明的一个实施例,通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件包括:将Java类文件中类方法的代码段发送至动态库进行恢复;动态库将恢复后的代码段返回。
根据本发明的另一方面,提供了一种Java代码的混淆装置。
该Java代码的混淆装置包括:定义存储模块,用于定义混淆规则,以及将混淆规则存储在混淆规则文件中;混淆模块,用于根据混淆规则,对Java类文件进行混淆,获得混淆的Java类文件;打包模块,用于将混淆的Java类文件和混淆规则文件打包成JAR文件。
根据本发明的一个实施例,混淆模块包括:确定模块,用于根据混淆规则,确定需混淆的Java类文件;混淆子模块,用于将需混淆的Java类文件中类方法的代码段进行混淆,从而获得混淆的Java类文件。
根据本发明的另一方面,提供了一种Java代码的恢复装置。
该Java代码的恢复装置包括:植入模块,用于将恢复算法写入动态库,将动态库植入到Java程序运行的操作系统中;以及调用恢复模块,用于调用指定的类加载器,以及通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件。
根据本发明的一个实施例,调用恢复模块包括:判断模块,用于读取JAR文件中的混淆规则文件中的混淆规则,判断Java类文件是否需要恢复;恢复模块,用于在判断Java类文件需要恢复的情况下,通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件。
根据本发明的一个实施例,恢复模块包括:发送模块,用于将Java类文件中类方法的代码段发送至动态库进行恢复;返回模块,用于将恢复后的代码段返回。
本发明的有益技术效果在于:
本发明通过定义混淆规则,灵活地配置哪些Java类文件需要混淆,此外,混淆的Java类文件还实现了混淆细节,从而防止被反编译,以及混淆后的Java类文件依然符合Java类文件格式规范,能够参与编译,而且不会造成Java程序依赖的其他第三方框架和类库运行时的错误。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的Java代码的混淆方法的流程图;
图2是根据本发明实施例的混淆过程的示意图;
图3是根据本发明实施例的Java代码的恢复方法的流程图;
图4是根据本发明实施例的恢复类文件过程的示意图;
图5是根据本发明实施例的Java代码的混淆装置的框图;
图6是根据本发明实施例的Java代码的恢复装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种Java代码的混淆方法、恢复方法及其装置。
如图1所示,根据本发明实施例的Java类文件的混淆方法包括:步骤S101,定义混淆规则,以及将混淆规则存储在混淆规则文件中,其中,该混淆规则定义了哪些Java类文件需要混淆;步骤S103,根据混淆规则,对Java类文件进行混淆,获得混淆的Java类文件;步骤S105,将混淆的Java类文件和混淆规则文件打包成JAR文件。
借助于本发明的上述技术方案,通过定义混淆规则,灵活地配置哪些Java类文件需要混淆,此外,混淆的Java类文件还实现了混淆细节,从而防止被反编译,以及混淆后的Java类文件依然符合Java类文件格式规范,能够参与编译,而且不会造成Java程序依赖的其他第三方框架和类库运行时的错误。为了更好的描述本发明的技术方案,下面通过具体的实施例对该混淆方法进行详细的描述。
根据本发明的一个实施例,根据混淆规则,对Java类文件进行混淆,获得混淆的Java类文件包括:根据混淆规则,确定需混淆的Java类文件;将需混淆的Java类文件中类方法的代码段进行混淆,从而获得混淆的Java类文件,从而混淆了实现细节,同时,混淆的Java类方法的代码段的大小没有发生改变,因此没有破坏Java类文件结构,此外,混淆的Java类文件仍然能够参与Java编译,而且也不会造成Java程序依赖的其他第三方框架和类库的运行时错误。
为了更好的描述本发明的技术方案,下面通过具体的实施例进行详细的描述。
如图2所示,首先,对Java源文件进行编译,获得类文件,其中,Java源文件指用Java语言写出来的代码保存为文件后的结果,源文件是相对目标文件和可执行文件而言的,而Java类文件则是利用Java编译器生成的编译文件,其是用来给Java虚拟机执行的机器语言。随后将混淆规则写入混淆规则文件或混淆规则文件(如Manifest文件)中,混淆规则定义了哪些Java类文件需要混淆。。随后,读取混淆规则文件中的混淆规则,判断Java类文件是否需要混淆,在Java类文件需要混淆的情况下,将Java类文件中类方法的代码段进行混淆,并重新写入Java类文件中。此外,在Java类文件不需要混淆的情况下,无需对该Java类文件进行混淆处理。最后,将混淆后的Java类文件和混淆规则文件打包成JAR文件,该JAR文件是将许多文件组合成的一个压缩文件。
此外,Java类文件格式是Sun公司开发设计的一种文件格式,其制定了编译器生成的Java类的字节码存储于文件的规范,例如,根据本发明的一个实施例,以上示出了类文件的格式。
另外,在上述代码段中的method_info部分存储了Java类的所有方法的信息,例如,根据本发明的一个实施例,以下出了method_info结构。
此外,在method_info的结构中,attributes存储了Java类方法的很多属性,其中一个属性为Code属性,也就是本发明中所述的Java类方法的代码段例如,根据本发明的一个实施例,以下出了Code结构。
另外,Code结构里code[code_length]是一个变长的数组,其存储了Java类方法的Java指令信息,也就是Java类方法的实现细节,从而通过混淆该数组,从而混淆实现细节,从而防止被反编译,进而避免了源代码被泄露造成经济损失的情况。
此外,以下还是出了将混淆的Java类文件和混淆规则文件打包成JAR文件的目录结构。
根据本发明的实施例,还提供了一种Java代码的恢复方法。
如图3所示,根据本发明实施例的Java代码的恢复方法包括:步骤S301,将恢复算法写入动态库,将动态库植入到Java程序运行的操作系统中;步骤S302,调用指定的类加载器,以及通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件。
根据本发明的一个实施例,通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件包括:指定的类加载器读取JAR文件中的混淆规则文件中的混淆规则,判断Java类文件是否需要恢复;在判断Java类文件需要恢复的情况下,通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件。
根据本发明的一个实施例,通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件包括:将Java类文件中类方法的代码段发送至动态库进行恢复;动态库将恢复后的代码段返回。
为了更好的描述本发明的技术方案,下面通过具体的实施例对该恢复方法进行详细的描述。
如图4所示,首先,JAR文件内包括:混淆后的Java类文件和混淆规则文件,通过读取JAR文件中的混淆规则文件中的混淆规则,判断该Java类文件是否需要恢复,如果不需要恢复,那么由Java默认类加载器完成加载;而如果需要恢复,调用指定的类加载器,以及通过指定的类加载器调用动态库中的恢复算法,随后读取Java类文件内容,将类方法的代码段读取出来,将Java类文件中类方法的代码段发送至动态库进行恢复,动态库恢复代码段后再将数据返回。例如,根据本发明的一个实施例,以下示出了混淆规则文件的文件格式。
为了更好的描述本发明的技术方案,下面通过具体的实施例对本发明的技术方案进行详细的描述。
1)、将混淆规则写入混淆规则文件中,例如,根据本发明的一个实施例,该混淆规则为:
Obfuscation:com.example.credential
Skip-Obfuscation:com.example.public
其中,该混淆规则指定com.example.credentail包下的所有Java类需要做混淆,而com.example.public包下的所有Java类不需做混淆。
2)、混淆类文件
读取Java编译器编译生成的Java类文件,参照混淆规则,如果该类文件需要做混淆,那么根据类文件格式规范,定位Java类文件里每一个方法的Code属性,将其内容混淆。
此外,可以灵活设计混淆规则,但混淆后的内容大小必须和混淆前一致,否则会破坏Java类文件结构。例如,根据本发明的一个实施例,假设该数组中的每个元素i,当前元素在整个数组中的位置为p,代码段大小值为n,计算出i1=i^p^n(^表示按位异或操作),用i1值替换原有的i值,从而实现混淆,最后将混淆后的内容重新写回Java类文件中。
3)、打包
将混淆后的Java类文件和混淆规则文件一起打包成JAR文件。
4)、类加载器
由于Java类文件经过混淆,Java内置的类加载器无法正常加载混淆后的类文件,所以需要使用特定的类加载器,通过继承Java默认类加载器,重新实现类加载过程,恢复被混淆的代码段。
当需要加载一个Java类文件的时候,加载器读取混淆规则文件,判断该Java类文件是否需要恢复,如果不需要恢复,那么由Java默认类加载器完成加载;如果需要恢复,那么通过Java本地方法调用,将混淆后的代码段传入负责恢复的动态库,得到恢复后的代码段。
5)、动态库
该动态库由C语言实现,植入运行时的操作系统。类加载器通过Java本地方法调用方式,将混淆后的代码段传入,在动态库内完成恢复,再返回给类加载器,此外,混淆和恢复算法是可以灵活地替换和升级的。
根据本发明的另一方面,提供了一种Java代码的混淆装置。
如图5所示,该Java代码的混淆装置包括:定义存储模块51,用于定义混淆规则,以及将混淆规则存储在混淆规则文件中;混淆模块52,用于根据混淆规则,对Java类文件进行混淆,获得混淆的Java类文件;打包模块,用于将混淆的Java类文件和混淆规则文件打包成JAR文件。
根据本发明的一个实施例,混淆模块52包括:确定模块(未示出),用于根据混淆规则,确定需混淆的Java类文件;混淆子模块(未示出),用于将需混淆的Java类文件中类方法的代码段进行混淆,从而获得混淆的Java类文件。
根据本发明的另一方面,提供了一种Java代码的恢复装置。
如图6所示,该Java代码的恢复装置包括:植入模块61,用于将恢复算法写入动态库,将动态库植入到Java程序运行的操作系统中;以及调用恢复模块62,用于调用指定的类加载器,以及通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件。
根据本发明的一个实施例,调用恢复模块62包括:判断模块(未示出),用于读取JAR文件中的混淆规则文件中的混淆规则,判断Java类文件是否需要恢复;恢复模块(未示出),用于在判断Java类文件需要恢复的情况下,通过指定的类加载器调用动态库中的恢复算法,从而恢复混淆的Java类文件。
根据本发明的一个实施例,恢复模块包括:发送模块(未示出),用于将Java类文件中类方法的代码段发送至动态库进行恢复;返回模块(未示出),用于将恢复后的代码段返回。
综上所述,借助于本发明的上述技术方案,通过定义混淆规则,灵活地配置哪些Java类文件需要混淆,此外,混淆的Java类文件还实现了混淆细节,从而防止被反编译,以及混淆后的Java类文件依然符合Java类文件格式规范,能够参与编译,而且不会造成Java程序依赖的其他第三方框架和类库运行时的错误。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种Java代码的混淆方法,其特征在于,包括:
定义混淆规则,以及将所述混淆规则存储在混淆规则文件中;
根据所述混淆规则,对Java类文件进行混淆,获得混淆的Java类文件;
将所述混淆的Java类文件和所述混淆规则文件打包成JAR文件。
2.根据权利要求1所述的混淆方法,其特征在于,根据所述混淆规则,对Java类文件进行混淆,获得混淆的Java类文件包括:
根据所述混淆规则,确定需混淆的Java类文件;
将所述需混淆的Java类文件中类方法的代码段进行混淆,从而获得所述混淆的Java类文件。
3.一种Java代码的恢复方法,其特征在于,包括:
将恢复算法写入动态库,将所述动态库植入到Java程序运行的操作系统中;以及
调用指定的类加载器,以及通过所述指定的类加载器调用所述动态库中的恢复算法,从而恢复混淆的Java类文件。
4.根据权利要求3所述的恢复方法,其特征在于,通过所述指定的类加载器调用所述动态库中的恢复算法,从而恢复混淆的Java类文件包括:
所述指定的类加载器读取JAR文件中的混淆规则文件中的混淆规则,判断所述Java类文件是否需要恢复;
在判断所述Java类文件需要恢复的情况下,通过所述指定的类加载器调用所述动态库中的恢复算法,从而恢复所述混淆的Java类文件。
5.根据权利要求4所述的恢复方法,其特征在于,通过所述指定的类加载器调用所述动态库中的恢复算法,从而恢复所述混淆的Java类文件包括:
将所述Java类文件中类方法的代码段发送至所述动态库进行恢复;
所述动态库将恢复后的代码段返回。
6.一种Java代码的混淆装置,其特征在于,包括:
定义存储模块,用于定义混淆规则,以及将所述混淆规则存储在混淆规则文件中;
混淆模块,用于根据所述混淆规则,对Java类文件进行混淆,获得混淆的Java类文件;
打包模块,用于将所述混淆的Java类文件和所述混淆规则文件打包成JAR文件。
7.根据权利要求6所述的混淆装置,其特征在于,所述混淆模块包括:
确定模块,用于根据所述混淆规则,确定需混淆的Java类文件;
混淆子模块,用于将所述需混淆的Java类文件中类方法的代码段进行混淆,从而获得所述混淆的Java类文件。
8.一种Java代码的恢复装置,其特征在于,包括:
植入模块,用于将恢复算法写入动态库,将所述动态库植入到Java程序运行的操作系统中;以及
调用恢复模块,用于调用指定的类加载器,以及通过所述指定的类加载器调用所述动态库中的恢复算法,从而恢复混淆的Java类文件。
9.根据权利要求8所述的恢复装置,其特征在于,所述调用恢复模块包括:
判断模块,用于读取JAR文件中的混淆规则文件中的混淆规则,判断所述Java类文件是否需要恢复;
恢复模块,用于在判断所述Java类文件需要恢复的情况下,通过所述指定的类加载器调用所述动态库中的恢复算法,从而恢复所述混淆的Java类文件。
10.根据权利要求9所述的恢复方法,其特征在于,所述恢复模块包括:
发送模块,用于将所述Java类文件中类方法的代码段发送至所述动态库进行恢复;
返回模块,用于将恢复后的代码段返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711408742.8A CN108170433A (zh) | 2017-12-22 | 2017-12-22 | 一种Java代码的混淆方法、恢复方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711408742.8A CN108170433A (zh) | 2017-12-22 | 2017-12-22 | 一种Java代码的混淆方法、恢复方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108170433A true CN108170433A (zh) | 2018-06-15 |
Family
ID=62523703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711408742.8A Pending CN108170433A (zh) | 2017-12-22 | 2017-12-22 | 一种Java代码的混淆方法、恢复方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108170433A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109409037A (zh) * | 2018-09-29 | 2019-03-01 | 阿里巴巴集团控股有限公司 | 一种数据混淆规则的生成方法、装置及设备 |
CN111190601A (zh) * | 2019-12-25 | 2020-05-22 | 航天信息股份有限公司 | 面向安卓应用程序的渐进控制流混淆方法和电子设备 |
CN114090965A (zh) * | 2021-11-22 | 2022-02-25 | 全景智联(武汉)科技有限公司 | java代码混淆方法、系统、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6862683B1 (en) * | 2000-03-24 | 2005-03-01 | Novell, Inc. | Method and system for protecting native libraries |
CN101807239A (zh) * | 2010-03-29 | 2010-08-18 | 山东高效能服务器和存储研究院 | 一种防止源代码反编译的方法 |
CN104239757A (zh) * | 2014-09-30 | 2014-12-24 | 北京奇虎科技有限公司 | 应用程序防止逆向的方法及装置、运行方法及终端 |
-
2017
- 2017-12-22 CN CN201711408742.8A patent/CN108170433A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6862683B1 (en) * | 2000-03-24 | 2005-03-01 | Novell, Inc. | Method and system for protecting native libraries |
CN101807239A (zh) * | 2010-03-29 | 2010-08-18 | 山东高效能服务器和存储研究院 | 一种防止源代码反编译的方法 |
CN104239757A (zh) * | 2014-09-30 | 2014-12-24 | 北京奇虎科技有限公司 | 应用程序防止逆向的方法及装置、运行方法及终端 |
Non-Patent Citations (2)
Title |
---|
于庆: "基于动态解密技术的Java_Web源代码保护研究", 《万方数据库》 * |
霍建雷: "用于Java软件保护的代码混淆技术研究与实现", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109409037A (zh) * | 2018-09-29 | 2019-03-01 | 阿里巴巴集团控股有限公司 | 一种数据混淆规则的生成方法、装置及设备 |
CN109409037B (zh) * | 2018-09-29 | 2022-04-29 | 创新先进技术有限公司 | 一种数据混淆规则的生成方法、装置及设备 |
CN111190601A (zh) * | 2019-12-25 | 2020-05-22 | 航天信息股份有限公司 | 面向安卓应用程序的渐进控制流混淆方法和电子设备 |
CN114090965A (zh) * | 2021-11-22 | 2022-02-25 | 全景智联(武汉)科技有限公司 | java代码混淆方法、系统、计算机设备及存储介质 |
CN114090965B (zh) * | 2021-11-22 | 2024-05-17 | 全景智联(武汉)科技有限公司 | java代码混淆方法、系统、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
CN103827880B (zh) | 保护非本机代码安全的方法 | |
EP2430584B1 (en) | Interlocked binary protection using whitebox cryptography | |
EP3038004A1 (en) | Method for providing security for common intermediate language-based program | |
CN102760219B (zh) | 一种Android平台软件保护系统、方法及设备 | |
CN102043932B (zh) | 一种防止Java程序被反编译的方法 | |
CN103914637B (zh) | 一种安卓平台的可执行程序加密方法 | |
CN109313677B (zh) | 用于动态可执行验证的方法和装置 | |
WO2016078130A1 (zh) | 一种防逆向apk文件的动态加载方法 | |
US20170024230A1 (en) | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
CN103136458B (zh) | 一种Linux操作系统动态库代码保护方法及其装置 | |
CN101346727A (zh) | 程序运行控制方法、其设备以及运行控制程序 | |
CN106295370A (zh) | 一种加固安装包的动态链接库dll文件的方法和装置 | |
CN102656561A (zh) | 信息处理装置、虚拟机生成方法及应用发布系统 | |
CN104408337A (zh) | 一种apk文件防逆向的加固方法 | |
CN108229112A (zh) | 一种保护应用程序、应用程序的运行方法以及装置 | |
KR20150035249A (ko) | 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 | |
CN108133147B (zh) | 可执行代码的保护方法、设备及可读存储介质 | |
CN108170433A (zh) | 一种Java代码的混淆方法、恢复方法及其装置 | |
CN107480478A (zh) | 一种java应用程序的加密方法及运行方法 | |
CN107430650A (zh) | 保护计算机程序以抵御逆向工程 | |
CN104537281A (zh) | 用于移动应用保护的系统和方法 | |
CN107220528A (zh) | Java程序的保护与运行方法、装置和终端 | |
JP6698775B2 (ja) | 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180615 |
|
RJ01 | Rejection of invention patent application after publication |