CN106650428A - 用于优化应用代码的方法与设备 - Google Patents

用于优化应用代码的方法与设备 Download PDF

Info

Publication number
CN106650428A
CN106650428A CN201510734521.4A CN201510734521A CN106650428A CN 106650428 A CN106650428 A CN 106650428A CN 201510734521 A CN201510734521 A CN 201510734521A CN 106650428 A CN106650428 A CN 106650428A
Authority
CN
China
Prior art keywords
intended application
information
optimization
file
code
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
CN201510734521.4A
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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510734521.4A priority Critical patent/CN106650428A/zh
Publication of CN106650428A publication Critical patent/CN106650428A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请的目的是提供一种用于优化应用代码的方法与设备。与现有技术相比,本申请通过获取待优化的目标应用的类源码文件,并根据所述类源码文件确定所述目标应用对应的一或多个调试信息,再根据所述调试信息确定所述目标应用对应的混淆映射信息,然后根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作,实现了在无需源码情况下,对目标应用进行源码级别的加固优化,直接逆向分析目标应用的混淆情况,对混淆不彻底的部分进行优化,加强了对目标应用的加固保护。

Description

用于优化应用代码的方法与设备
技术领域
本发明涉及计算机领域,尤其涉及一种用于优化应用代码的技术。
背景技术
随着智能终端及移动互联网技术的发展与普及,APP(application)等应用逐渐成为人们工作、学习或生活的主要载体。然而,应用在分发过程中往往会被破解、篡改,不仅影响软件功能的正常运行,也给用户带来安全隐患。例如,安卓应用包APK(andriod package)在使用中很容易被攻击者破解,从而得到被保护之前的二进制文件,进而逆向分析出源码并在其中植入恶意代码。在现有技术中,由于源码开发者因代码安全或知识产权等考虑往往不会把源码交给加固方,因此,在没有源码的情况下,只是对安卓应用包做简单的加壳处理,这种方式很容易被攻击者破解,安全性差。
发明内容
本申请的目的是提供一种用于优化应用代码的方法与设备,以解决应用易被破解的问题。
根据本申请的一个方面,提供了一种用于优化应用代码的方法,其中,该方法包括:
获取待优化的目标应用的类源码文件;
根据所述类源码文件确定所述目标应用对应的一或多个调试信息;
根据所述调试信息确定所述目标应用对应的混淆映射信息;
根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作。
根据本申请的另一方面,还提供了一种用于优化应用代码的设备,其中,该设备包括:
获取装置,用于获取待优化的目标应用的类源码文件;
调试确定装置,用于根据所述类源码文件确定所述目标应用对应的一或多个调试信息;
混淆确定装置,用于根据所述调试信息确定所述目标应用对应的混淆映射信息;
优化装置,用于根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作。
与现有技术相比,本申请通过获取待优化的目标应用的类源码文件,并根据所述类源码文件确定所述目标应用对应的一或多个调试信息,再根据所述调试信息确定所述目标应用对应的混淆映射信息,然后根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作,实现了在无需源码情况下,对目标应用进行源码级别的加固优化,直接逆向分析目标应用的混淆情况,对混淆不彻底的部分进行优化,加强了对目标应用的加固保护。
而且,本申请还可以根据所述调试信息确定所述目标应用对应的优化空间信息,当所述优化空间信息大于或等于预定的优化空间阈值信息,根据所述调试信息确定所述目标应用对应的混淆映射信息,而当所述优化空间信息小于所述优化空间阈值信息,退出对所述目标应用的代码优化处理。这种方式可以实现在进行代码优化处理前根据当前目标应用的优化空间信息来决定是否进行代码优化处理,从而提高优化效率、节约优化资源开销。
此外,本申请还可以通过代码优化操作将类源码文件中名称相关信息替换为无意义字符串,其中,所述名称相关信息包括所述类源码文件中的类名称信息、方法名称信息、变量名称信息、文件名称信息等,通过这种方法,实现了将有意义的编码命名信息隐藏,这样攻击者即使破解出来,也很难理解,从而不能进行下一步逆向分析。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种用于优化应用代码的方法流程图;
图2示出根据本申请一个优选实施例的一种用于优化应用代码的方法流程图;
图3示出根据本申请另一个方面的一种用于优化应用代码的设备示意图;
图4示出根据本申请另一个优选实施例的一种用于优化应用代码的设备示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本申请的技术方案,进行清楚和完整的描述。
图1展示了根据本申请的一个方面提供的一种用于优化应用代码的方法,其中,该方法包括:
S1获取待优化的目标应用的类源码文件;
S2根据所述类源码文件确定所述目标应用对应的一或多个调试信息;
S3根据所述调试信息确定所述目标应用对应的混淆映射信息;
S4根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作。
在该实施例中,在所述步骤S1中,设备1获取待优化的目标应用的类源码文件,其中所述类源码文件是一种类似于目标应用源码的文件,包含了所述目标应用的相关信息,用于分析之前目标应用的优化信息,确定是否需要对目标应用进行优化处理,还用于为执行代码优化操作提供调试信息。具体地,获取所述待优化的目标应用的类源码文件的方式需要对目标应用进行相关处理来获得。例如,如果目标应用为安卓应用包,对所述安卓应用包进行相关处理,可以得到类似于源码的smali文件。
优选地,其中,所述目标应用包括基于安卓系统的安卓安装包。本申请优化应用代码的方法可以用于基于安卓系统的安卓安装包,本领域的技术人员可以理解,所述基于安卓系统的安卓安装包仅为举例,其他现有的或者今后可能出现的系统或应用,如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用的方式包含于此。
继续在该实施例中,在所述步骤S2中,设备1根据所述类源码文件确定所述目标应用对应的一或多个调试信息,其中所述调试信息是关于目标应用的一些属性信息,包含类名、方法名、变量名、文件名等信息。具体地,确定调试信息的方式可以通过分析类源码文件获得,例如,对安卓应用包进行处理后,会获得类似于源码的smali文件,所述smali文件中会包含类名、方法名、变量名、文件名等信息,对这些信息进行提取以确定调试信息。
继续在该实施例中,在所述步骤S3中,设备1根据所述调试信息确定所述目标应用对应的混淆映射信息,其中,所述混淆映射信息是用于将所述目标应用进行优化的信息,具体地,根据所述调试信息确定所述目标应用对应的混淆映射信息的方式,可以通过建立混淆映射表实现。具体地,可以通过提取调试信息中的类名、方法名、变量名、文件名等信息,并将这些信息映射为其他与所述目标应用无关的信息,例如,可以将类名、方法名、变量名、文件名等信息替换为无意义的字符串等。
继续在该实施例中,在所述步骤S4中,设备1根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作,其中,所述混淆映射信息通过所建立的混淆映射表呈现,具体地,根据混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作的方式,可以通过按照所述已建立的混淆映射表呈现的信息,对所述调试信息中需要进行优化的信息替换为混淆映射表中的对应信息。例如,混淆映射表中将类名1、方法名1等信息分别映射为字符a、字符b,那么就需要将调试信息中的所有出现类名1的地方替换为字符a,所有出现方法名1的地方替换为字符b,以实现代码优化。
优选地,其中,所述代码优化操作包括将所述类源码文件中名称相关信息替换为无意义字符串。
本领域的技术人员可以理解,所述类源码文件是由目标应用的可执行文件反编译得到的,它包含了关于目标应用的重要名称相关信息,所述名称相关信息是目标应用的重要属性信息,其对于攻击者破解目标应用是非常关键的,因此,将所述重要的名称相关信息进行隐藏是非常必要的,可以通过将所述类源码文件中名称相关信息替换为无意义的字符串来实现。这样,攻击者在破解目标应用的过程中,只能获得无意义的字符串,从而有效地实现对目标应用的加固保护。例如,可以将变量名1、变量名2、文件名1、文件名2等分别替换为a、b、c、d等无意义的字符串。
更优选地,所述名称相关信息包括以下至少任一项:所述类源码文件中的类名称信息;所述类源码文件中的方法名称信息;所述类源码文件中的变量名称信息;所述类源码文件中的文件名称信息。其中,所述类名称信息、方法名称信息、变量名称信息、文件名称信息等,都是与所述目标应用直接相关的信息,有助于攻击者破解目标应用。本领域的技术人员应该可以理解,上述名称相关信息仅为举例,其他有意义的可以有助破解目标应用的相关信息也应包含在内,并在此以引用的方式包含于此。
在一个优选的实施例(参照图1)中,其中,所述步骤S1包括:
S11(未示出)获取待优化的目标应用;
S12(未示出)对所述目标应用解压缩处理,以获得对应的可执行文件和资源文件;
S13(未示出)对所述可执行文件进行反编译以获得所述目标应用对应的类源码文件。
在所述步骤S11中,设备1获取待优化的目标应用,具体地,获取待优化的目标应用的方式,可以通过开发商或者目标应用的其他所属者委托处理的方式获得。
在所述步骤S12中,设备1对所述目标应用解压缩处理,以获得对应的可执行文件和资源文件,本领域的技术人员可以理解,所述目标应用会以压缩包的形式存在,要获取所要处理的信息需要将目标应用进行解压缩处理,解压之后会首先获得可执行文件和资源文件,其中所述可执行文件指的是可以由操作系统进行加载执行并可以进行编译的文件,所述资源文件是指包含着无需重新编辑代码便可以改变的位图、字符串和其它数据,资源文件的类型可以是图片、音频、视频、文字资源等,或者其他可以在设备中展示的内容等等。
在所述步骤S13中,设备1对所述可执行文件进行反编译以获得所述目标应用对应的类源码文件,具体地,本领域的技术人员可以理解,所述可执行文件是通过对源码进行编译和其他处理后得到的,所以要获取所述目标应用对应的类源码文件需要对所述可执行文件进行反编译才能获得。例如,对安卓应用包进行解压处理,会获得可执行文件和资源文件,再对所述可执行文件反编译就可以得到类源码的多个smali文件,以供后续处理使用。
优选地(参照图2),该方法还包括:
S5对代码优化后的所述类源码文件重新编译以获得对应的新可执行文件;
S6将所述新可执行文件与所述资源文件打包,以获得优化后的所述目标应用。
其中,图2中的步骤S1、S2、S3、S4分别与图1实施例中的步骤S1、S2、S3、S4相同或基本相同,故在此不再赘述,仅以引用的方式包含于此。
在该实施例中,在所述步骤S5中,对代码优化后的所述类源码文件重新编译以获得对应的新可执行文件,本领域的技术人员可以理解,本申请对目标应用的优化处理,主要是在所述类源码文件基础上对代码进行优化,而所述类源码文件是通过将可执行文件反编译得到的,所以要得到新的可执行文件需要对优化处理后的所述类源码文件重新编译即可。
继续在该实施例中,在所述步骤S6中,将所述新可执行文件与所述资源文件打包,以获得优化后的所述目标应用,具体地,在对目标应用进行优化的过程中,首先将所述目标应用进行解压缩处理,得到可执行文件和资源文件,并对所述可执行文件进行相关优化处理,进而实现代码优化,从而获得新的可执行文件,而要获得优化过的目标应用,需要将所述新可执行文件与所述资源文件打包即可。
在一个优选的实施例中(参照图1),其中,所述步骤S3包括:S31(未示出)根据所述调试信息确定所述目标应用对应的优化空间信息;S32(未示出)当所述优化空间信息大于或等于预定的优化空间阈值信息,根据所述调试信息确定所述目标应用对应的混淆映射信息。
在所述步骤S31中,设备1根据所述调试信息确定所述目标应用对应的优化空间信息,本领域的技术人员可以理解目标应用加固方在获得目标应用之前,开发商有可能已经对所述目标应用的源码进行了部分优化,只不过有些优化进行的并不全面,还存在继续优化的空间,其中所述优化空间信息表示是否有必要对所述目标应用继续进行优化处理,具体地,设备1根据所述调试信息确定所述目标应用对应的优化空间信息的方式可以通过将还未优化过的调试信息在全部的调试信息中所占的百分比来表示。例如,调试信息包含类名、方法名、变量名、文件名等信息,所有这些类名、方法名、变量名、文件名等总共有1000个,其中之前已经优化过的类名、方法名、变量名、文件名等总共有300个,也即未优化过的调试信息共有700个,则所述优化空间信息为70%,
在所述步骤S32中,当所述优化空间信息大于或等于预定的优化空间阈值信息,根据所述调试信息确定所述目标应用对应的混淆映射信息,其中,所述优化空间阈值信息是判断优化空间信息大小的值,本领域的技术人员可以理解当优化空间比较大,即之前优化的不全面,确定需要加固方对所述目标应用继续进行优化处理。当确定需要进行优化处理后,再根据所述调试信息确定所述目标应用对应的混淆映射信息进行优化处理。例如,优化空间阈值信息为50%,表示当所述优化空间信息大于或等于50%时,需要加固方对所述目标应用进行优化,再根据所述调试信息确定所述目标应用对应的混淆映射信息,对所述目标应用进行优化处理。
优选地,该步骤S3还包括:S33(未示出)当所述优化空间信息小于所述优化空间阈值信息,退出对所述目标应用的代码优化处理。本领域的技术人员可以理解,当优化空间信息比较小时,也即之前进行的优化处理已经比较全面,那么没有必要继续对所述目标应用进行再次优化处理,可以直接退出对所述目标应用的代码优化处理,以节约优化资源。例如,优化空间阈值信息为50%,表示当所述优化空间信息小于50%时,不需要对目标应用进行优化处理,可以直接退出对所述目标应用的代码优化处理。
与现有技术相比,本申请通过获取待优化的目标应用的类源码文件,并根据所述类源码文件确定所述目标应用对应的一或多个调试信息,再根据所述调试信息确定所述目标应用对应的混淆映射信息,然后根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作,实现了在无需源码情况下,对目标应用进行源码级别的加固优化,直接逆向分析目标应用的混淆情况,对混淆不彻底的部分进行优化,加强了对目标应用的加固保护。
而且,本申请还可以根据所述调试信息确定所述目标应用对应的优化空间信息,当所述优化空间信息大于或等于预定的优化空间阈值信息,根据所述调试信息确定所述目标应用对应的混淆映射信息,而当所述优化空间信息小于所述优化空间阈值信息,退出对所述目标应用的代码优化处理。这种方式可以实现在进行代码优化处理前根据当前目标应用的优化空间信息来决定是否进行代码优化处理,从而提高优化效率、节约优化资源开销。
此外,本申请还可以通过代码优化操作将类源码文件中名称相关信息替换为无意义字符串,其中,所述名称相关信息包括所述类源码文件中的类名称信息、方法名称信息、变量名称信息、文件名称信息等,通过这种方法,实现了将有意义的编码命名信息隐藏,这样攻击者即使破解出来,也很难理解,从而不能进行下一步逆向分析。
图3展示了根据本申请的另一个方面提供的一种用于优化应用代码的设备1,其中,该设备包括:
获取装置,获取待优化的目标应用的类源码文件;
调试确定装置,根据所述类源码文件确定所述目标应用对应的一或多个调试信息;
混淆确定装置,根据所述调试信息确定所述目标应用对应的混淆映射信息;
优化装置,根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作。
在该实施例中,获取装置获取待优化的目标应用的类源码文件,其中所述类源码文件是一种类似于目标应用源码的文件,包含了所述目标应用的相关信息,用于分析之前目标应用的优化信息,确定是否需要对目标应用进行优化处理,还用于为执行代码优化操作提供调试信息。具体地,获取所述待优化的目标应用的类源码文件的方式需要对目标应用进行相关处理来获得。例如,如果目标应用为安卓应用包,对所述安卓应用包进行相关处理,可以得到类似于源码的smali文件。
优选地,其中,所述目标应用包括基于安卓系统的安卓安装包。本申请优化应用代码的设备可以用于基于安卓系统的安卓安装包,本领域的技术人员可以理解,所述基于安卓系统的安卓安装包仅为举例,其他现有的或者今后可能出现的系统或应用,如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用的方式包含于此。
继续在该实施例中,调试确定装置根据所述类源码文件确定所述目标应用对应的一或多个调试信息,其中所述调试信息是关于目标应用的一些属性信息,包含类名、方法名、变量名、文件名等信息。具体地,确定调试信息的方式可以通过分析类源码文件获得,例如,对安卓应用包进行处理后,会获得类似于源码的smali文件,所述smali文件中会包含类名、方法名、变量名、文件名等信息,对这些信息进行提取以确定调试信息。
继续在该实施例中,混淆确定装置根据所述调试信息确定所述目标应用对应的混淆映射信息,其中,所述混淆映射信息是用于将所述目标应用进行优化的信息,具体地,根据所述调试信息确定所述目标应用对应的混淆映射信息的方式,可以通过建立混淆映射表实现。具体地,可以通过提取调试信息中的类名、方法名、变量名、文件名等信息,并将这些信息映射为其他与所述目标应用无关的信息,例如,可以将类名、方法名、变量名、文件名等信息替换为无意义的字符串等。
继续在该实施例中,优化装置根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作,其中,所述混淆映射信息通过所建立的混淆映射表呈现,具体地,根据混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作的方式,可以通过按照所述已建立的混淆映射表呈现的信息,对所述调试信息中需要进行优化的信息替换为混淆映射表中的对应信息。例如,混淆映射表中将类名1、方法名1等信息分别映射为字符a、字符b,那么就需要将调试信息中的所有出现类名1的地方替换为字符a,所有出现方法名1的地方替换为字符b,以实现代码优化。
优选地,其中,所述代码优化操作包括将所述类源码文件中名称相关信息替换为无意义字符串。
本领域的技术人员可以理解,所述类源码文件是由目标应用的可执行文件反编译得到的,它包含了关于目标应用的重要名称相关信息,所述名称相关信息是目标应用的重要属性信息,其对于攻击者破解目标应用是非常关键的,因此,将所述重要的名称相关信息进行隐藏是非常必要的,可以通过将所述类源码文件中名称相关信息替换为无意义的字符串来实现。这样,攻击者在破解目标应用的过程中,只能获得无意义的字符串,从而有效地实现对目标应用的加固保护。例如,可以将变量名1、变量名2、文件名1、文件名2等分别替换为a、b、c、d等无意义的字符串。
更优选地,所述名称相关信息包括以下至少任一项:所述类源码文件中的类名称信息;所述类源码文件中的方法名称信息;所述类源码文件中的变量名称信息;所述类源码文件中的文件名称信息。其中,所述类名称信息、方法名称信息、变量名称信息、文件名称信息等,都是与所述目标应用直接相关的信息,有助于攻击者破解目标应用。本领域的技术人员应该可以理解,上述名称相关信息仅为举例,其他有意义的可以有助破解目标应用的相关信息也应包含在内,并在此以引用的方式包含于此。
在一个优选的实施例(参照图3)中,其中,所述获取装置包括:
获取单元(未示出)获取待优化的目标应用;
解压单元(未示出)对所述目标应用解压缩处理,以获得对应的可执行文件和资源文件;
反编译单元(未示出)对所述可执行文件进行反编译以获得所述目标应用对应的类源码文件。
所述获取单元获取待优化的目标应用,具体地,获取待优化的目标应用的方式,可以通过开发商或者目标应用的其他所属者委托处理的方式获得。
所述解压单元对所述目标应用解压缩处理,以获得对应的可执行文件和资源文件,本领域的技术人员可以理解,所述目标应用会以压缩包的形式存在,要获取所要处理的信息需要将目标应用进行解压缩处理,解压之后会首先获得可执行文件和资源文件,其中所述可执行文件指的是可以由操作系统进行加载执行并可以进行编译的文件,所述资源文件是指包含着无需重新编辑代码便可以改变的位图、字符串和其它数据,资源文件的类型可以是图片、音频、视频、文字资源等,或者其他可以在设备中展示的内容等等。
所述反编译单元对所述可执行文件进行反编译以获得所述目标应用对应的类源码文件,具体地,本领域的技术人员可以理解,所述可执行文件是通过对源码进行编译和其他处理后得到的,所以要获取所述目标应用对应的类源码文件需要对所述可执行文件进行反编译才能获得。例如,对安卓应用包进行解压处理,会获得可执行文件和资源文件,再对所述可执行文件反编译就可以得到类源码的多个smali文件,以供后续处理使用。
优选地(参照图4),该设备还包括:
编译装置,对代码优化后的所述类源码文件重新编译以获得对应的新可执行文件;
打包装置,将所述新可执行文件与所述资源文件打包,以获得优化后的所述目标应用。
其中,图4中的设备获取装置、调试确定装置、混淆确定装置、优化装置分别与图3实施例中的设备获取装置、调试确定装置、混淆确定装置、优化装置相同或基本相同,故在此不再赘述,仅以引用的方式包含于此。
在该实施例中,所述编译装置对代码优化后的所述类源码文件重新编译以获得对应的新可执行文件,本领域的技术人员可以理解,本申请对目标应用的优化处理,主要是在所述类源码文件基础上对代码进行优化,而所述类源码文件是通过将可执行文件反编译得到的,所以要得到新的可执行文件需要对优化处理后的所述类源码文件重新编译即可。
继续在该实施例中,所述打包装置将所述新可执行文件与所述资源文件打包,以获得优化后的所述目标应用,具体地,在对目标应用进行优化的过程中,首先将所述目标应用进行解压缩处理,得到可执行文件和资源文件,并对所述可执行文件进行相关优化处理,进而实现代码优化,从而获得新的可执行文件,而要获得优化过的目标应用,需要将所述新可执行文件与所述资源文件打包即可。
在一个优选的实施例中(参照图3),其中,所述混淆确定装置包括:优化空间确定单元(未示出),根据所述调试信息确定所述目标应用对应的优化空间信息;混淆映射确定单元(未示出),当所述优化空间信息大于或等于预定的优化空间阈值信息,根据所述调试信息确定所述目标应用对应的混淆映射信息。
所述优化空间确定单元根据所述调试信息确定所述目标应用对应的优化空间信息,本领域的技术人员可以理解目标应用加固方在获得目标应用之前,开发商有可能已经对所述目标应用的源码进行了部分优化,只不过有些优化进行的并不全面,还存在继续优化的空间,其中所述优化空间信息表示是否有必要对所述目标应用继续进行优化处理,具体地,设备1根据所述调试信息确定所述目标应用对应的优化空间信息的方式可以通过将还未优化过的调试信息在全部的调试信息中所占的百分比来表示。例如,调试信息包含类名、方法名、变量名、文件名等信息,所有这些类名、方法名、变量名、文件名等总共有1000个,其中之前已经优化过的类名、方法名、变量名、文件名等总共有300个,也即未优化过的调试信息共有700个,则所述优化空间信息为70%,
当所述优化空间信息大于或等于预定的优化空间阈值信息,所述混淆映射确定单元根据所述调试信息确定所述目标应用对应的混淆映射信息,其中,所述优化空间阈值信息是判断优化空间信息大小的值,本领域的技术人员可以理解当优化空间比较大,即之前优化的不全面,确定需要加固方对所述目标应用继续进行优化处理。当确定需要进行优化处理后,再根据所述调试信息确定所述目标应用对应的混淆映射信息进行优化处理。例如,优化空间阈值信息为50%,表示当所述优化空间信息大于或等于50%时,需要加固方对所述目标应用进行优化,再根据所述调试信息确定所述目标应用对应的混淆映射信息,对所述目标应用进行优化处理。
优选地,所述混淆确定装置还包括:退出单元(未示出),当所述优化空间信息小于所述优化空间阈值信息,退出对所述目标应用的代码优化处理。本领域的技术人员可以理解,当优化空间信息比较小时,也即之前进行的优化处理已经比较全面,那么没有必要继续对所述目标应用进行再次优化处理,退出单元可以直接退出对所述目标应用的代码优化处理,以节约优化资源。例如,优化空间阈值信息为50%,表示当所述优化空间信息小于50%时,不需要对目标应用进行优化处理,可以直接退出对所述目标应用的代码优化处理。
与现有技术相比,本申请通过获取待优化的目标应用的类源码文件,并根据所述类源码文件确定所述目标应用对应的一或多个调试信息,再根据所述调试信息确定所述目标应用对应的混淆映射信息,然后根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作,实现了在无需源码情况下,对目标应用进行源码级别的加固优化,直接逆向分析目标应用的混淆情况,对混淆不彻底的部分进行优化,加强了对目标应用的加固保护。
而且,本申请还可以根据所述调试信息确定所述目标应用对应的优化空间信息,当所述优化空间信息大于或等于预定的优化空间阈值信息,根据所述调试信息确定所述目标应用对应的混淆映射信息,而当所述优化空间信息小于所述优化空间阈值信息,退出对所述目标应用的代码优化处理。这种方式可以实现在进行代码优化处理前根据当前目标应用的优化空间信息来决定是否进行代码优化处理,从而提高优化效率、节约优化资源开销。
此外,本申请还可以通过代码优化操作将类源码文件中名称相关信息替换为无意义字符串,其中,所述名称相关信息包括所述类源码文件中的类名称信息、方法名称信息、变量名称信息、文件名称信息等,通过这种方法,实现了将有意义的编码命名信息隐藏,这样攻击者即使破解出来,也很难理解,从而不能进行下一步逆向分析。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (14)

1.一种用于优化应用代码的方法,其中,该方法包括:
获取待优化的目标应用的类源码文件;
根据所述类源码文件确定所述目标应用对应的一或多个调试信息;
根据所述调试信息确定所述目标应用对应的混淆映射信息;
根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作。
2.根据权利要求1所述的方法,其中,所述获取待优化的目标应用的类源码文件包括:
获取待优化的目标应用;
对所述目标应用解压缩处理,以获得对应的可执行文件和资源文件;
对所述可执行文件进行反编译以获得所述目标应用对应的类源码文件。
3.根据权利要求2所述的方法,其中,该方法还包括:
对代码优化后的所述类源码文件重新编译以获得对应的新可执行文件;
将所述新可执行文件与所述资源文件打包,以获得优化后的所述目标应用。
4.根据权利要求1至3中任一项所述的方法,其中,所述根据所述调试信息确定所述目标应用对应的混淆映射信息包括:
根据所述调试信息确定所述目标应用对应的优化空间信息;
当所述优化空间信息大于或等于预定的优化空间阈值信息,根据所述调试信息确定所述目标应用对应的混淆映射信息。
5.根据权利要求4所述的方法,其中,所述根据所述调试信息确定所述目标应用对应的混淆映射信息还包括:
当所述优化空间信息小于所述优化空间阈值信息,退出对所述目标应用的代码优化处理。
6.根据权利要求1至5中任一项所述的方法,其中,所述目标应用包括基于安卓系统的安卓安装包。
7.根据权利要求1至6中任一项所述的方法,其中,所述代码优化操作包括将所述类源码文件中名称相关信息替换为无意义字符串。
8.根据权利要求7所述的方法,其中,所述名称相关信息包括以下至少任一项:
所述类源码文件中的类名称信息;
所述类源码文件中的方法名称信息;
所述类源码文件中的变量名称信息;
所述类源码文件中的文件名称信息。
9.一种用于优化应用代码的设备,其中,该设备包括:
获取装置,用于获取待优化的目标应用的类源码文件;
调试确定装置,用于根据所述类源码文件确定所述目标应用对应的一或多个调试信息;
混淆确定装置,用于根据所述调试信息确定所述目标应用对应的混淆映射信息;
优化装置,用于根据所述混淆映射信息及所述调试信息对所述类源码文件执行代码优化操作。
10.根据权利要求9所述的设备,其中,所述获取装置包括:
获取单元,用于获取待优化的目标应用;
解压单元,用于对所述目标应用解压缩处理,以获得对应的可执行文件和资源文件;
反编译单元,用于对所述可执行文件进行反编译以获得所述目标应用对应的类源码文件。
11.根据权利要求10所述的设备,其中,该设备还包括:
编译装置,用于对代码优化后的所述类源码文件重新编译以获得对应的新可执行文件;
打包装置,用于将所述新可执行文件与所述资源文件打包,以获得优化后的所述目标应用。
12.根据权利要求9至11中任一项所述的设备,其中,所述混淆确定装置包括:
优化空间确定单元,用于根据所述调试信息确定所述目标应用对应的优化空间信息;
混淆映射确定单元,用于当所述优化空间信息大于或等于预定的优化空间阈值信息,根据所述调试信息确定所述目标应用对应的混淆映射信息。
13.根据权利要求12所述的设备,其中,所述混淆确定装置还包括:
退出单元,用于当所述优化空间信息小于所述优化空间阈值信息,退出对所述目标应用的代码优化处理。
14.根据权利要求9至13中任一项所述的设备,其中,所述代码优化操作包括将所述类源码文件中名称相关信息替换为无意义字符串。
CN201510734521.4A 2015-11-03 2015-11-03 用于优化应用代码的方法与设备 Pending CN106650428A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510734521.4A CN106650428A (zh) 2015-11-03 2015-11-03 用于优化应用代码的方法与设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510734521.4A CN106650428A (zh) 2015-11-03 2015-11-03 用于优化应用代码的方法与设备

