一种基于Java代码的混淆方法和装置转让专利

申请号 : CN201811290226.4

文献号 : CN109614771B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李家良

申请人 : 同盾控股有限公司

摘要 :

本申请实施例提供了一种基于Java代码的混淆方法和装置,该基于Java代码的混淆方法包括:获取待混淆的代码信息,该代码信息包括源代码、源代码中需要编译的类、函数和变量;对代码信息进行预编译,以确定具有预设格式的归档文件;根据利用预设的反编译工具对归档文件进行的反编译,结合混淆需求,确定是否对归档文件进行混淆;当确定对归档文件进行混淆时,根据混淆需求,对归档文件执行混淆操作,以确定混淆后的目标文件;其中,混淆操作包括对字符串常量进行加密和对类、函数以及XML文件中的类进行混淆改名。通过简单有效的方式实现对Java源代码的完全混淆,提高Java源代码的安全性。

权利要求 :

1.一种基于Java代码的混淆方法,其特征在于,所述方法包括:获取待混淆的代码信息,所述代码信息包括源代码、所述源代码中需要编译的类、函数和变量;

对所述代码信息进行预编译,以确定具有预设格式的归档文件;

根据利用预设的反编译工具对所述归档文件进行的反编译,结合混淆需求,确定是否对所述归档文件进行混淆;

当确定对所述归档文件进行混淆时,根据所述混淆需求,对所述归档文件执行混淆操作,以确定混淆后的目标文件;

其中,所述混淆操作包括对字符串常量进行加密和对类、函数以及XML文件中的类进行混淆改名;

所述对所述代码信息进行预编译,以确定具有预设格式的归档文件,包括:根据所述代码信息中的类、函数和变量,确定预设的编译工具所使用的插件配置;

在将所述插件配置对应插入所述源代码中的预设文件中之后,利用所述编译工具对所述代码信息进行编译;

当利用maven proguard插件进行代码信息的预编译时,还包括对proguard插件的自动化配置,根据代码信息中的需要混淆的类、函数以及变量确定maven proguard的插件配置;

将插件自动配置插入在源代码的pom.xml文件的文件对象模型DOM树中,以便于对之后的文件的编译、反编译或者混淆操作。

2.根据权利要求1所述的方法,其特征在于,所述根据利用预设的反编译工具对所述归档文件进行的反编译,结合混淆需求,确定是否对所述归档文件进行混淆,包括:利用所述反编译工具,对所述归档文件进行反编译;

根据所述反编译的结果,确定所述归档文件中未被混淆的代码信息;

以预设的方式输出所述未被混淆的代码信息;

根据获取到的对所述未被混淆的代码信息的所述混淆需求,确定是否进行所述归档文件的混淆;

其中,所述未被混淆的代码信息包括未被混淆的类、未被混淆的函数以及XML文件中的类,所述混淆需求包括所述未被混淆的代码信息中需进行混淆的代码信息。

3.根据权利要求2所述的方法,其特征在于,所述当确定对所述归档文件进行混淆时,根据所述混淆需求,执行对所述归档文件的混淆操作,以确定混淆后的目标文件,包括:根据预设的字符串特征,对所述需进行混淆的代码信息中的字符串常量进行加密;以及对所述需进行混淆的代码信息中的类、函数以及XML文件中的类进行混淆改名;

根据加密后的所述字符串常量和所述混淆改名后的所述类、所述函数以及所述XML文件中的类,确定所述目标文件。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:利用所述反编译工具,对所述目标文件进行反编译;

根据所述反编译的结果,确定是否对所述目标文件再次执行所述混淆操作;

当确定对所述目标文件再次执行所述混淆操作时,获取对所述目标文件的混淆需求;

根据所述目标文件的混淆需求,再次对所述目标文件执行所述混淆操作。

5.一种基于Java代码的混淆装置,其特征在于,所述装置包括:信息获取模块,用于获取待混淆的代码信息,所述代码信息包括源代码、所述源代码中需要编译的类、函数和变量;

预编译模块,用于对所述代码信息进行预编译,以确定具有预设格式的归档文件;

确定模块,用于根据利用预设的反编译工具对所述归档文件进行的反编译,结合混淆需求,确定是否对所述归档文件进行混淆;

混淆模块,用于当确定对所述归档文件进行混淆时,根据所述混淆需求,对所述归档文件执行混淆操作,以确定混淆后的目标文件;

其中,所述混淆操作包括对字符串常量进行加密和对类、函数以及XML文件中的类进行混淆改名;

所述预编译模块,包括:

配置确定子模块,用于根据所述代码信息中的类、函数和变量,确定预设的编译工具所使用的插件配置;

编译子模块,用于在将所述插件配置对应插入所述源代码中的预设文件中之后,利用所述编译工具对所述代码信息进行编译;

当利用mavenproguard插件进行代码信息的预编译时,所述预编译模块,还用于对proguard插件的自动化配置,根据代码信息中的需要混淆的类、函数以及变量确定mavenproguard的插件配置;将插件自动配置插入在源代码的pom.xml文件的文件对象模型DOM树中,以便于对之后的文件的编译、反编译或者混淆操作。

6.根据权利要求5所述的装置,其特征在于,所述确定模块,包括:反编译子模块,用于利用所述反编译工具,对所述归档文件进行反编译;

信息确定子模块,用于根据所述反编译的结果,确定所述归档文件中未被混淆的代码信息;

信息输出子模块,用于以预设的方式输出所述未被混淆的代码信息;

混淆确定子模块,用于根据获取到的对所述未被混淆的代码信息的所述混淆需求,确定是否进行所述归档文件的混淆;

其中,所述未被混淆的代码信息包括未被混淆的类、未被混淆的函数以及XML文件中的类,所述混淆需求包括所述未被混淆的代码信息中需进行混淆的代码信息。

7.根据权利要求5所述的装置,其特征在于,所述混淆模块,包括:加密子模块,用于根据预设的字符串特征,对所述需进行混淆的代码信息中的字符串常量进行加密;以及改名子模块,用于对所述需进行混淆的代码信息中的类、函数以及所述XML文件中的类进行混淆改名;

文件确定模块,用于根据加密后的所述字符串常量和所述混淆改名后的所述类、所述函数以及XML文件中的类,确定所述目标文件。

8.根据权利要求5所述的装置,其特征在于,所述装置还包括:反编译模块,用于利用所述反编译工具,对所述目标文件进行反编译;

所述确定模块,还用于根据所述反编译的结果,确定是否对所述目标文件再次执行所述混淆操作;

需求获取模块,用于当确定对所述目标文件再次执行所述混淆操作时,获取对所述目标文件的混淆需求;

所述混淆模块,还用于根据所述目标文件的混淆需求,再次对所述目标文件执行所述混淆操作。

说明书 :

一种基于Java代码的混淆方法和装置

技术领域

[0001] 本申请涉及编程技术领域,特别是涉及一种基于Java代码的混淆方法和装置。

背景技术

[0002] 目前Java源代码反编译查看源代码逻辑很容易,现有的对Java混淆的工具插件存在一定的混淆不彻底的情况,使反编译查看分析源码逻辑的成本降低。现有技术中所采用的maven proguard插件,作为Java源代码混淆工具,但其中很多类、函数名都未做混淆,字符串也未做混淆,反编译后都可以看到字符串常量的真实值;XML(中文:可扩展标记语言;英文:Extensible Markup Language)等配置文件中的类未做混淆,其涉及到的Java类也是原名呈现,反编译后都可以看到实际名,对于分析系统原理轻而易举,因此存在较大的安全隐患。另外,现有技术中还存在对Java字节码进行加密的方案,操作较为复杂,需要改jvm虚拟机(中文:Java虚拟机;英文:Java Virtual Machine),极有可能造成虚拟机异常,不具有商用价值。

发明内容

