加固应用、加载加固应用的方法和装置与流程

文档序号:12734503阅读:207来源:国知局
本申请涉及计算机
技术领域
:,具体涉及信息安全
技术领域
:,尤其涉及加固应用、加载加固应用的方法和装置。
背景技术
::终端应用发布之后,用户可以通过反编译工具查看到应用的源程序代码。一些用户查看应用的源程序代码以窃取他人劳动成果,或者通过在代码中插入其他程序(如病毒代码)等操作对应用的源程序代码进行加工,干扰其他用户对终端应用的正常使用,甚至侵犯其他用户的信息安全。现有技术中,通常将壳程序和终端应用的源程序拼接在一起,并且将终端应用的源程序中可执行文件(executablefile,如dex文件)的长度(如字节数)放置于拼接文件的末尾。这种终端应用的加固方法,往往适用包含一个可执行文件的终端应用,当终端应用有多个可执行文件时,无法和壳程序拼接。因此,需要提供一种能够对包含一个或多个可执行文件的终端应用进行加固的通用方法。技术实现要素:本申请的目的在于提出一种改进的加固应用的方法和装置,以及加载加固应用方法和装置,来解决以上
背景技术
:部分提到的技术问题。第一方面,本申请提供了一种加固应用的方法,该方法包括:从待加固应用的源程序中获取至少一个可执行文件;将该至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为第一资源文件;将该至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密,以作为第二资源文件;基于对资源文件的压缩生成待加固应用的安装包文件,其中,资源文件包括上述第一资源文件、第二资源文件、包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件。在一些实施例中,将该至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为第一资源文件包括:将各个可执行文件的类加载器分别置换成预定类加载器;将置换类加载器后的至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为第一资源文件;以及,上述资源文件还包括:记录各个可执行文件的类加载器与所置换的自定义类加载器之间的映射关系的第四资源文件。在一些实施例中,本申请提供的加固应用的方法通过调用本地开发工具包的逻辑实现。第二方面,本申请还提供了一种加载加固应用的方法,该方法包括:从加固应用的安装包文件获取资源文件,其中,该资源文件包括:将加固应用的至少一个可执行文件按照第一预设加密算法加密后进行拼接生成的第一资源文件,将该至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密生成的第二资源文件,包括与上述第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件;通过第三资源文件中与第二预设加密算法相对应的解密算法解密第二资源文件,以获取第一资源文件中各个可执行文件的文件长度;根据所获取的各个可执行文件的文件长度从第一资源文件中获取至少一个可执行文件;根据所获取的可执行文件加载所述加固应用。在一些实施例中,上述资源文件还包括记录各个可执行文件的类加载器与所置换的预设类加载器之间的映射关系的第四资源文件;以及,根据所获取的可执行文件安装或运行所述加固应用包括:检测各个可执行文件中是否包含预定类加载器;若包含,创建预定类加载器的对象,用于置换映射关系中记载的可执行文件中与预定类加载器相应的类加载器。在一些实施例中,根据所获取的可执行文件加载所述加固应用还包括:从上述至少一个可执行文件中获取加固应用入口的应用对象名称;创建与加固应用入口的应用对象名称对应的应用对象;通过上述映射关系将所创建的应用对象的应用信息置换成加固用用的应用信息。在一些实施例中,根据所获取的可执行文件加载加固应用包括:将所获取的可执行文件通过预设密钥算法计算得到校验值;响应于校验值与预设值一致,加载上述加固应用,其中,预设值由服务器对源程序的可执行文件通过预设密钥算法计算得到。第三方面,本申请还提供了一种加固应用的装置,该装置包括:获取模块,配置用于从待加固应用的源程序中获取至少一个可执行文件;第一生成模块,配置用于将该至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为第一资源文件;第二生成模块,配置用于将该至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密,以作为第二资源文件;第三生成模块,配置用于基于对资源文件的压缩生成待加固应用的安装包文件,其中,该资源文件包括上述第一资源文件、第二资源文件、包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件。在一些实施例中,第一生成模块进一步配置用于:将各个可执行文件的类加载器分别置换成预定类加载器;将置换类加载器后的至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为所述第一资源文件;以及,上述资源文件还包括:记录各个可执行文件的类加载器与所置换的自定义类加载器之间的映射关系的第四资源文件。在一些实施例中,该装置通过调用本地开发工具包的逻辑加固所述待加固应用。第四方面,本申请还提供了一种加载加固应用的装置,该装置包括:资源文件获取模块,配置用于从加固应用的安装包文件获取资源文件,其中,该资源文件包括:将加固应用的至少一个可执行文件按照第一预设加密算法加密后进行拼接生成的第一资源文件,将该至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密生成的第二资源文件,包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件;解密模块,配置用于通过第三资源文件中与第二预设加密算法相对应的解密算法解密第二资源文件,以获取第一资源文件中各个可执行文件的文件长度;可执行文件获取模块,配置用于根据所获取的各个可执行文件的文件长度从第一资源文件中获取至少一个可执行文件;加载模块,配置用于根据所获取的可执行文件加载该加固应用。在一些实施例中,上述资源文件还包括记录各个可执行文件的类加载器与所置换的预设类加载器之间的映射关系的第四资源文件;以及,加载模块进一步配置用于:检测各个可执行文件中是否包含预定类加载器;若包含,创建预定类加载器的对象,用于置换上述映射关系中记载的可执行文件中与预定类加载器相应的类加载器。在一些实施例中,加载模块还配置用于:从上述至少一个可执行文件中获取加固应用入口的应用对象名称;创建与加固应用入口的应用对象名称对应的应用对象;通过上述映射关系将所创建的应用对象的应用信息置换成加固用用的应用信息。在一些实施例中,加载模块还包括:计算单元,配置用于将所获取的可执行文件通过预设密钥算法计算得到校验值;加载单元,配置用于响应于校验值与预设值一致,加载该加固应用,其中,预设值由服务器对源程序的可执行文件通过预设密钥算法计算得到。第五方面,本申请提供了一种计算设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当该一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一方法。第六方面,本申请还提供了一种非易失性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一方法。本申请提供的加固应用、加载加固应用的方法和装置,通过从待加固应用的源程序中获取至少一个可执行文件,然后将至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为第一资源文件,接着还将至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密,以作为第二资源文件,然后基于对资源文件的压缩生成待加固应用的安装包文件,其中,这里的资源文件包括上述第一资源文件、上述第二资源文件、以及包括与预设加密算法相对应的解密算法的第三资源文件。由于将各个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后并按照预设加密算法加密,压缩到待加固应用的安装包文件中,可以实现对包括一个或多个可执行文件的应用的加固。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1是本申请可以应用于其中的示例性系统架构图;图2是根据本申请的加固应用的方法的一个实施例的流程图;图3是根据本申请的加载加固应用的方法的一个实施例的流程图;图4是根据本申请的加载加固应用的方法的一个应用场景的示意图;图5是根据本申请的加固应用的装置的一个实施例的结构示意图;图6是根据本申请的加载加固应用的装置的一个实施例的结构示意图;图7是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1示出了可以应用本申请的加固应用及加载加固应用的方法或装置的实施例的示例性系统架构100。如图1所示,系统架构100可以包括电子设备101、102、103、104,网络105。网络105用以在电子设备101、102、103、104之间提供通信链路的介质。网络105可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。系统架构100中,电子设备101可以是具有一定计算能力的任意电子设备,应用开发者可以将开发的应用由电子设备101通过网络105发布到互联网。在本申请提供的实施例中,电子设备101发布应用之前可以对应用进行加固处理。在一些实现中,电子设备101可以作为为所发布应用提供支持的后台服务器。电子设备102、103、104可以是终端设备,其上可以安装有一个或多个操作系统,如安卓(Andriod)系统等。其可以通过网络105下载、安装相应操作系统下的应用,例如通过电子设备101发布的运行于安卓系统下的应用。电子设备102、103、104可以包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(MovingPictureExpertsGroupAudioLayerIII,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExpertsGroupAudioLayerIV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。需要说明的是,本申请所提供的加固应用的方法一般由电子设备101执行,相应地,加固应用的装置一般设置于电子设备101中。本申请所提供的加载加固应用的方法一般由电子设备102、103、104执行,相应地,加载加固应用的装置一般设置于电子设备102、103、104中。应该理解,图1中的电子设备和网络的数目仅仅是示意性的。根据实现需要,可以具有任意数目的电子设备和网络。继续参考图2,示出了根据本申请的加固应用方法的一个实施例的流程200。该加固应用的方法,包括以下步骤:步骤201,从待加固应用的源程序中获取至少一个可执行文件。通常,一个应用可以包括一个或多个通过记载源程序的可执行文件(如安卓平台上的dex类型文件)。源程序可以是按照一定的程序设计语言(例如C/C++、Java等等)规范书写的,其可以保存在一个或多个可读的文本文件中,每个文本文件就可以作为一个可执行文件。实践中,一个应用的源程序在编写过程中可以属于同一个工程,以可执行文件为dex类型文件为例,每个dex文件中的方法数最多为65535各,当工程中的方法数超过了65535时,其源程序就要被拆分保存在多个dex文件中。在本实施例中,上述加固应用的方法运行于其上的电子设备(例如可以是图1中的电子设备101等)可以从待加固应用的源程序中获取一个或多个可执行文件。其中,这里的源程序可以是通过C/C++、Java等等任意程序设计语言编写的程序。上述电子设备可以从源程序中读出预定可执行文件格式的文件,例如,从APK(AndroidPackage,安卓安装包)中获取dex格式的文本文件。步骤202,将上述至少一个可执行文件通过第一预设加密算法进行加密后进行拼接以作为第一资源文件。在本实施例中,上述电子设备(例如图1所示的电子设备101)可以预设有第一预设加密算法,其可以将步骤201中获取的一个或多个可执行文件分别通过该第一预设加密算法进行加密,之后,上述电子设备可以将加密后的可执行文件拼接在一起作为第一资源文件。这里,第一预设加密算法可以是包括但不限于代码混淆、apk破坏、签名验证等等之类的方法中的至少一种方法。其中,代码混淆可以是利用各种指令(如jmp、call、ret等)的一些堆栈技巧、位置运算等使反汇编的时候出错的一种方法,例如,将目标位置指向另一条指令的中间位置,以在反汇编的时候便会出现逻辑混乱;apk破坏可以多对可执行文件的代码进行混淆后将代码中的所有变量、函数、类的名称加密为简短的英文字母代号,增加代码的阅读难度;签名验证可以通过诸如RSA(一种非对称公钥加密算法)、ElGamal之类的至少一种加密算法进行签名加密,并对签名进行认证;等等,在此不再一一例举。上述电子设备可以加密后的可执行文件拼接在一起作为第一资源文件。实践中,当可执行文件只有一个时,上述电子设备可以将该可执行文件加密作为第一资源文件,当可执行文件有多个时,上述电子设备可以将分别加密后的该多个可执行文件依次拼接作为第一资源文件。其中,多个可执行文件的拼接顺序可以是任意拼接顺序,本申请对此不做限定。在一些实现中,上述电子设备可以将加密后的可执行文件转换成字节码记录到同一个文件里,以实现可执行文件的拼接。在本实施例的一些可选的实现方式中,可执行文件中可以包含类加载器。例如,在源程序通过Java语言编写的应用中,类加载器(ClassLoader)用来加载类(class)字节码到Java虚拟机中。实践中,Java虚拟机使用Java类的方式如下:通过Java语言编写的源程序在经过语言编译器(如Javac)编译之后被转换成Java字节码文件(后缀为.class的文件),类加载器负责读取Java字节码文件中的Java字节代码,并转换成java.lang.Class类的一个实例。每一个这样的实例用来表示一个Java类。此时,上述电子设备在对各个可执行文件进行加密前,还可以将各个可执行文件的类加载器分别置换成预定类加载器,然后,将置换类加载器后的至少一个可执行文件进行拼接以作为上述第一资源文件。其中,预定类加载器可以是与公知的类加载器不同的自定义类加载器。这样,可以使预定类加载器在将Java字节码文件中的Java字节代码转换成java.lang.Class类的实例时转换成预定类加载器所置换的类加载器对应类的实例。举例而言,可执行文件中的类加载器A用于加载“车”这个类,此时,通过预设加载器B(自定义类加载器)置换类加载器A,则Java虚拟机通过预设加载器B可以创建类加载器A所对应的“车”这个类的实例,如红色的车等。步骤203,将上述至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密,以作为第二资源文件。在本实施例中,上述电子设备还可以进一步将上述的一个或多个可执行文件的文件长度按照相应可执行文件的拼接顺序进行排列,然后,把排列后的文件按照第二预设加密算法加密,以作为第二资源文件。这里,可执行文件的文件长度可以是可执行文件所包含的字节数,如1024等。其中,第二预设加密算法可以是包括但不限于代码混淆、apk破坏、签名验证等等之类的方法中的至少一种方法。第二预设加密算法可以与第一预设加密算法一致,也可以与第一预设加密算法不一致,本申请对此不作限定。实践中,上述电子设备可以在第二资源文件中先给出可执行文件的个数,然后在将可执行文件的文件长度按照相应可执行文件的拼接顺序依次排列后按照第二预设加密算法加密。可选地,电子设备可以预先设定第二资源文件中特定的位来表示可执行文件个数、可执行文件长度。例如,电子设备可以预先设定第二资源文件中第一个字节的4个比特位用于记录可执行文件个数,如用0011表示可执行文件个数为3个,然后接下来的两个字节表示记录一个可执行文件的长度,如FFFF表示可执行文件长度为65535等。在本实施例的一些可选实现方式中,第二资源文件可以作为第一资源文件的头文件。在一些实现中,第一资源文件也可以包括第二资源文件。步骤204,基于对资源文件的压缩生成待加固应用的安装包文件。在本实施例中,上述电子设备可以在对包括了上述第一资源文件、第二资源文件以及包含了与第一预设加密算法、第二预设加密算法资源文件分别对应的解密算法的第三资源文件的资源文件进行压缩的基础上,与生成应用安装包的其他文件一起,生成待加固应用的安装包文件。可以理解,待加固应用的可执行文件、可执行文件信息(如可执行文件个数、文件长度等)都被加密,则加固后的应用被加载时,需要先对被加密的文件进行解密。因此,上述电子设备在加固应用时,还会记录相应的解密算法,以供对被加密的文件进行解密。在本实施例的一些可选实现方式中,上述可执行文件中的类加载器被预设类加载器置换。此时,上述资源文件还可以包括:记录各个可执行文件的类加载器与所置换的自定义类加载器之间的映射关系的第四资源文件。通过置换可执行文件中的类加载器,可以增加源程序破译难度,从而提高加固应用的有效性。在本实施例的一些可选实现方式中,加固应用的方法通过调用本地开发工具包(NativeDevelopmentKit,NDK)的逻辑实现。可以理解,NDK是基于C或C++编程语言开发的,通过在加固应用时使用通过NDK开发的动态库,可以增加源程序破译难度,从而提高加固应用的有效性。继续参见图3。图3是根据本申请的加载加固应用的方法的另一个实施例的流程300。该加载加固应用的方法,包括以下步骤:步骤301,从加固应用的安装包文件获取资源文件。在本实施例中,当加固应用被安装或启动时,加载加固应用的方法运行于其上的电子设备(例如图1中的电子设备102、103、104)首先可以从加固应用的安装包文件中获取资源文件。其中,这里的资源文件可以包括:将加固应用的至少一个可执行文件按照第一预设加密算法加密后进行拼接生成的第一资源文件,将至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密生成的第二资源文件,包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件。这里,第一预设加密算法和第二预设加密算法分别可以是包括但不限于代码混淆、apk破坏、签名验证等等之类的方法中的至少一种方法。第一预设加密算法和第二预设加密算法可以是相同的算法,也可以是不同的算法。可以理解,如果加固应用的安装包文件中包括独立的资源文件,上述电子设备可以从加固应用的安装包文件中直接获取上述资源文件;如果加固应用的安装包文件是压缩文件,上述电子设备可以先对安装包文件解压缩,然后在从中获取相应的资源文件。其中,在安装包文件中,各资源文件可以是保存为不同格式的文件,上述电子设备可以根据文件格式分别获取不同的资源文件。在一些实现中,上述电子设备也可以通过调用获取部分资源文件,例如,启动加固应用时调用其中包括解密算法的第三资源文件。步骤302,通过第三资源文件中与第二预设加密算法相对应的解密算法解密第二资源文件,以获取第一资源文件中各个可执行文件的文件长度。在本实施例中,上述电子设备接着可以从第三资源文件中获取与第二预设加密算法相对应的解密算法,并用以解密第二资源文件,从而获取第一资源文件中各个可执行文件的文件长度。实践中,每个加密算法都对应相应的解密算法,在此不再赘述。在一些实现中,可执行文件有多个,则第二资源文件中还可以记载有可执行文件的个数。此时,上述电子设备可以先获取可执行文件的个数,再分别获取每个可执行文件的文件长度。在本实施例的一些可选实现方式中,第二资源文件可以是第一资源文件的一部分。此时,上述电子设备可以先解密第一资源文件,再从第一资源文件中获取第二资源文件进行解密,以便从第二资源文件中获取可执行文件的文件长度。步骤303,根据所获取的各个可执行文件的文件长度从第一资源文件中获取至少一个可执行文件。在本实施例中,上述电子设备还可以进一步根据所获取的可执行文件长度,从第一资源文件中读取与文件长度相应字节的文件,从而分理处一个或多个可执行文件。例如,假设步骤302中获取可执行文件个数为3,每个可执行文件的文件长度依次为10兆字节、2兆字节、8兆字节,由于在第二资源文件中,可执行文件的文件长度按照相应可执行文件的拼接顺序排列,则上述电子设备可以从第一资源文件中可执行文件的起始位置依次读取10兆字节、2兆字节、8兆字内容节分别作为第一可执行文件、第二可执行文件、第三可执行文件。可以理解,上述电子设备获取各个可执行文件后,还可以通过第三资源文件中包含的与用于加密第一资源文件的第一预设加密算法相对应的解密算法对各个可执行文件进行解密。在本实施例的一些可选实现方式中,上述电子设备可以调用NDK开发的动态库来获取、解密上述可执行文件的。这样,以Java语言编写的源程序为例,相当于是在Java语言中调用C语言的逻辑来处理源程序,为应用的反编译增加难度,从而进一步提高应用源代码的保密性和安全性。步骤304,根据所获取的可执行文件加载上述加固应用。在本实施例中,上述电子设备可以接着根据所获取的可执行文件加载上述加固应用。例如,以源程序是Java语言编写的应用为例,上述电子设备根据所获取的可执行文件加载上述加固应用的流程可以包括:执行要创建对象的类及其父类的类加载器,以加载要创建对象的类及其直接与间接父类;在类被加载的同时加载类中的静态成员,例如对静态成员变量进行初始化、执行静态语句块等,按照可执行文件中代码的先后顺序进行;接着,在需要的类加载完成后,开始创建对象,加载非静态的成员,例如对非静态成员变量进行初始化、执行非静态语句块,按照可执行文件中代码的加载顺序进行;然后根据可执行文件中的对象的构造器,以生成所需类的对象。在本实施例的一些可选实现方式中,可执行文件中可以包含类加载器,上述电子设备在步骤301中获取的资源文件还可以包括:记录各个可执行文件的类加载器与所置换的预设类加载器之间的映射关系的第四资源文件。此时,上述电子设备获取第一资源文件中的可执行文件后,可以先通过反射机制去调用可执行文文件中一个类(class)的创建应用对象(makeApplication)方法,创建一个应用(Application)对象。其中,这里的反射机制包括但不限于以下至少一项:判断任意一个对象所属的类、构造任意一个类的对象、判断任意一个类所具有的成员变量和方法、调用任意一个对象的方法、生成动态代理。因此,上述电子设备可以检测各个可执行文件中是否包含所述预定类加载器,如果包含预定类加载器,则调用相应类(class)的创建应用对象(makeApplication)方法,创建一个应用(Application)对象时,置换为创建上述映射关系中该预定类加载器所置换的可执行文件的类加载器相应类(class)的创建应用对象方法,创建一个所置换的可执行文件的类加载器相应类(class)的应用(Application)对象。在本实施例的一些可选实现方式中,上述电子设备在根据所获取的可执行文件加载所述加固应用时,还可以先将将所获取的可执行文件通过预设密钥算法计算得到校验值,然后将该计算得到的校验值与预设值进行比对,当校验值与预设值一致时,加载该加固应用。其中,上述密钥算法可以是诸如MD5(MessageDigestAlgorithm,消息摘要算法第五版)、RSA算法之类的加密算法。上述预设值可以是由服务器对源程序的可执行文件通过上述预设密钥算法计算得到的。该预设值可以以资源文件的形式包含在上述加固应用的安装包文件中,以供执行上述加载加固应用的方法的电子设备将所得到的验证值与该预设值进行对比。该预设值也可以保存在服务器端,以供执行上述加载加固应用的方法的电子设备将所得到的验证值发送给服务器时,由服务器将验证值与该预设值进行对比,并将对比结果反馈至上述电子设备。经过验证值与该预设值的对比结果,上述电子设备可以验证可执行文件的完整性。例如,如果验证值与预设值一致,上述电子设备可以确定可执行文件是完整的,以继续加载该加固应用;否则,上述电子设备可以确定可执行文件是不完整的。可选地,当上述电子设备确定可执行文件不完整时,其可以停止加载该加固应用,或给出错误提示。作为一个应用场景,本申请的实施例的加固应用的方法及加载加固应用的方法例如可以应用于代理应用中。在该应用场景中,首先,对应用进行加固的电子设备(例如图1所示的电子设备101)可以通过代理应用从待加固应用的源程序中获取至少一个可执行文件,将可执行文件通过第一预设加密算法进行加密后进行拼接以作为代理应用的第一资源文件,将可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密,作为代理应用的第二资源文件,并基于对资源文件的压缩生成待加固应用的安装包文件,其中,这里的而资源文件至少包括上述第一资源文件、第二资源文件以及包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件。在该应用场景中,代理应用还可以将各个可执行文件的类加载器分别置换成预定类加载器,如自定义类加载器。可以理解,此时,待加固应用的可执行文件,及可执行文件的相关信息作为代理应用的资源文件生成了待加固应用的安装包文件,因此,该安装包文件还包括代理应用的执行文件。经过上述处理的应用成为加固应用,该加固应用被发布之后,用户可以通过终端设备(例如图1中的电子设备102、103、104)下载该加固应用的安装包文件,之后安装、运行该加固应用。如图4所示,该加固应用在终端设备的运行时,在步骤401中,响应于接收到该加固应用的启动操作,如用户对该加固应用图标的点击操作等,相应终端设备可以先启动代理应用。接着,在步骤402中,通过类加载器创建类的对象完成代理应用与加固应用的连接。具体地:通过步骤4021,代理应用可以通过对加固应用的安装包文件(ApK)解压缩,获取代理应用的资源文件,即上述的第一资源文件、第二资源文件以及包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件;在该应用场景中,各个可执行文件的类加载器(Classloader)被代理应用置换成了自定义类加载器,则通过步骤4022,代理应用可以先初始化自定义类加载器,具体通过创建自定义类加载器的对象去实现;然后,通过步骤4023,代理应用通过反射机制用初始化的自定义类加载器的对象去置换可执行文件中的相应类加载器。进一步地,通过步骤403,代理应用可以通过反射机制创建加固应用的应用(Application)对象。具体地:通过步骤4031,代理应用可以先从可执行文件中获取加固应用入口的应用对象名称;接着,在步骤4032中,通过反射机制去调用代理应用中加载应用(LoadedApk)这个类(class)的创建应用(makeApplication)方法,创建一个与加固应用入口的应用对象名称对应的应用(Application)对象;然后,在步骤4033中,代理应用通过记录映射关系的第四资源文件中的映射关系将所创建的应用(Application)对象的应用信息置换成加固用用的应用信息。至此,代理应用已完成对加固应用运行入口的调用。接着,通过步骤404,加固应用在代理应用中正常运行。本申请实施例提供的加固应用和加载加固应用的方法,通过将将可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密,和加密拼接的可执行文件一起作为资源文件,生成加固应用的安装包文件,实现了包括多个可执行文件的应用的加固。在一些可选实现中,可执行文件中的类加载器被置换成预设类加载器,之后对可执行文件进行加密、拼接,可以提高应用加固的有效性。进一步参考图5,作为对本申请的加固应用的方法的实现,本申请提供了一种加固应用的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应。如图5所示,本实施例的信息推送装置500包括:获取模块501、第一生成模块502、第二生成模块503和第三生成模块504。其中,获取模块501可以配置用于从待加固应用的源程序中获取至少一个可执行文件;第一生成模块502可以配置用于将该至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为第一资源文件;第二生成模块503可以配置用于将该至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密,以作为第二资源文件;第三生成模块504可以配置用于基于对资源文件的压缩生成待加固应用的安装包文件,其中,该资源文件包括上述第一资源文件、第二资源文件、包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件。在本实施例的一些可选实现方式中,第一生成模块进一步配置可以用于:将各个可执行文件的类加载器分别置换成预定类加载器;将置换类加载器后的至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为所述第一资源文件;以及,上述资源文件还包括:记录各个可执行文件的类加载器与所置换的自定义类加载器之间的映射关系的第四资源文件。通过置换可执行文件中的类加载器,可以增加源程序破译难度,从而提高加固应用的有效性。在本实施例的一些可选实现方式中,该装置500可以通过调用本地开发工具包的逻辑加固所述待加固应用。由此,可以进一步增加源程序破译难度,从而提高加固应用的有效性。值得说明的是,信息推送的装置500中记载的诸模块与参考图2描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于加固应用的装置500及其中包含的模块或单元,在此不再赘述。本领域技术人员可以理解,上述加固应用的装置500还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图5中未示出。进一步参考图6,作为对加载加固应用的方法的实现,本申请提供了一种加载加固应用的装置的一个实施例,该装置实施例与图3所示的方法实施例相对应。如图6所示,本实施例的加载加固应用的装置600包括:资源文件获取模块601、解密模块602、可执行文件获取模块603和加载模块604。其中,资源文件获取模块601可以配置用于从加固应用的安装包文件获取资源文件,其中,该资源文件可以包括:将加固应用的至少一个可执行文件按照第一预设加密算法加密后进行拼接生成的第一资源文件,将该至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密生成的第二资源文件,包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件;解密模块602可以配置用于通过第三资源文件中与第二预设加密算法相对应的解密算法解密第二资源文件,以获取第一资源文件中各个可执行文件的文件长度;可执行文件获取模块603可以配置用于根据所获取的各个可执行文件的文件长度从第一资源文件中获取至少一个可执行文件;加载模块604可以配置用于根据所获取的可执行文件加载该加固应用。在本实施例的一些可选实现方式中,资源文件获取模块601所获取的资源文件还可以包括:记录各个可执行文件的类加载器与所置换的预设类加载器之间的映射关系的第四资源文件。此时,加载模块604可以进一步配置用于:检测各个可执行文件中是否包含预定类加载器;若可执行文件中包含预定类加载器,创建该预定类加载器的对象,用于置换第四资源文件所记录的映射关系中记载的可执行文件中与该预定类加载器相应的类加载器。预定类加载器可以有多个,针对每个预定类加载器,加载模块604都可以都执行以上操作。在本实施例的一些可选实现方式中,加载模块604还可以配置用于:从第一资源文件的至少一个可执行文件中获取加固应用入口的应用对象名称;创建与加固应用入口的应用对象名称对应的应用对象;根据第四资源文件所记录的映射关系将所创建的应用对象的应用信息置换成加固用用的应用信息。在本实施例的一些可选实现方式中,加载模块604还可以包括:计算单元(未示出),可以配置用于将所获取的可执行文件通过预设密钥算法计算得到校验值;加载单元(未示出),可以配置用于响应于校验值与预设值一致,加载该加固应用,其中,预设值由服务器对源程序的可执行文件通过预设密钥算法计算得到。该预设值可以以资源文件的形式包含在上述加固应用的安装包文件中,以供执行上述加载加固应用的方法的电子设备将所得到的验证值与该预设值进行对比。该预设值也可以保存在服务器端,以供执行上述加载加固应用的方法的电子设备将所得到的验证值发送给服务器时,由服务器将验证值与该预设值进行对比,并将对比结果反馈至上述电子设备。经过验证值与该预设值的对比结果,上述电子设备可以验证可执行文件的完整性。值得说明的是,加载加固应用的装置600中记载的诸模块与参考图3描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于加载加固应用的装置600及其中包含的模块或单元,在此不再赘述。本领域技术人员可以理解,上述加载加固应用的装置600还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图6中未示出。下面参考图7,其示出了适于用来实现本申请实施例的终端设备/服务器的计算机系统700的结构示意图。图7示出的终端设备/服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM703中,还存储有系统700操作所需的各种程序和数据。CPU701、ROM702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。以下部件连接至I/O接口705:包括键盘或触摸屏等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的非易失性计算机可读介质可以是非易失性计算机可读信号介质或者非易失性计算机可读存储介质或者是上述两者的任意组合。非易失性计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。非易失性计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,非易失性计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、第一生成模块、第二生成模块和第三生成模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,获取模块还可以被描述为“配置用于从待加固应用的源程序中获取至少一个可执行文件的模块”。作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:从待加固应用的源程序中获取至少一个可执行文件;将该至少一个可执行文件通过第一预设加密算法加密后进行拼接以作为第一资源文件;将该至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密,以作为第二资源文件;基于对资源文件的压缩生成待加固应用的安装包文件,其中,资源文件包括上述第一资源文件、第二资源文件、包括与第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件。或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:从加固应用的安装包文件获取资源文件,其中,该资源文件包括:将加固应用的至少一个可执行文件按照第一预设加密算法加密后进行拼接生成的第一资源文件,将该至少一个可执行文件的文件长度按照相应可执行文件的拼接顺序排列后按照第二预设加密算法加密生成的第二资源文件,包括与上述第一预设加密算法、第二预设加密算法分别相对应的解密算法的第三资源文件;通过第三资源文件中与第二预设加密算法相对应的解密算法解密第二资源文件,以获取第一资源文件中各个可执行文件的文件长度;根据所获取的各个可执行文件的文件长度从第一资源文件中获取至少一个可执行文件;根据所获取的可执行文件加载所述加固应用。以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1