Publications (1)

Publication Number Publication Date
CN106650428A true CN106650428A (zh) 2017-05-10

Family

ID=58809999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510734521.4A Pending CN106650428A (zh) 2015-11-03 2015-11-03 用于优化应用代码的方法与设备

Country Status (1)

Country Link
CN (1) CN106650428A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108733379A (zh) * 2018-05-28 2018-11-02 常熟理工学院 基于dex字节码抽离映射混淆的安卓应用加固方法
CN109240696A (zh) * 2017-05-19 2019-01-18 腾讯科技(深圳)有限公司 一种软件更新方法及装置
CN109614771A (zh) * 2018-10-31 2019-04-12 同盾控股有限公司 一种基于Java代码的混淆方法和装置
CN110084005A (zh) * 2019-05-06 2019-08-02 北京奇艺世纪科技有限公司 一种代码的处理方法及装置
CN110990056A (zh) * 2019-11-01 2020-04-10 北京三快在线科技有限公司 逆向分析方法、装置、电子设备及存储介质
WO2020210994A1 (zh) * 2019-04-16 2020-10-22 深圳市欢太科技有限公司 快应用安装包调试方法、装置、电子设备以及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102710414A (zh) * 2012-05-30 2012-10-03 中国电力科学研究院 一种随机化的文档分块加密方法
CN103150493A (zh) * 2013-02-28 2013-06-12 浙江中控技术股份有限公司 一种JavaScript代码的混淆方法和装置
CN103927164A (zh) * 2014-03-10 2014-07-16 珠海市君天电子科技有限公司 一种脚本混淆方法及系统
CN104573426A (zh) * 2015-01-06 2015-04-29 北京邮电大学 一种可执行应用的混淆方法和装置
CN104866734A (zh) * 2014-02-25 2015-08-26 北京娜迦信息科技发展有限公司 一种dex文件的保护方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102710414A (zh) * 2012-05-30 2012-10-03 中国电力科学研究院 一种随机化的文档分块加密方法
CN103150493A (zh) * 2013-02-28 2013-06-12 浙江中控技术股份有限公司 一种JavaScript代码的混淆方法和装置
CN104866734A (zh) * 2014-02-25 2015-08-26 北京娜迦信息科技发展有限公司 一种dex文件的保护方法及装置
CN103927164A (zh) * 2014-03-10 2014-07-16 珠海市君天电子科技有限公司 一种脚本混淆方法及系统
CN104573426A (zh) * 2015-01-06 2015-04-29 北京邮电大学 一种可执行应用的混淆方法和装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240696A (zh) * 2017-05-19 2019-01-18 腾讯科技(深圳)有限公司 一种软件更新方法及装置
CN108733379A (zh) * 2018-05-28 2018-11-02 常熟理工学院 基于dex字节码抽离映射混淆的安卓应用加固方法
CN109614771A (zh) * 2018-10-31 2019-04-12 同盾控股有限公司 一种基于Java代码的混淆方法和装置
WO2020210994A1 (zh) * 2019-04-16 2020-10-22 深圳市欢太科技有限公司 快应用安装包调试方法、装置、电子设备以及存储介质
CN113330427A (zh) * 2019-04-16 2021-08-31 深圳市欢太科技有限公司 快应用安装包调试方法、装置、电子设备以及存储介质
CN113330427B (zh) * 2019-04-16 2024-06-28 深圳市欢太科技有限公司 快应用安装包调试方法、装置、电子设备以及存储介质
CN110084005A (zh) * 2019-05-06 2019-08-02 北京奇艺世纪科技有限公司 一种代码的处理方法及装置
CN110990056A (zh) * 2019-11-01 2020-04-10 北京三快在线科技有限公司 逆向分析方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN106650428A (zh) 用于优化应用代码的方法与设备
US7841010B2 (en) Software or other information integrity verification using variable block length and selection
US10409966B2 (en) Optimizing and protecting software
US10586026B2 (en) Simple obfuscation of text data in binary files
US20140082729A1 (en) System and method for analyzing repackaged application through risk calculation
US9336389B1 (en) Rapid malware inspection of mobile applications
CN109062582B (zh) 一种应用安装包的加密方法及装置
KR101503785B1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
US10296728B2 (en) Method and system for providing cloud-based application security service
CN107292135A (zh) 一种程序代码保护方法和装置
CN112115427A (zh) 代码混淆方法、装置、电子设备及存储介质
KR102459774B1 (ko) Dll 파일 암호화 방법, 이를 수행하는 dll 파일 암호화 시스템, 및 이를 저장하는 기록매체
CN107609394A (zh) Android安装包的防篡改方法、存储设备及装置
US9575750B2 (en) Generic annotation seeker
US8359592B2 (en) Identifying groups and subgroups
CN105447349A (zh) 对so文件中的导出符号进行保护的方法及装置
CN106687978A (zh) 对栈破坏利用的抑制
CN108460254A (zh) 固件保护方法及装置
US9064134B1 (en) Method and apparatus for mitigating software vulnerabilities
CN108664796B (zh) 一种so文件保护方法及装置
CN109165512A (zh) 一种应用程序的意图协议url漏洞检测方法及装置
CN109472138B (zh) 一种检测snort规则冲突的方法、装置和存储介质
US9965621B2 (en) Program protection device
CN115935302B (zh) 安卓安装包的生成方法和装置
KR101546776B1 (ko) 모바일 소프트웨어 저작권 보호를 위한 요구사항 적응적 워터마킹 모듈, 방법 및 이를 수행하기 위한 기록 매체

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.