CN105404794A - Java应用软件的保护方法和装置 - Google Patents
Java应用软件的保护方法和装置 Download PDFInfo
- Publication number
- CN105404794A CN105404794A CN201410448768.5A CN201410448768A CN105404794A CN 105404794 A CN105404794 A CN 105404794A CN 201410448768 A CN201410448768 A CN 201410448768A CN 105404794 A CN105404794 A CN 105404794A
- Authority
- CN
- China
- Prior art keywords
- function
- merged
- carry out
- merging
- static method
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种Java应用软件的保护方法和装置,通过获取Java应用软件的压缩包,上述压缩包中包含至少一个类文件,根据至少一个类文件中的指令的访问权限,对至少一个类文件中的函数进行合并处理,从而,将多个函数的指令合并到同一函数中,产生强混淆的效果,同时减少了总函数数量,增加了通过反编译和通过逆向工程获得应用软件完整的远程代码的难度,从而实现保护Java应用软件。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种Java应用软件的保护方法和装置。
背景技术
Java通过虚拟机方式运行,具有编程时无需考虑内存管理等优点,因此,被广泛应用于编写各种应用软件。
通常情况下,如图1所示,图1为Java应用软件的应用场景示意图,采用Java编写的应用软件源程序代码经过Java编译器编译后,生成Java字节码(.class文件),Java字节码独立于计算机硬件及操作系统,在运行时由Java虚拟机的Java解释器负责解释并通过即时编译器生成机器代码而执行。然而,由于Java字节码中包含大量的调试信息,例如:源文件名、行号、字段名、方法名、参数名和变量名等,这些调试信息很容易被反编译和通过逆向工程获得应用软件完整的源程序代码,现有技术中通过用无意义的字符序列来替换调试信息中的所有名字,增加对字节码进行反编译和通过逆向工程获得应用软件完整的源程序代码的难度。
然而,采用现有技术的方法,虽然用无意义字符序列来替换调试信息中的所有名字可以增加逆向难度,但是对于专业的逆向分析人员来说仍然很容易获得Java应用软件完整的源程序代码,无法保护Java应用软件。
发明内容
本发明提供一种Java应用软件的保护方法和装置,以保护Java应用软件。
本发明第一方面提供一种Java应用软件的保护方法,包括:
获取Java应用软件的压缩包,所述压缩包中包含至少一个类文件;
获取所述至少一个类文件中能够进行合并的函数;
将所述能够进行合并的函数进行函数合并处理。
进一步地,所述获取所述至少一个类文件中能够进行合并的函数,包括:
根据所述至少一个类文件的访问权限、继承树、所述至少一个类文件的函数的访问权限和所述函数的指令的访问权限,获取能够进行合并的函数。
进一步地,所述将所述能够进行合并的函数进行函数合并处理,包括:
将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;
根据所述能够进行合并的函数的静态方法的栈区重新构造一个合并栈区;
根据所述能够进行合并的函数的静态方法生成一个选择运行函数的指令,所述指令用于选择运行的函数;
修改所述能够进行合并的函数的静态方法中的指令的访问权限;
根据所述合并栈区、所述选择运行函数的指令、所述能够进行合并的函数的静态方法中的指令的访问权限和所述能够进行合并的函数的静态方法的指令,生成一个合并函数;
将调用所述能够进行合并的函数的代码修改为调用所述合并函数。
进一步地,所述将所述能够进行合并的函数的实例方法转为静态方法,包括:
根据所述能够进行合并的函数所在类重新构造参数列表;
根据所述重新构造的参数列表生成所述能够进行合并的函数的静态方法。
进一步地,所述将所述能够进行合并的函数进行函数合并处理,包括:
将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;
将所述能够进行合并的函数的静态方法中的内联函数插入到所述能够进行合并的函数中的静态方法中的调用所述内联函数的位置;
将调用所述能够进行合并的函数的代码修改为调用所述合并函数。
本发明第二方面提供一种Java应用软件的保护装置,包括:
第一获取模块,用于获取Java应用软件的压缩包,所述压缩包中包含至少一个类文件;
第二获取模块,用于获取所述至少一个类文件中能够进行合并的函数;
处理模块,用于将所述能够进行合并的函数进行函数合并处理。
进一步地,所述第二获取模块具体用于根据所述至少一个类文件的访问权限、继承树、所述至少一个类文件的函数的访问权限和所述函数的指令的访问权限,获取能够进行合并的函数。
进一步地,所述处理模块具体用于将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;根据所述能够进行合并的函数的静态方法的栈区重新构造一个合并栈区;根据所述能够进行合并的函数的静态方法生成一个选择运行函数的指令,所述指令用于选择运行的函数;修改所述能够进行合并的函数的静态方法中的指令的访问权限;根据所述合并栈区、所述选择运行函数的指令、所述能够进行合并的函数的静态方法中的指令的访问权限和所述能够进行合并的函数的静态方法的指令,生成一个合并函数;将调用所述能够进行合并的函数的代码修改为调用所述合并函数。
进一步地,所所述处理模块具体用于根据所述能够进行合并的函数所在类重新构造参数列表;根据所述重新构造的参数列表生成所述能够进行合并的函数的静态方法。
进一步地,所述处理模块具体用于将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;将所述能够进行合并的函数的静态方法中的内联函数插入到所述能够进行合并的函数中的静态方法中的调用所述内联函数的位置;将调用所述能够进行合并的函数的代码修改为调用所述合并函数。
本发明提供的Java应用软件的保护方法和装置,通过获取Java应用软件的压缩包,上述压缩包中包含至少一个类文件,根据至少一个类文件中的指令的访问权限,对至少一个类文件中的函数进行合并处理,从而,将多个函数的指令合并到同一函数中,产生强混淆的效果,同时减少了总函数数量,增加了通过反编译和通过逆向工程获得应用软件完整的远程代码的难度,从而实现保护Java应用软件。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为Java应用软件的应用场景示意图;
图2为本发明Java应用软件的保护方法实施例一的流程示意图;
图3为本发明Java应用软件的保护装置实施例一的结构示意图;
图4为本发明Java应用软件的保护装置实施例二的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一个Java应用软件通常包含至少一个类文件,上述至少一个类文件一般压缩成一个压缩文件(例如:“jar”包),每一个类文件中包含至少一个函数,每个函数中包含至少一条指令。其中,类文件具有访问权限、类文件之间具有继承关系,函数具有访问权限,函数中的指令也具有访问权限,一般可以根据类文件的访问权限、根据类文件之间的继承关系生成的继承树、函数的访问权限和函数中指令的访问权限确定哪些函数能够进行合并,哪些函数不能够进行合并,其中,能够进行合并的函数还分为能够进行跨类合并的函数和能够进行类里合并的函数;本发明通过将能够进行合并的函数进行合并处理,从而产生强混淆效果,增加通过反编译和通过逆向工程获得应用软件完整的远程代码的难度,从而,实现保护Java应用软件。除此之外,由于将能够进行合并的函数进行合并处理,减少了函数的数量,从而能够在一些对代码函数数量有上限要求的平台上进行应用(例如:安卓平台),扩大了应用范围。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明Java应用软件的保护方法实施例一的流程示意图,如图2所示,本实施例的方法如下:
S201:获取Java应用软件的压缩包。
其中,压缩包中包含至少一个类文件,上述类文件为源程序代码编译后装载字节码的类文件。
具体地,每一个类文件中包含至少一个函数,每个函数中包含至少一条指令。其中,类文件具有访问权限、类文件之间具有继承关系,函数具有访问权限,函数中的指令也具有访问权限。
S202:获取至少一个类文件中能够进行合并的函数。
具体地,根据至少一个类文件的访问权限、继承树、至少一个类文件的函数的访问权限和函数的指令的访问权限,获取能够进行合并的函数。能够进行合并的函数还分为能够进行跨类合并的函数和能够进行类里合并的函数。
S203:将能够进行合并的函数进行函数合并处理。
首先,将能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法。
具体地,根据能够进行合并的函数所在类重新构造参数列表,根据重新构造的参数列表生成能够进行合并的函数的静态方法。
为了便于理解,下面以一个例子对将能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法进行说明。
实例方法的源程序代码:
实例方法的编译后的字节码:
转成静态方法的编译后的字节码
其次,将转化成静态方法的函数进行合并。
具体地,将转成静态方法的函数进行合并包括以下两种实现方式:
其中,第一种实现方式为:根据能够进行合并的函数的静态方法的栈区重新构造一个合并栈区;根据能够进行合并的函数的静态方法生成一个选择运行函数的指令(TABLESWITCH),上述指令用于选择运行的函数,例如:将函数1和函数2合并为函数3,通过上述选择运行函数的指令选择具体运行函数3中函数1的代码还是函数2的代码;修改上述能够进行合并的函数的静态方法中的指令的访问权限;根据上述合并栈区、上述选择运行函数的指令、上述能够进行合并的函数的静态方法中的指令的访问权限和上述能够进行合并的函数的静态方法的指令,生成一个合并函数,将调用上述能够进行合并的函数的代码修改为调用上述合并函数。将能够进行合并的函数的静态方法中的指令的访问权限修改为能够被上述合并函数访问。
为了便于理解第一种实现方式,下面以一个例子进行说明,将“add()”函数与“print()”函数合并成“merge()”函数:
“add()”函数的静态方法:
“print()”函数的静态方法:
合并后的“merge()”函数的静态方法:
第二种实现方式:将能够进行合并的函数的静态方法中的内联函数插入到能够进行合并的函数中的静态方法中的调用函数的调用位置;将调用能够进行合并的函数的代码修改为调用合并函数。
为了便于理解第二种实现方式,下面以一个例子进行说明
内联函数的静态方法:
调用函数的静态方法:
合并后的函数的静态方法:
本实施例,通过获取Java应用软件的压缩包,上述压缩包中包含至少一个类文件,根据至少一个类文件中的指令的访问权限,对至少一个类文件中的函数进行合并处理,从而,将多个函数的指令合并到同一函数中,产生强混淆的效果,同时减少了总函数数量,增加了通过反编译和通过逆向工程获得应用软件完整的远程代码的难度,从而实现保护Java应用软件。并且,由于将能够进行合并的函数进行合并处理,减少了函数的数量,从而能够在一些对代码函数数量有上限要求的平台上进行应用(例如:安卓平台),扩大了应用范围。
本发明的方法对安卓系统的“dex”文件能够产生同样的效果,即产生强混淆效果和减少函数数量,具体实现方式与前述实施例类似,在此不再赘述。
图3为本发明Java应用软件的保护装置实施例一的结构示意图,如图3所示,本实施例的装置包括第一获取模块301、第二获取模块302和处理模块303,其中,第一获取模块301用于获取Java应用软件的压缩包,上述压缩包中包含至少一个类文件;第二获取模块302用于获取上述至少一个类文件中能够进行合并的函数;处理模块303用于将上述能够进行合并的函数进行函数合并处理。
在上述实施例中,上述第二获取模块302具体用于根据上述至少一个类文件的访问权限、继承树、上述至少一个类文件的函数的访问权限和上述函数的指令的访问权限,获取能够进行合并的函数。
在上述实施例中,上述处理模块303具体用于将上述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;根据上述能够进行合并的函数的静态方法的栈区重新构造一个合并栈区;根据上述能够进行合并的函数的静态方法生成一个选择运行函数的指令,上述指令用于选择运行的函数;修改上述能够进行合并的函数的静态方法中的指令的访问权限;根据上述合并栈区、上述选择运行函数的指令、上述能够进行合并的函数的静态方法中的指令的访问权限和上述能够进行合并的函数的静态方法的指令,生成一个合并函数;将调用上述能够进行合并的函数的代码修改为调用上述合并函数。
在上述实施例中,上述处理模块303具体用于根据上述能够进行合并的函数所在类重新构造参数列表;根据上述重新构造的参数列表生成上述能够进行合并的函数的静态方法。
在上述实施例中,上述处理模块303具体用于将上述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;将上述能够进行合并的函数的静态方法中的内联函数插入到上述能够进行合并的函数中的静态方法中的调用上述内联函数的位置;将调用上述能够进行合并的函数的代码修改为调用上述合并函数。
图3所示实施例的装置对应地可用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图4为本发明Java应用软件的保护装置实施例二的结构示意图,如图4所示,本实施例的装置包括获取器401和处理器402,其中,获取器401用于获取Java应用软件的压缩包,上述压缩包中包含至少一个类文件;获取上述至少一个类文件中能够进行合并的函数;处理器402用于将上述能够进行合并的函数进行函数合并处理。
在上述实施例中,获取器401具体用于根据上述至少一个类文件的访问权限、继承树、上述至少一个类文件的函数的访问权限和上述函数的指令的访问权限,获取能够进行合并的函数。
在上述实施例中,处理器402具体用于将上述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;根据上述能够进行合并的函数的静态方法的栈区重新构造一个合并栈区;根据上述能够进行合并的函数的静态方法生成一个选择运行函数的指令,上述指令用于选择运行的函数;修改上述能够进行合并的函数的静态方法中的指令的访问权限;根据上述合并栈区、上述选择运行函数的指令、上述能够进行合并的函数的静态方法中的指令的访问权限和上述能够进行合并的函数的静态方法的指令,生成一个合并函数;将调用上述能够进行合并的函数的代码修改为调用上述合并函数。
在上述实施例中,上述处理器402具体用于根据上述能够进行合并的函数所在类重新构造参数列表;根据上述重新构造的参数列表生成上述能够进行合并的函数的静态方法。
在上述实施例中,上述处理器402具体用于将上述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;将上述能够进行合并的函数的静态方法中的内联函数插入到上述能够进行合并的函数中的静态方法中的调用上述内联函数的位置;将调用上述能够进行合并的函数的代码修改为调用上述合并函数。
图4所示实施例的装置对应地可用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种Java应用软件的保护方法,其特征在于,包括:
获取Java应用软件的压缩包,所述压缩包中包含至少一个类文件;
获取所述至少一个类文件中能够进行合并的函数;
将所述能够进行合并的函数进行函数合并处理。
2.根据权利要求1所述的方法,其特征在于,所述获取所述至少一个类文件中能够进行合并的函数,包括:
根据所述至少一个类文件的访问权限、继承树、所述至少一个类文件的函数的访问权限和所述函数的指令的访问权限,获取能够进行合并的函数。
3.根据权利要求2所述的方法,其特征在于,所述将所述能够进行合并的函数进行函数合并处理,包括:
将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;
根据所述能够进行合并的函数的静态方法的栈区重新构造一个合并栈区;
根据所述能够进行合并的函数的静态方法生成一个选择运行函数的指令,所述指令用于选择运行的函数;
修改所述能够进行合并的函数的静态方法中的指令的访问权限;
根据所述合并栈区、所述选择运行函数的指令、所述能够进行合并的函数的静态方法中的指令的访问权限和所述能够进行合并的函数的静态方法的指令,生成一个合并函数;
将调用所述能够进行合并的函数的代码修改为调用所述合并函数。
4.根据权利要求3所述的方法,其特征在于,所述将所述能够进行合并的函数的实例方法转为静态方法,包括:
根据所述能够进行合并的函数所在类重新构造参数列表;
根据所述重新构造的参数列表生成所述能够进行合并的函数的静态方法。
5.根据权利要求2所述的方法,其特征在于,所述将所述能够进行合并的函数进行函数合并处理,包括:
将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;
将所述能够进行合并的函数的静态方法中的内联函数插入到所述能够进行合并的函数中的静态方法中的调用所述内联函数的位置;
将调用所述能够进行合并的函数的代码修改为调用所述合并函数。
6.一种Java应用软件的保护装置,其特征在于,包括:
第一获取模块,用于获取Java应用软件的压缩包,所述压缩包中包含至少一个类文件;
第二获取模块,用于获取所述至少一个类文件中能够进行合并的函数;
处理模块,用于将所述能够进行合并的函数进行函数合并处理。
7.根据权利要求6所述的装置,其特征在于,所述第二获取模块具体用于根据所述至少一个类文件的访问权限、继承树、所述至少一个类文件的函数的访问权限和所述函数的指令的访问权限,获取能够进行合并的函数。
8.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;根据所述能够进行合并的函数的静态方法的栈区重新构造一个合并栈区;根据所述能够进行合并的函数的静态方法生成一个选择运行函数的指令,所述指令用于选择运行的函数;修改所述能够进行合并的函数的静态方法中的指令的访问权限;根据所述合并栈区、所述选择运行函数的指令、所述能够进行合并的函数的静态方法中的指令的访问权限和所述能够进行合并的函数的静态方法的指令,生成一个合并函数;将调用所述能够进行合并的函数的代码修改为调用所述合并函数。
9.根据权利要求8所述的装置,其特征在于,所述处理模块具体用于根据所述能够进行合并的函数所在类重新构造参数列表;根据所述重新构造的参数列表生成所述能够进行合并的函数的静态方法。
10.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法;将所述能够进行合并的函数的静态方法中的内联函数插入到所述能够进行合并的函数中的静态方法中的调用所述内联函数的位置;将调用所述能够进行合并的函数的代码修改为调用所述合并函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410448768.5A CN105404794B (zh) | 2014-09-04 | 2014-09-04 | Java应用软件的保护方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410448768.5A CN105404794B (zh) | 2014-09-04 | 2014-09-04 | Java应用软件的保护方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105404794A true CN105404794A (zh) | 2016-03-16 |
CN105404794B CN105404794B (zh) | 2019-09-20 |
Family
ID=55470280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410448768.5A Active CN105404794B (zh) | 2014-09-04 | 2014-09-04 | Java应用软件的保护方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105404794B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107506651A (zh) * | 2017-07-04 | 2017-12-22 | 上海斐讯数据通信技术有限公司 | 一种代码加密方法及系统 |
CN108614702A (zh) * | 2016-12-28 | 2018-10-02 | 阿里巴巴集团控股有限公司 | 字节码优化方法及装置 |
CN108664389A (zh) * | 2017-03-31 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 一种测试方法、装置及终端 |
CN109032572A (zh) * | 2017-06-08 | 2018-12-18 | 阿里巴巴集团控股有限公司 | 一种基于字节码的java程序方法内联的方法 |
CN109344612A (zh) * | 2018-09-25 | 2019-02-15 | 郑州昂视信息科技有限公司 | 针对程序代码静态分析逆向攻击的主动防御方法及系统 |
WO2019148816A1 (en) * | 2018-02-05 | 2019-08-08 | Beijing Elex Technology Co., Ltd | Method and apparatus for data compilation, electronic device and computer readable storage medium |
CN112541188A (zh) * | 2019-09-20 | 2021-03-23 | 武汉斗鱼网络科技有限公司 | 阻止应用程序代码被静态分析的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1260055A (zh) * | 1997-06-09 | 2000-07-12 | 联信公司 | 用于提高软件安全性的模糊技术 |
CN103413073A (zh) * | 2013-07-09 | 2013-11-27 | 北京深思数盾科技有限公司 | 一种保护java可执行程序的方法及设备 |
CN103608820A (zh) * | 2011-03-30 | 2014-02-26 | 耶德托公司 | 使得能够在硬件设备上执行软件应用 |
-
2014
- 2014-09-04 CN CN201410448768.5A patent/CN105404794B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1260055A (zh) * | 1997-06-09 | 2000-07-12 | 联信公司 | 用于提高软件安全性的模糊技术 |
CN103608820A (zh) * | 2011-03-30 | 2014-02-26 | 耶德托公司 | 使得能够在硬件设备上执行软件应用 |
CN103413073A (zh) * | 2013-07-09 | 2013-11-27 | 北京深思数盾科技有限公司 | 一种保护java可执行程序的方法及设备 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614702A (zh) * | 2016-12-28 | 2018-10-02 | 阿里巴巴集团控股有限公司 | 字节码优化方法及装置 |
CN108614702B (zh) * | 2016-12-28 | 2022-02-11 | 阿里巴巴集团控股有限公司 | 字节码优化方法及装置 |
CN108664389A (zh) * | 2017-03-31 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 一种测试方法、装置及终端 |
CN109032572A (zh) * | 2017-06-08 | 2018-12-18 | 阿里巴巴集团控股有限公司 | 一种基于字节码的java程序方法内联的方法 |
CN107506651A (zh) * | 2017-07-04 | 2017-12-22 | 上海斐讯数据通信技术有限公司 | 一种代码加密方法及系统 |
WO2019148816A1 (en) * | 2018-02-05 | 2019-08-08 | Beijing Elex Technology Co., Ltd | Method and apparatus for data compilation, electronic device and computer readable storage medium |
US11231916B2 (en) | 2018-02-05 | 2022-01-25 | Beijing Elex Technology Co., Ltd. | Method and apparatus for data compilation using intermediate class files, electronic device and non-transitory computer readable storage medium |
CN109344612A (zh) * | 2018-09-25 | 2019-02-15 | 郑州昂视信息科技有限公司 | 针对程序代码静态分析逆向攻击的主动防御方法及系统 |
CN112541188A (zh) * | 2019-09-20 | 2021-03-23 | 武汉斗鱼网络科技有限公司 | 阻止应用程序代码被静态分析的方法及装置 |
CN112541188B (zh) * | 2019-09-20 | 2022-05-13 | 武汉斗鱼网络科技有限公司 | 阻止应用程序代码被静态分析的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105404794B (zh) | 2019-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105404794A (zh) | Java应用软件的保护方法和装置 | |
KR101699981B1 (ko) | 외래 정보를 분할함에 의한 가상 머신 코드의 메모리 최적화 | |
CN106598579B (zh) | 区块链上集成动态类型编程语言方法和装置 | |
CN102289378B (zh) | 自动生成应用程序的方法 | |
US9250875B1 (en) | Table of contents pointer value save and restore placeholder positioning | |
CN101300584B (zh) | 防止对软件或运行时数据的未经授权的修改的方法 | |
US9471340B2 (en) | Global entry point and local entry point for callee function | |
CN109598107B (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN105224370A (zh) | 一种加载elf文件的方法和装置 | |
CN108932406A (zh) | 虚拟化软件保护方法和装置 | |
KR102028091B1 (ko) | 덱스 파일의 메모리 적재 장치 및 방법 | |
CN101243412B (zh) | 用于安全检查模块中的可执行应用程序的系统和方法 | |
CN110059456B (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
CN105574411A (zh) | 一种动态脱壳方法、装置和设备 | |
CN103914637A (zh) | 一种安卓平台的可执行程序加密方法 | |
CN105975816A (zh) | 移动终端下基于虚拟技术的代码保护方法及系统 | |
CN109614772B (zh) | 基于应用安装包文件的代码转换方法及装置 | |
KR20120126920A (ko) | Jni를 이용한 안드로이드 난독화 방법 | |
CN106202158A (zh) | 一种图形文件格式的使用方法及装置 | |
CN109933350A (zh) | 在应用中嵌入代码的方法、装置及电子设备 | |
CN103761107A (zh) | 软件包定制的装置及方法 | |
CN108133126B (zh) | 一种安卓应用的加固方法和装置 | |
CN111290801A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN106681782B (zh) | 一种编译安卓安装包的动态链接库so文件的方法和装置 | |
CN104537281A (zh) | 用于移动应用保护的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |