CN108170433A - 一种Java代码的混淆方法、恢复方法及其装置 - Google Patents

一种Java代码的混淆方法、恢复方法及其装置 Download PDF

Info

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
Application number
CN201711408742.8A
Other languages
English (en)
Inventor
高文涛
蒋纪匀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai You And I Loan Internet Financial Information Service Co Ltd
Original Assignee
Shanghai You And I Loan Internet Financial Information Service Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai You And I Loan Internet Financial Information Service Co Ltd filed Critical Shanghai You And I Loan Internet Financial Information Service Co Ltd
Priority to CN201711408742.8A priority Critical patent/CN108170433A/zh
Publication of CN108170433A publication Critical patent/CN108170433A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • G06F8/434Pointers; Aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-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类文件;将混淆的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类文件中类方法的代码段发送至所述动态库进行恢复;
返回模块,用于将恢复后的代码段返回。
CN201711408742.8A 2017-12-22 2017-12-22 一种Java代码的混淆方法、恢复方法及其装置 Pending CN108170433A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 北京奇虎科技有限公司 应用程序防止逆向的方法及装置、运行方法及终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
于庆: "基于动态解密技术的Java_Web源代码保护研究", 《万方数据库》 *
霍建雷: "用于Java软件保护的代码混淆技术研究与实现", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》 *

Cited By (5)

* Cited by examiner, † Cited by third party
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