[0003] 鉴于上述问题,本申请实施例提供一种基于Java代码的混淆方法,通过将字符串加密、对未混淆的类、函数进行混淆以及配置文件中的无法被混淆的类、函数进行脚本混淆,进而解决现有技术中存在混淆不彻底以及有些内容无法混淆的问题。
[0004] 相应的,本申请实施例还提供了一种基于Java代码的混淆装置,用以保证上述方法的实现及应用。
[0005] 为了解决上述问题,本申请实施例公开了一种基于Java代码的混淆方法,所述方法包括:
[0006] 获取待混淆的代码信息,所述代码信息包括源代码、所述源代码中需要编译的类、函数和变量;
[0007] 对所述代码信息进行预编译,以确定具有预设格式的归档文件;
[0008] 根据利用预设的反编译工具对所述归档文件进行的反编译,结合混淆需求,确定是否对所述归档文件进行混淆;
[0009] 当确定对所述归档文件进行混淆时,根据所述混淆需求,对所述归档文件执行混淆操作,以确定混淆后的目标文件;
[0010] 其中,所述混淆操作包括对字符串常量进行加密和对类、函数以及XML文件中的类进行混淆改名。
[0011] 相应的,本申请实施例还公开了一种基于Java代码的混淆装置,所述装置包括:
[0012] 信息获取模块,用于获取待混淆的代码信息,所述代码信息包括源代码、所述源代码中需要编译的类、函数和变量;
[0013] 预编译模块,用于对所述代码信息进行预编译,以确定具有预设格式的归档文件;
[0014] 确定模块,用于根据利用预设的反编译工具对所述归档文件进行的反编译,结合混淆需求,确定是否对所述归档文件进行混淆;
[0015] 混淆模块,用于当确定对所述归档文件进行混淆时,根据所述混淆需求,对所述归档文件执行混淆操作,以确定混淆后的目标文件;
[0016] 其中,所述混淆操作包括对字符串常量进行加密和对类、函数以及XML文件中的类进行混淆改名。
[0017] 本申请实施例还提供一种装置,包括处理器以及存储器,其中,
[0018] 所述处理器执行所述存储器所存放的计算机程序代码,以实现本申请所述的基于Java代码的混淆方法。
[0019] 本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现本申请所述的基于Java代码的混淆方法的步骤。
[0020] 本申请实施例包括以下优点:
[0021] 本申请实施例通过获取待混淆的代码信息,所述代码信息包括源代码、所述源代码中需要编译的类、函数和变量;对所述代码信息进行预编译,以确定具有预设格式的归档文件;根据利用预设的反编译工具对所述归档文件进行的反编译,结合混淆需求,确定是否对所述归档文件进行混淆;当确定对所述归档文件进行混淆时,根据所述混淆需求,对所述归档文件执行混淆操作,以确定混淆后的目标文件;其中,所述混淆操作包括对字符串常量进行加密以及对类、函数以及XML文件中的类进行混淆改名。通过对Java代码中的字符串进行加密,XML配置文件中的类、函数名进行混淆以及对proguard插件无法混淆的类进行混淆,通过简单有效的方式实现对Java源代码的完全混淆,提高Java源代码的安全性,更好的保护Java源代码内容。

附图说明

[0022] 图1是本申请的一种基于Java代码的混淆方法实施例的步骤流程图;
[0023] 图2是本申请的一种基于Java代码的混淆方法可选实施例的步骤流程图;
[0024] 图3是本申请的一种基于Java代码的混淆方法可选实施例的步骤流程图;
[0025] 图4是本申请的一种基于Java代码的混淆方法可选实施例的步骤流程图;
[0026] 图5是本申请的另一种基于Java代码的混淆方法实施例的步骤流程图;
[0027] 图6是本申请的一种基于Java代码的混淆装置实施例的结构框图。

具体实施方式

