防篡改APK的生成方法和装置、安装及运行方法和装置与流程

文档序号:12467457阅读:242来源:国知局
防篡改APK的生成方法和装置、安装及运行方法和装置与流程
本发明涉及移动终端应用安全
技术领域
,具体涉及一种防篡改APK的生成方法和装置、安装及运行方法和装置。
背景技术
:随着互联网通信技术的快速发展,各种移动终端设备已经成为人们生活必不可少的工具,具有各种各样功能的终端应用程序APP也层出不穷,为用户带来了更加便捷的体验。APK(AndroidPackage)即安卓Android安装包,是Android操作系统上的应用程序安装文件格式。由于Android平台采用Java语言开发,导致APK中的代码易于被反编译,通过反编译APK文件,进行代码的分析、修改或者插入,再重新签名打包为新的APK文件,以达到改变程序原有行为的目的,容易实现对APK的篡改。APK的篡改行为严重损害了应用程序开发商的利益和积极性,而利用APK篡改技术,通过加入恶意代码使得Android用户面临隐私泄露和财产损失的危险,严重影响了用户的应用安全。因此,APK的防篡改就变得尤为重要。目前,对于APK的防篡改防护,多是采用对dex文件进行修改来增加攻击的难度,如对部分或整个dex文件进行加密,或者对dex文件做字节码变形,实现对APK的加固,但是这些方式都需要对APK代码进行修改及再编译,增加了技术人员的工作量,且在APK文件运行在内存中时,仍存在从内存中dump到完整的dex文件的风险。技术实现要素:针对现有技术中存在的缺陷,本发明实施例的目的在于提供一种能够克服上述问题或者至少能够部分地解决上述问题的一种防篡改APK的生成方法和装置、安装及运行方法和装置。为实现上述目的,在本发明的一个实施例中提供了:一种防篡改APK的生成方法,所述生成方法包括:解压原始APK,获取解压后的指定APK文件的循环冗余校验码CRC;将所述循环冗余校验码CRC按照设定方式进行处理,得到校验值,将校验值写入校验文件,并确定校验文件的保存路径;将所述原始APK和校验文件整合,生成目标APK。优选的,如上所述的生成方法,所述将校验值写入校验文件包括:将所述校验值按照设定加密算法进行加密,得到校验值密文,将校验值密文写入校验文件。在本发明的一个实施例中提供了:一种防篡改APK的生成装置,所述生成装置包括:第一校验码获取模块,用于解压原始APK,获取解压后的指定APK文件的循环冗余校验码CRC;校验文件生成模块,用于将所述循环冗余校验码CRC按照设定方式进行处理,得到校验值,将校验值写入校验文件;校验文件路径确定单元,用于确定所述校验文件的保存路经;防篡改APK生成模块,用于将所述原始APK文件和校验文件整合,生成目标APK。优选的,如上所述的生成装置,所述校验文件生成模块包括:校验值加密单元,用于将所述校验值按照设定加密算法进行加密,得到校验值密文,将校验值密文写入校验文件。在本发明的一个实施例中提供了:一种应用程序的安装方法,所述应用程序的APK为所述任一防篡改APK的生成方法生成的目标APK,所述安装方法包括:获取目标APK;解析目标APK,得到其原始APK和校验文件;安装所述原始APK,并根据所述校验文件的保存路径保存校验文件。在本发明的一个实施例中提供了:一种应用程序的安装装置,所述安装装置包括:目标APK获取模块,用于获取目标APK;目标APK解析模块,用于解析目标APK,得到其原始APK和校验文件;程序安装模块,用于安装所述第一原始APK,并根据所述校验文件的保存路径保存校验文件。在本发明的一个实施例中提供了:一种应用程序的运行方法,所述应用程序为如上所述安装方法安装的应用程序,所述运行方法包括:接收用户的应用程序运行指令;根据所述应用程序的安装路径,获取应用程序安装目录中的指定APK文件的循环冗余校验码CRC;将所述循环冗余校验码CRC按照设定方式进行处理,得到第一校验值;根据所述应用程序的校验文件的保存路经提取其校验文件中的第二校验值;判断所述第一校验值和第二校验值是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。优选的,如上所述的运行方法,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,还包括:根据与设定加密算法对应的解密算法解密第二校验值密文,得到第二校验值。优选的,如上所述的运行方法,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,还包括:将所述第一校验值按照设定加密算法进行加密处理,得到第一校验值密文,判断第一校验值密文和第二校验值密文是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。在本发明的一个实施例中提供了:一种应用程序的运行装置,所述运行装置包括:运行指令接收模块,用于接收用户的应用程序运行指令;第二校验码获取模块,用于根据所述应用程序的安装路径,获取应用程序安装目录中的指定APK文件的循环冗余校验码CRC;校验值生成模块,用于将所述循环冗余校验码CRC按照设定方式进行处理,得到第一校验值;校验值提取模块,用于根据所述应用程序的校验文件的保存路经提取其校验文件中的第二校验值;防篡改判断模块,用于判断所述第一校验值和第二校验值是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。优选的,如上所述的运行装置,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,所述校验值提取模块包括:校验值解密单元,用于根据与设定加密算法对应的解密算法解密所述第二校验值密文,得到第二校验值。优选的,如上所述的运行装置,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,所述校验值生成模块包括:校验值加密单元,用于将所述第一校验值按照设定加密算法进行加密处理,得到第一校验值密文;所述防篡改判断模块,用于判断第一校验值密文和第二校验值密文是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。本发明的有益效果在于:本发明实施例中所提供的防篡改APK的生成方法和装置、安装及运行方法和装置,利用APK文件中指定APK文件的循环冗余校验码CRC实现了对APK的防篡改,为APK的防篡改防护提供了一种全新的方式,且该方法很多好的利用循环冗余校验码的唯一性特点,实施简单、快捷,能够方便的实现对APK文件是否被篡改的判断。本发明实施例中提供的方案,能够在APK代码运行之前,首先对APK是否被篡改的判断,在APK被篡改时提醒终端用户,提高了应用程序安装运行的安全性,更好的保障了用户的利益。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,附图仅限于示出优选实施方式的目的,而并不认为是本发明的限制,且对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明的一个实施例中提供的一种防篡改APK的生成方法的流程示意图;图2为本发明的一个实施例中的解压后的APK的文件结构示意图;图3为本发明的一个实施例中提供的一种防篡改APK的生成装置的结构示意图;图4为本发明的一个实施例中提供的一种防篡改APK的生成装置的结构示意图;图5为本发明的一个实施例中提供的一种防篡改APK的生成装置的结构示意图;图6为本发明的一个实施例中提供的一种防篡改APK的生成装置的结构示意图;图7为本发明的一个实施例中提供的一种应用程序的安装方法的流程示意图;图8为本发明的一个实施例中提供的一种应用程序的安装装置的结构示意图;图9为本发明的一个实施例中提供的一种应用程序的运行方法的流程示意图;图10为本发明的一个实施例中提供的一种应用程序的运行装置的流程示意图;图11为本发明的一个实施例中提供的一种应用程序的运行装置的流程示意图;图12为本发明的一个实施例中提供的一种应用程序的运行装置的流程示意图;图13为本发明的一个实施例中提供的一种应用程序的生成、安装及运行方法的流程示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,对于本发明技术方案的实施不应被以下描述的实施例所限制。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本发明保护的范围。图1示出了本发明的一个实施例中提供的一种防篡改APK的生成方法的流程示意图,由图中可以看出,该生成方法可以包括:步骤S110:解压原始APK,获取解压后的指定APK文件的循环冗余校验码CRC;APK即Android安装包,通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件其实是zip格式的压缩包,但后缀名被修改为apk,通过解压缩软件解压后,一般可看到下表中所示的文件结构,包括配置文件目录assets、数据连接库目录lib、资源文件存放目录res(res是resource的缩写,这个目录存放资源文件)、签名文件目录META-INF(存放的是签名信息,用来保证apk包的完整性和系统的安全),程序全局配置文件AndroidManifest.xml、Dalvik字节码文件classes.dex、以及编译后的二进制资源文件resources.arsc。其中,在有些APK文件中,可以只有配置文件目录assets和资源文件存放目录res中的一种。assets目录lib目录res目录META-INF目录AndroidManifest.xmlclasses.dexresources.arsc对于解压后的APK,其中的每一个APK文件都会存在一个对应的循环冗余校验码CRC,这个数值是根据文件的具体内容计算出来的,具有唯一性,一个文件修改后其对应的循环冗余校验码CRC也会改变。如图2中所示,为一个实施例中将APK解压后其APK文件的示意图,可以看出,程序全局配置文件AndroidManifest.xml、Dalvik字节码文件classes.dex以及编译后的二进制资源文件resources.arsc各自具有自己唯一的CRC,配置文件目录assets和数据连接库目录lib下的文件也都有各自唯一的CRC(图中未示出),该实施例中使用的CRC生成算法为CRC32。为生成防篡改APK,本实施例中,首先解压待处理的原始APK,并获取解压后的指定APK文件的循环冗余校验码CRC。其中,所述指定APK文件为非签名信息文件,这是因为签名文件目录META-INF下的文件均是签名文件,是允许修改,因此,该目录下的文件的循环冗余校验码CRC也是允许变化的。所述指定APK文件可以是一个、多个、或者除签名文件目录META-INF中的文件之外的所有APK文件。本实施例中,至少包括以下文件中的一种:程序全局配置文件AndroidManifest.xml、Dalvik字节码文件classes.dex、编译后的二进制资源文件resources.arsc、配置文件目录assets下的一个或多个文件、数据连接库目录lib下的一个或多个文件、资源文件存放目录res下的一个或多个文件。在实际应用中,可以根据实际需求确定所述指定APK的选择测量,例如,。在实际操作中,为了计算方便,可以优选解压后的APK中除签名文件目录META-INF下的文件之外的所有文件,或者,为了减少数据计算量,提高处理速度,可以根据需要只提取指定的一个或几个文件。步骤S120:将所述循环冗余校验码CRC按照设定方式进行处理,得到校验值,将校验值写入校验文件,并确定校验文件的保存路径;步骤S130:将所述原始APK和校验文件整合,生成目标APK。在步骤S110中完成指定APK文件的循环冗余校验码CRC的获取后,将所述循环冗余校验码CRC按照设定方式进行处理,得到校验值,将校验值写入校验文件,并在确定好校验文件的保存路径后,将原始APK和校验文件整合,得到目标APK,所述目标APK即为生成的防篡改APK。其中,对于所述循环冗余校验码CRC的处理方式,所述设定方式可以根据实际需求进行选择,如可以简单的是将所获取的循环冗余校验码CRC进行混淆处理,混淆后的结果作为所述校验值;或者是采用任意一种加密方法对所获取的循环冗余校验码CRC进行加密处理,加密后的结果即为所述校验值。在本发明的一个实施例中,优选的设定方式为将循环冗余校验码CRC进行加密处理。得到所述校验值后,将校验值写入校验文件中,将原始APK和校验文件整合得到目标APK。其中,原始APK和校验文件的具体整合方式可以根据实际需求设定,如可以是简单的将两者打包,或者按照某种设定方法进行整合处理。采用步骤S110-步骤S130中所述的方法生成,通过将原始APK中的APK文件的循环冗余校验码CRC进行处理得到的校验文件与原始APK进行整合,得到目标APK,由于循环冗余校验码CRC具有唯一性,因此,能够通过校验文件实现快速方便的判断出原始APK中的文件是否被篡改的目的。为了进一步提高校验值的存储安全性,在本发明的一个实施例中,所述将校验值写入校验文件包括:将所述校验值按照设定加密算法进行加密,得到校验值密文,将校验值密文写入校验文件。其中,所述设定加密算法可以根据需要选择任意一种加密算法。对于所述校验文件,其保存路径也是可以根据需要进行设定的。在本发明的一个实施例中,所述校验文件的保存路径为目标APK安装在的终端设备中的指定位置。即用户在其终端设备中下载目标APK后,会自动将目标APK中的校验文件存储于终端设备中的默认指定位置。该实施例中,目标APK中的原始APK和校验文件还是相对独立的两个文件,此时,所述将原始APK和校验文件整合即是将原始APK和校验文件存储打包即可。在本发明的一个实施例中,所述校验文件的保存路径为目标APK在终端设备安装后其原始APK的安装目录文件。其中,所述安装目录文件包括原始APK安装在的根目录或者配置文件目录assets或者资源文件存放目录res。此时,所述将原始APK和校验文件整合包括:将原始APK和校验文件存储打包。该实施例中,校验文件保存在原始APK安装后的安装目录下。在本发明的另一个实施例中,所述校验文件的保存路径为目标APK生成前其原始APK的第一目录文件。所述第一指定目录文件包括原始APK安装在的根目录或者配置文件目录assets或者资源文件存放目录res。此时,将原始APK和校验文件整合包括:将校验文件添加到所述第一目录文件中,将添加后的第一目录文件和除第一目录文件之外的原始APK解压后的其它APK文件压缩打包。该实施例中,将校验文件作为了原始APK中的一个文件,融合到了原始APK中,将校验文件添加到原始APK的第一目录文件中后,对包括校验文件在内的所有APK文件重新进行打包签名,生成目标APK文件以供用户安装下载。对应于图1中所示的防篡改APK的生成方法,图3中示出了本发明一个实施例中提供的一种防篡改APK的生成装置的结构示意图,由图中可以看出,该生成装置包括第一校验码获取模块310、校验文件生成模块320、校验文件路径确认单元330和防篡改APK生成模块340。其中:第一校验码获取模块310,用于解压原始APK,获取解压后的指定APK文件的循环冗余校验码CRC;校验文件生成模块320,用于将所述循环冗余校验码CRC按照设定方式进行处理,得到校验值,将校验值写入校验文件;校验文件路径确定单元330,用于确定所述校验文件的保存路经;防篡改APK生成模块340,用于将所述原始APK文件和校验文件整合,生成目标APK。其中,所述指定APK文件为非签名信息文件,指定APK文件可以是一个、多个或者是除签名信息文件外的所有APK文件。在本发明的一个实施例中,所述指定APK文件至少包括以下文件中的一种:程序全局配置文件AndroidManifest.xml、Dalvik字节码文件classes.dex、编译后的二进制资源文件resources.arsc、配置文件目录assets下的一个或多个文件、数据连接库目录lib下的一个或多个文件、资源文件存放目录res下的一个或多个文件。本实施例中所述的防篡改APK的生成装置,利用具有唯一性的APK文件的循环冗余校验码CRC生成校验文件,并整合到原始APK中,实现了对APK的防篡改防护。为了进一步提高校验值的安全性,在本发明的一个实施例中,所述校验文件生成模块320包括校验值加密单元321,如图4所示。所述校验值加密单元321,用于将所述校验值按照设定加密算法进行加密,得到校验值密文,将校验值密文写入校验文件。其中,所述设定加密算法可以根据实际需求进行设定,可以是任意一种加密方法。在本发明的一个实施例中,校验文件路径确定单元330所确定的校验文件的保存路径可以为目标APK安装在的终端设备中的指定位置。在本发明的另一个实施例中,校验文件路径确定单元330所确定的校验文件的保存路径为目标APK在终端设备安装后其原始APK的安装目录文件中。其中,所述安装目录文件包括原始APK安装在的根目录或者配置文件目录assets或者资源文件存放目录res。在校验文件的保存路经为目标APK安装在的终端设备中的指定位置,或者是为目标APK在终端设备安装后其原始APK的安装目录文件中时,所述防篡改APK生成模块340包括存储打包单元341,如图5所示,所述存储打包单元341,用于将原始APK和校验文件存储打包。本实施例中,通过存储打包单元341,将校验文件和原始APK两个相对独立的文件打包在一起,形成目标APK以供用户下载安装,用户下载目标APK后,通过解析目标APK,解压原始APK,执行解压后的原始APK的class.dex文件完成应用程序的安装,校验文件则根据其保存路经保存到终端设备的指定位置或者是APK安装后的安装目录文件中。在本发明的另一个实施例中,校验文件路径确定单元330所确定的校验文件的保存路径可以为目标APK生成前其原始APK的第一目录文件中。其中,所述第一目录文件包括原始APK安装在的根目录或者配置文件目录assets或者资源文件存放目录res。此时,所述防篡改APK生成模块340包括压缩打包单元342,如图6所示,所述压缩打包单元342,用于将校验文件添加到所述第一目录文件中,将添加后的第一目录文件和除第一目录文件之外的原始APK解压后的其它APK文件压缩打包。本实施例中,将校验文件作为了原始APK中的一部分,添加到了原始APK的第一目录文件中,再将修改后的所有原始APK文件打包签名,重新生成目标APK。用户下载目标APK后,通过加载解压目标APK文件完成应用程序的安装,安装步骤与现有APK安装步骤相同,只是安装后的所述第一目录文件中包含了多了一校验文件。在本发明的一个实施例中,还提供了一种应用程序的安装方法,其中,所述应用程序的APK为采用上述任意一种防篡改APK生成方法或生成装置生成的目标APK,图7示出了所述安装方法的流程示意图,该安装方法可以包括:步骤S710:获取目标APK;步骤S720:解析目标APK,得到其原始APK和校验文件;步骤S730:安装所述原始APK,并根据所述校验文件的保存路径保存校验文件。本实施例所述的安全方法,终端用户通过应用平台或网页下载等途径下载目标APK后,在安装该目标APK时,除安装原始APK外,还要将校验文件进行保存,以供后续运行应用程序时,根据该校验文件实现应用程序是否被篡改的判断。对应于上述应用程序的安装方法,在本发明的一个实施例中还提供了一种应用程序的安装装置,如图8所示,所述安装装置包括目标APK获取模块810、目标APK解析模块820和应用程序安装模块830。其中:目标APK获取模块810,用于获取目标APK;目标APK解析模块820,用于解析目标APK,得到其原始APK和校验文件;程序安装模块830,用于安装所述第一原始APK,并根据所述校验文件的保存路径保存校验文件。在本发明的一个实施例中,还提供了一种应用程序的运行方法,其中,所述应用程序为采用所述应用程序的安装方法或安装装置安装的应用程序,应用程序的APK为采用上述任意一种防篡改APK的生成方法生成的目标APK,如图9所示的流程示意图,所述应用程序的运行方法包括:步骤S910:接收用户的应用程序运行指令;步骤S920:根据所述应用程序的安装路径,获取应用程序安装目录中的指定APK文件的循环冗余校验码CRC;步骤S930:将所述循环冗余校验码CRC按照设定方式进行处理,得到第一校验值;步骤S940:根据所述应用程序的校验文件的保存路经提取其校验文件中的第二校验值;步骤S950:判断所述第一校验值和第二校验值是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。采用所述的应用程序运行方法,在用户每次运行应用程序时,首先会根据运行时计算出的第一校验值和预先存储在目标APK的校验文件中的第二校验值是否一致,判断出应用程序是否被篡改,在应用程序真正运行前,如果判断出应用程序被篡改,可以及时提醒用户,提高了应用程序运行的安全性。在本发明的一个实施例中,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,还包括:根据与设定加密算法对应的解密算法解密第二校验值密文,得到第二校验值。该实施例中,通过比较解密后得到的第二校验值与计算出的第一校验值是否一致,判断出应用程序是否被篡改。在本发明的一个实施例中,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,还包括:将所述第一校验值按照设定加密算法进行加密处理,得到第一校验值密文,判断第一校验值密文和第二校验值密文是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。对应于上述的应用程序的运行方法,在本发明的一个实施例中,还提供了一种应用程序的运行装置,如图10所示,所述运行装置包括运行指令接收模块100、第二校验码获取模块200校验值生成模块300、校验值提取模块400和防篡改判断模块500。其中:运行指令接收模块100,用于接收用户的应用程序运行指令;第二校验码获取模块200,用于根据所述应用程序的安装路径,获取应用程序安装目录中的指定APK文件的循环冗余校验码CRC;校验值生成模块300,用于将所述循环冗余校验码CRC按照设定方式进行处理,得到第一校验值;校验值提取模块400,用于根据所述应用程序的校验文件的保存路经提取其校验文件中的第二校验值;防篡改判断模块500,用于判断所述第一校验值和第二校验值是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。本实施例中所述的应用程序的运行装置,在运行应用程序时,通过实时计算第一校验值,并通过将计算出的第一校验值与预先整合到应用程序的目标APK中的第二校验值比较,可快速方便的判断出应用程序是否被篡改。通过该方法,保证了用户每次运行应用程序时,都会进行一次应用程序的防篡改判断。需要说明的是,所述指定APK文件为原始APK中的APK文件,为非签名信息文件,当然也不包括所述校验文件。在本发明的一个实施例中,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,所述校验值提取模块400包括校验值解密单元401,如图11所示。所述校验值解密单元401,用于根据与设定加密算法对应的解密算法解密所述第二校验值密文,得到第二校验值。在本发明的一个实施例中,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,所述校验值生成模块300包括校验值加密单元301,如图12所示。所述校验值加密单元301,用于将所述第一校验值按照设定加密算法进行加密处理,得到第一校验值密文;本实施例中,所述防篡改判断模块500,用于判断第一校验值密文和第二校验值密文是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。图13示出了本发明一个实施例中提供的一种防篡改APK的生成、安装及运行方法的流程示意图,由图中可以看出,该方法包括以下步骤:步骤S1:解压需要进行防篡改处理的原始APK,提取解压后的所有APK文件的循环冗余校验码CRC;其中,所述所有APK文件不包括签名文件目录META-IF文件夹中的签名信息文件。步骤S2:将所提取到的所有循环冗余校验码CRC按照设定算法进行运算,得到一个校验值A,将校验值A按照设定加密算法加密后写入文件B;步骤S3:将文件B保存到原始APK的配置文件目录assets中,将修改后的配置文件目录assets和其之外的原始APK的其它APK文件进行打包签名,生成目标APK;本实施例中,校验文件的保存路经为原始APK的第一指定目录中,具体为配置文件目录assets中,将校验文件作为了原始APK中的一个的文件,对修改后的所有APK文件重新进行打包签名,得到供用户下载的目标APK。步骤S4:所述目标APK经过应用下载平台的筛选与审核后,上传到应用下载平台以供用户进行下载安装;步骤S5:终端用户通过应用下载平台下载所述目标APK;步骤S6:解析所述目标APK,安装解析后的原始APK,完成应用程序的安装,校验文件B保存在配置文件目录assets中;步骤S7:接收用户的所述应用程序运行指令;步骤S8:根据应用程序的安装路径,获取应用程序对应的所有APK文件的循环冗余校验码CRC,将所有循环冗余校验码CRC按照设定算法进行运算,得到一个校验值C;该步骤中,所有APK文件不包括META-IF文件夹中的签名信息文件以及文件B。所述设定算法与步骤S2中的设定算法为同一算法。步骤S9:根据应用程序的安装路径,提取安装目录中的配置文件目录assets中的文件B,按照与所述设定加密算法对应的解密算法对文件B中的内容解密得到校验值A;步骤S10:比较校验值A和校验值C是否一致,如果一致,则运行应用程序,如果不一致,则提示用户应用程序已经被篡改,根据用户的指令确定是否继续运行。本实施例中所提供的防篡改APK的生成、安装及运行方法,在用户终端完成应用程序的安装后,应用程序每次运行时,都会根据安装目录中的指定APK文件进行一次校验值计算,并通过将计算出的校验值与防篡改APK生成时计算出的校验值比对,实现对应用程序是否被篡改的判断,有效保障了用户的应用安全。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本领域普通技术人员可以理解实现上述装置实施方式中各部分的全部或部分可以以硬件实现,或者以在一个或多个硬件上运行的软件模块来实现,方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成。本领域技术人员应该明白,本发明所述的方法和装置并不限于具体实施方式中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。本发明的实施例公开了:A1、一种防篡改APK的生成方法,该方法包括:解压原始APK,获取解压后的指定APK文件的循环冗余校验码CRC;将所述循环冗余校验码CRC按照设定方式进行处理,得到校验值,将校验值写入校验文件,并确定校验文件的保存路径;将所述原始APK和校验文件整合,生成目标APK。A2、根据A1所述的防篡改APK的生成方法,所述指定APK文件为非签名信息文件。A3、根据A2所述的防篡改APK的生成方法,所述指定APK文件至少包括以下文件中的一种:程序全局配置文件、Dalvik字节码文件、编译后的二进制资源文件、配置文件目录assets下的一个或多个文件、数据连接库目录lib下的一个或多个文件、资源文件存放目录res下的一个或多个文件。A4、根据A1至A3中任一项所述的防篡改APK的生成方法,所述将校验值写入校验文件包括:将所述校验值按照设定加密算法进行加密,得到校验值密文,将校验值密文写入校验文件。A5、根据A1所述的防篡改APK的生成方法,所述校验文件的保存路径为目标APK安装在的终端设备中的指定位置。A6、根据A1所述的防篡改APK的生成方法,所述校验文件的保存路径为目标APK在终端设备安装后其原始APK的安装目录文件。A7、根据A6所述的防篡改APK的生成方法,所述安装目录文件包括原始APK安装在的根目录或者配置文件目录assets或者资源文件存放目录res。A8、根据A5或A6所述的防篡改APK的生成方法,将原始APK和校验文件整合包括:将原始APK和校验文件存储打包。A9、根据A1所述的防篡改APK的生成方法,所述校验文件的保存路径为目标APK生成前其原始APK的第一目录文件。A10、根据A9所述的防篡改APK的生成方法,所述第一指定目录文件包括原始APK安装在的根目录或者配置文件目录assets或者资源文件存放目录res。A11、根据A10所述的防篡改APK的生成方法,将原始APK和校验文件整合包括:将校验文件添加到所述第一目录文件中,将添加后的第一目录文件和除第一目录文件之外的原始APK解压后的其它APK文件压缩打包。本发明的一个实施例中提供了:B12一种防篡改APK的生成装置,所述生成装置包括:第一校验码获取模块,用于解压原始APK,获取解压后的指定APK文件的循环冗余校验码CRC;校验文件生成模块,用于将所述循环冗余校验码CRC按照设定方式进行处理,得到校验值,将校验值写入校验文件;校验文件路径确定单元,用于确定所述校验文件的保存路经;防篡改APK生成模块,用于将所述原始APK文件和校验文件整合,生成目标APK。B13、根据B12所述的防篡改APK的生成装置,所述指定APK文件为非签名信息文件。B14、根据B13所述的防篡改APK的生成装置,所述指定APK文件至少包括以下文件中的一种:程序全局配置文件、Dalvik字节码文件、编译后的二进制资源文件、配置文件目录assets下的一个或多个文件、数据连接库目录lib下的一个或多个文件、资源文件存放目录res下的一个或多个文件。B15、根据B12至B14Z中任一项所述的防篡改APK的生成装置,所述校验文件生成模块包括:校验值加密单元,用于将所述校验值按照设定加密算法进行加密,得到校验值密文,将校验值密文写入校验文件。B16、根据B12所述的防篡改APK的生成装置,所述校验文件的保存路径为目标APK安装在的终端设备中的指定位置。B17、根据B12所述的防篡改APK的生成装置,所述校验文件的保存路径为目标APK在终端设备安装后其原始APK的安装目录文件中。B18、根据B17所述的防篡改APK的生成装置,所述安装目录文件包括原始APK安装在的根目录或者配置文件目录assets或者资源文件存放目录res。B19、根据B16至B18中任一项所述的防篡改APK的生成装置,所述防篡改APK生成模块包括:存储打包单元,用于将原始APK和校验文件存储打包。B20、根据B12所述的防篡改APK的生成装置,所述校验文件的保存路径为目标APK生成前其原始APK的第一目录文件中。B21、根据B20所述的防篡改APK的生成装置,所述第一目录文件包括原始APK安装在的根目录或者配置文件目录assets或者资源文件存放目录res。B22、根据B20或B21所述的防篡改APK的生成装置,所述防篡改APK生成模块包括:压缩打包单元,用于将校验文件添加到所述第一目录文件中,将添加后的第一目录文件和除第一目录文件之外的原始APK解压后的其它APK文件压缩打包。本发明的一个实施例中还提供了:C23、一种应用程序的安装方法,其中,所述应用程序的APK为采用A1至A11中任意一种防篡改APK的生成方法生成的目标APK,所述安装方法包括:获取目标APK;解析目标APK,得到其原始APK和校验文件;安装所述原始APK,并根据所述校验文件的保存路径保存校验文件。本发明的一个实施例中还提供了:D24、一种应用程序的安装装置,所述安装装置包括:目标APK获取模块,用于获取目标APK;目标APK解析模块,用于解析目标APK,得到其原始APK和校验文件;程序安装模块,用于安装所述第一原始APK,并根据所述校验文件的保存路径保存校验文件。本发明的一个实施例中提供了:E25、一种应用程序的运行方法,所述应用程序为采用C23中所述安装方法安装的应用程序,所述运行方法包括:接收用户的应用程序运行指令;根据所述应用程序的安装路径,获取应用程序安装目录中的指定APK文件的循环冗余校验码CRC;将所述循环冗余校验码CRC按照设定方式进行处理,得到第一校验值;根据所述应用程序的校验文件的保存路经提取其校验文件中的第二校验值;判断所述第一校验值和第二校验值是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。E26、根据E25所述的应用程序的运行方法,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,还包括:根据与设定加密算法对应的解密算法解密第二校验值密文,得到第二校验值。E27、根据E25所述的应用程序的运行方法,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,还包括:将所述第一校验值按照设定加密算法进行加密处理,得到第一校验值密文,判断第一校验值密文和第二校验值密文是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。本发明的一个实施例中还提供了:F28、一种应用程序的运行装置,所述运行装置包括:运行指令接收模块,用于接收用户的应用程序运行指令;第二校验码获取模块,用于根据所述应用程序的安装路径,获取应用程序安装目录中的指定APK文件的循环冗余校验码CRC;校验值生成模块,用于将所述循环冗余校验码CRC按照设定方式进行处理,得到第一校验值;校验值提取模块,用于根据所述应用程序的校验文件的保存路经提取其校验文件中的第二校验值;防篡改判断模块,用于判断所述第一校验值和第二校验值是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。F29、根据F28所述的应用程序的运行装置,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,所述校验值提取模块包括:校验值解密单元,用于根据与设定加密算法对应的解密算法解密所述第二校验值密文,得到第二校验值。F30、根据F28所述的应用程序的运行装置,若所述校验文件中保存的为将所述第二校验值按照设定加密算法进行加密后的第二校验值密文,所述校验值生成模块包括:校验值加密单元,用于将所述第一校验值按照设定加密算法进行加密处理,得到第一校验值密文;所述防篡改判断模块,用于判断第一校验值密文和第二校验值密文是否一致,若是,则正常运行应用程序,若否,则提示用户应用程序被篡改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1