[0028] 为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
[0029] 参照图1,示出了本申请的一种基于Java代码的混淆方法实施例的步骤流程图,具体可以包括如下步骤:
[0030] 步骤101,获取待混淆的代码信息。
[0031] 其中,代码信息包括源代码、源代码中需要编译的类、函数和变量。
[0032] 示例地,代码信息中所涉及的源代码是广泛意义上的Java源代码,即一个.java文件,或一个大型应用的.java文件集合,都是本文的源数据,其具有广泛性,很常见,被大量应用在计算机编程领域中,只要是写Java语言的场景都会出现.java文件。
[0033] 示例地,常用于进行Java文件进行编译的maven proguard插件无法进行待混淆的代码信息的选择,也就是无法根据客户的实际需求进行该代码的编译,本申请提出对待混淆的代码信息的选择功能,用户可以直接根据自身需求进行选择确定要编译哪些内容,以便下面步骤针对该待混淆的代码信息利用maven proguard插件进行编译操作。
[0034] 步骤102,对代码信息进行预编译,以确定具有预设格式的归档文件。
[0035] 示例地,通过执行maven proguard插件mvn命令对代码信息进行编译处理,以确定jar格式的归档文件,便于之后的步骤基于该预编译后的归档文件进行进一步的混淆。
[0036] 需要说明的是,根据本申请所提供的方法,当利用maven proguard插件进行代码信息的预编译时,还包括对proguard插件的自动化配置,根据代码信息中的需要混淆的类、函数以及变量确定maven proguard的插件配置,例如插入的位置和将插入的文件,之后将插件自动配置插入在源代码的pom.xml文件的DOM(中文:文件对象模型;英文:Document Object Model)树中,以便于对之后的文件的编译、反编译或者混淆操作。上述插件的配置是根据需要混淆的类、函数以及变量等对应进行设置的,进而在进行进一步混淆时,针对不同的类,例如未混淆的类或者混淆的类对应有不同的操作。
[0037] 步骤103,根据利用预设的反编译工具对归档文件进行的反编译,结合混淆需求,确定是否对归档文件进行混淆。
[0038] 例如调用JD-GUI工具,对上面步骤确定的归档文件进行反编译,也就是对jar格式的文件进行反编译,并输出反编译的结果,以便用户根据反编译的结果和实际需求确定下面进行混淆操作的具体要求,也就是确定混淆需求,例如用户在输出的反编译的结果的基础上确定是否需要进一步的混淆,以及在进一步的混淆中需要对那些内容进行混淆,用户可以根据实际需求选择需要进行混淆的类、函数或者mvn命令未进行混淆的XML中的类,能够根据混淆需求有针对性的进行混淆操作。
[0039] 步骤104,当确定对归档文件进行混淆时,根据混淆需求,对归档文件执行混淆操作,以确定混淆后的目标文件。
[0040] 其中,混淆操作包括对字符串常量进行加密和对类、函数以及XML文件中的类进行混淆改名。
[0041] 由于通过maven工具的插件所存在的局限性,例如XML等配置文件中的类无法混淆;并且对于Java源代码中具有强特征性的内容,字符串需要进行加密,防止黑客轻易的分析出源代码逻辑。因此,本申请提出的技术方案分别针对字符串和未混淆的类、函数等内容分别进行对应的混淆操作,例如对Java中类变量中的字符串常量,函数中的字符串临时变量,log中的字符串常量等进行加密,为保证准确性,在加密时不能加密错位置,也不能漏掉字符串不加密;对于配置文件中的类、函数,首先通过DOM解析识别对应的类名和函数名,之后再进行改名,以保证混淆完全。
[0042] 需要说明的是,本步骤最终输出的目标文件仍然是jar格式的,也就是在归档文件的基础上结合混淆需求进一步进行了混淆操作,使得目标文件所具有的特征是不可反编译,也就是无法通过反编译查看Java源代码及代码逻辑,更好的保护Java源代码,以防止破解或者泄露,提高系统的安全性和稳定性。
[0043] 综上所述,本申请实施例所提供的基于Java代码的混淆方法,获取待混淆的代码信息,该代码信息包括源代码、源代码中需要编译的类、函数和变量;对代码信息进行预编译,以确定具有预设格式的归档文件;根据利用预设的反编译工具对归档文件进行的反编译,结合混淆需求,确定是否对归档文件进行混淆;当确定对归档文件进行混淆时,根据混淆需求,对归档文件执行混淆操作,以确定混淆后的目标文件;其中,混淆操作包括对字符串常量进行加密和对类、函数以及XML文件中的类进行混淆改名。因此,通过对Java代码中的字符串进行加密,XML配置文件中的类、函数名进行混淆以及对proguard插件无法混淆的类进行混淆,通过简单有效的方式实现对Java源代码的完全混淆,提高Java源代码的安全性,更好的保护Java代码内容。
[0044] 参照图2,示出了本申请的一种基于Java代码的混淆方法可选实施例的步骤流程图,步骤102所述的对代码信息进行预编译,以确定具有预设格式的归档文件,可以包括如下步骤:
[0045] 步骤1021,根据代码信息中的类、函数和变量,确定预设的编译工具所使用的插件配置。
[0046] 示例地,根据需要进行编译以及不进行编译的类、函数和变量,对应确定maven proguard的插件配置,也就是并非所有的类、函数和变量都会进行编译,因此有针对性的定制插件配置,并确保插件的位置。
[0047] 步骤1022,在将插件配置对应插入源代码中的预设文件中之后,利用编译工具对代码信息进行编译。
[0048] 将上述步骤确定的插件配置插入到源代码的预设文件,即pom.xml文件的DOM树中,以输出源代码经过修改的pom.xml文件,利用maven对代码信息进行编译。
[0049] 参照图3,示出了本申请的一种基于Java代码的混淆方法可选实施例的步骤流程图,步骤103所述的根据利用预设的反编译工具对归档文件进行的反编译,结合混淆需求,确定是否对归档文件进行混淆,可以包括如下步骤:
[0050] 步骤1031,利用反编译工具,对归档文件进行反编译。
[0051] 在具体实施时,可以利用Java的反编译工具,对jar格式的归档文件进行反编译。
[0052] 步骤1032,根据反编译的结果,确定归档文件中未被混淆的代码信息。
[0053] 其中,未被混淆的代码信息包括未被混淆的类、未被混淆的函数以及XML文件中的类。
[0054] 示例地,通过在编译前识别所有.java文件的函数名、类名,建立函数名类名的索引,之后再对反编译后所有.class文件中的函数名、类名进行识别,如果上述函数名、类名有出现在函数名类名的索引中的,说明未被混淆,需要以预设的方式输出以提示用户。
[0055] 步骤1033,以预设的方式输出未被混淆的代码信息。
[0056] 例如,以高亮的方式,标出未被混淆的代码信息,便于用户进行查看;或者还可以显示出对应的未被混淆的代码信息,以提示用户,此外还可以做出链接,在用户点到对应的代码信息后,直接跳转到该代码信息在归档文件或者是源代码文件的位置处。
[0057] 步骤1034,根据获取到的对未被混淆的代码信息的混淆需求,确定是否进行归档文件的混淆。
[0058] 其中,混淆需求包括未被混淆的代码信息中需进行混淆的代码信息。
[0059] 示例地,当利用步骤1033对用户进行未被混淆的代码信息的提示后,用户根据实际需求进一步指定是否进行混淆以及需要进行混淆的代码信息,例如哪个类、函数或者XML文件中的类进行混淆,作为混淆需求。
[0060] 参照图4,示出了本申请的一种基于Java代码的混淆方法可选实施例的步骤流程图,步骤104所述的当确定对归档文件进行混淆时,根据混淆需求,对归档文件执行混淆操作,以确定混淆后的目标文件,可以包括如下步骤:
[0061] 步骤1041,根据预设的字符串特征,对需进行混淆的代码信息中的字符串常量进行加密。
[0062] 示例地,通过执行对应的脚本分别对字符串常量和类、函数等信息进行对应的混淆操作,字符串所使用的脚本要对Java源代码中的字符串常量首先进行识别,也就是需要对Java源代码具有兼容性、适配性,防止由于换了源代码,就加密失败、加密错误等情况;因此本申请提出的技术方案为了保证对字符串的正确加密,通过预先确定字符串的特征,例如双引号、转义符加双引号开头等特征进行收集,在执行本步骤的操作时,通过对字符串特征的匹配,以准确定位字符串,而进行加密操作,这样采用转义符加上双引号的最长字符串匹配算法进行特征匹配,进而保证了脚本的适配性。
[0063] 步骤1042,对需进行混淆的代码信息中的类、函数以及XML文件中的类进行混淆改名。
[0064] 对应的,本步骤采用的脚本也要对所有Java源代码具有兼容性、适配性,适合于一个项目文件中的所有文件,包括.java文件和XML文件,否则会导致配置文件混淆错乱,程序启动不了或者运行不了,还会出现其他运行时的问题,并且难以排查。具体在进行XML文件中的类进行改名时,首先遍历所有文件后缀为.java的文件,进而生成一个从包名到类名的名称树状结构,之后对其他后缀非.java文件的相关配置文件中的内容与该名称树状结构进行名称的匹配识别,将配置文件中的文件名与名称树状结构中匹配的类名,进行同步的改名,也就是在配置文件和.java文件中的类名进行加密。
[0065] 步骤1043,根据加密后的字符串常量和混淆改名后的类、函数以及XML文件中的类,确定目标文件。
[0066] 此外,需要说明的是,本步骤对于归档文件的进一步混淆,是基于步骤102的预编译是对应插入的插件配置的,也就是说对于已经编译过的以及未经编译处理的对应有不同的操作,通过步骤102的预编译操作结合本步骤的混淆操作能够更好的实现防破解的效果。
[0067] 参照图5,示出了本申请的另一种基于Java代码的混淆方法实施例的步骤流程图,该方法还包括如下步骤:
[0068] 步骤105,利用反编译工具,对目标文件进行反编译。
[0069] 步骤106,根据反编译的结果,确定是否对目标文件再次执行混淆操作。
[0070] 步骤107,当确定对目标文件再次执行混淆操作时,获取对目标文件的混淆需求。
[0071] 步骤108,根据目标文件的混淆需求,再次对目标文件执行混淆操作。
[0072] 也就是说,当通过图1的实施例确定了目标文件后,还可以继续对目标文件进行反编译操作,进一步查看是否存在未混淆完全的内容,当存在未混淆完全的内容时,可以继续提示用户进行混淆需求的确定,再根据该混淆需求执行混淆操作,具体的操作参见图1所述的实施例内容,此处不再赘述。
[0073] 此外,可以多次重复执行本实施例的内容,以确定是否将所需源代码充分混淆,本公开不做具体的次数限制。
[0074] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
[0075] 参照图6,示出了本申请的一种基于Java代码的混淆装置实施例的结构框图,具体可以包括如下模块:
[0076] 信息获取模块610,用于获取待混淆的代码信息,代码信息包括源代码、源代码中需要混淆的类、函数和变量。
[0077] 预编译模块620,用于对代码信息进行预编译,以确定具有预设格式的归档文件。
[0078] 确定模块630,用于根据利用预设的反编译工具对归档文件进行的反编译,结合混淆需求,确定是否对归档文件进行混淆。
[0079] 混淆模块640,用于当确定对归档文件进行混淆时,根据混淆需求,对归档文件执行混淆操作,以确定混淆后的目标文件。
[0080] 其中,混淆操作包括对字符串常量进行加密和对类、函数以及XML文件中的类进行混淆改名。
[0081] 在本申请的一个可选实施例中,预编译模块620,包括如下子模块:
[0082] 配置确定子模块,用于根据代码信息中的类、函数和变量,确定预设的编译工具所使用的插件配置;
[0083] 编译子模块,用于在将插件配置对应插入源代码中的预设文件中之后,利用编译工具对代码信息进行编译。
[0084] 在本申请的一个可选实施例中,确定模块630,包括如下子模块:
[0085] 反编译子模块,用于利用反编译工具,对归档文件进行反编译;
[0086] 信息确定子模块,用于根据反编译的结果,确定归档文件中未被混淆的代码信息;
[0087] 信息输出子模块,用于以预设的方式输出未被混淆的代码信息;
[0088] 混淆确定子模块,用于根据获取到的对未被混淆的代码信息的混淆需求,确定是否进行归档文件的混淆;
[0089] 其中,未被混淆的代码信息包括未被混淆的类、未被混淆的函数以及XML文件中的类,混淆需求包括未被混淆的代码信息中需进行混淆的代码信息。
[0090] 在本申请的一个可选实施例中,混淆模块640,包括如下子模块:
[0091] 加密子模块,用于根据预设的字符串特征,对需进行混淆的代码信息中的字符串常量进行加密;以及
[0092] 改名子模块,用于对需进行混淆的代码信息中的类、函数以及XML文件中的类进行混淆改名;
[0093] 文件确定模块,用于根据加密后的字符串常量和混淆改名后的类、函数以及XML文件中的类,确定目标文件。
[0094] 可选的,装置600还包括以下模块:
[0095] 反编译模块,用于利用反编译工具,对目标文件进行反编译;
[0096] 确定模块,还用于根据反编译的结果,确定是否对目标文件再次执行混淆操作;
[0097] 需求获取模块,用于当确定对目标文件再次执行混淆操作时,获取对目标文件的混淆需求;
[0098] 混淆模块,还用于根据目标文件的混淆需求,再次对目标文件执行混淆操作。
[0099] 本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。
[0100] 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0101] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0102] 本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0103] 本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0104] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0105] 这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0106] 尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
[0107] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0108] 本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。