应用程序安装方法、装置、计算机设备和存储介质与流程

文档序号:15095610发布日期:2018-08-04 14:29阅读:201来源:国知局
本申请涉及计算机
技术领域
:,特别是涉及一种应用程序安装方法、装置、计算机设备和存储介质。
背景技术
::随着现代网络技术的发展,手机、电脑等终端已经在我们生活中起到了越来越重要的作用,随之而来的是应用程序的广泛开发和使用。在应用程序安装到终端时,其所遭受的攻击也在逐渐增多,故应用程序安装的安全性问题开始受到关注。传统应用程序的安装方法主要是通过增加密码验证或者对应用程序的文件增加修改来增加攻击的难度,但这些应用程序的安装方法较容易被破解,在终端上的使用应用程序仍旧存在许多安全隐患。技术实现要素:基于此,有必要针对上述技术问题,提供一种能够提高应用程序安全性的应用程序安装方法、装置、计算机设备和存储介质。一种应用程序安装方法,所述方法包括:当接收到应用程序的安装指令,获取所述应用程序的签名信息;按照第一预设算法计算所述签名信息对应的第一哈希值;获取所述应用程序的第二哈希值,所述第二哈希值与所述第一哈希值的数据类型相同,比较所述第一哈希值与所述第二哈希值;当所述第一哈希值与所述第二哈希值相同,则根据第二预设算法对所述应用程序对应的加密的编译包进行解密;根据解密后的编译包安装所述应用程序。在一个实施例中,所述根据第二预设算法对所述应用程序对应的加密的编译包进行解密,包括:获取所述应用程序对应的加密的编译包的存储地址;根据所述存储地址读取所述加密的编译包的头文件,并从所述头文件中提取所述加密的编译包中加密数据的存储信息;根据所述存储信息以及所述存储地址获取所述加密数据;通过所述第二预设算法对所述加密数据进行解密。在一个实施例中,所述根据解密后的编译包安装所述应用程序之后,还包括:当所述应用程序运行时,则获取已安装的编译包中的预设函数;记录所述预设函数的输入数据的输入时间,并获取所述预设函数的响应数据的输出时间;计算所述输入时间与所述输出时间的差值;当所述差值大于预设值时,则返回所述应用程序运行异常的信息。在一个实施例中,所述比较所述第一哈希值与所述第二哈希值之后,还包括:当所述第一哈希值与所述第二哈希值不同时,则停止安装所述应用程序。在一个实施例中,所述根据第二预设算法对所述应用程序对应的加密的编译包进行解密之后,还包括:当对所述加密的编译包解密失败时,停止安装所述应用程序。一种应用程序加密装置,所述装置包括:启动模块,用于当接收到应用程序的安装指令,获取所述应用程序的加密的编译包的签名信息;签名加密模块,用于按照第一预设算法计算所述签名信息对应的第一哈希值;验证模块,用于获取所述应用程序的第二哈希值,所述第二哈希值与所述第一哈希值的数据类型相同,比较所述第一哈希值与所述第二哈希值;解密模块,用于当所述第一哈希值与所述第二哈希值相同,则根据第二预设算法对所述应用程序对应加密的编译包进行解密;安装模块,用于根据解密后的编译包安装所述应用程序。在一个实施例中,所述解密模块,包括:定位单元,用于获取所述应用程序对应的加密的编译包的存储地址;提取单元,用于根据所述存储地址读取所述加密的编译包的头文件,并从所述头文件中提取所述加密的编译包中加密数据的存储信息;读取单元,用于根据所述存储信息以及所述存储地址获取所述加密数据;解密单元,用于通过所述第二预设算法对所述加密数据进行解密。在一个实施例中,所述装置还包括:预设函数获取模块,用于当所述应用程序运行时,则获取到已安装的编译包中预设函数;计时模块,用于记录所述预设函数的输入数据的输入时间,并获取所述预设函数的相应数据的输出时间;计算所述输入时间与所述输出时间的差值;异常监控模块,用于当所述差值大于预设值时,则返回所述应用程序运行异常的信息。一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。上述应用程序安装方法、装置、计算机设备和存储介质,在终端安装应用程序时,先验述应用程序的加密编译包的签名信息,再对应用程序加密的编译包进行解密后,才允许在终端上安装此应用程序。通过签名信息的验证,防止应用程序在安装前被篡改,而对应用程序的编译包进行加密,在安装应用程序时,只有对加密的编译包解密成功,才能够允许应用程序被安装在终端上的操作,避免应用程序的关键信息被修改,通过两种加密方式,提高了应用程序安全性。附图说明图1为一个实施例中应用程序安装方法的应用场景图;图2为一个实施例中应用程序安装方法的流程示意图;图3为一个实施例中图2中的步骤S208的流程示意图;图4为一个实施例中应用程序安装装置的结构框图;图5为一个实施例中计算机设备的内部结构图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。本申请提供的应用程序安装方法,可以应用于如图1所示的应用环境中。其中,终端通过网络与服务器进行通信。终端从服务器获取应用程序的安装包进行安装,当终端接收到用户开始安装此应用程序的安装指令后,先验证此应用程序的签名信息,然后将应用程序安装包中加密的编译包进行解密,解密成功后,才允许此应用程序在终端上进行安装;通过此应用程序安装方法,提高了应用程序的安全性。其中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。在一个实施例中,如图2所示,提供了一种应用程序安装方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:S202,当接收到应用程序的安装指令,获取应用程序的签名信息。其中,安装指令是在终端上开始安装应用程序的指令;当终端下载应用程序的安装包之后,可以发送通知消息提示用户是否开始安装此应用程序,若用户确认开始安装,则终端接收用户输入的安装指令。签名信息是防止应用程序被二次安装的验证信息;在应用程序的被打包成安装包之后,通过签名信息对于安装包中的每个文件进行处理,当文件被替换或篡改时,此签名信息会被修改,以此保证此安装包在传输过程中的完整性;签名信息可以通过Keytool(Java数据证书的管理工具)和Jarsigner(Java签名和校验工具)等工具生成。具体地,终端从服务器或其他网站上下载了应用程序的安装包后,发送通知消息提示用户是否开始安装此应用程序,用户确认开始安装,终端接收安装指令后,获取此应用程序的签名信息。S204,按照第一预设算法计算签名信息对应的第一哈希值。其中,第一预设算法是用于将签名信息转变为第一哈希值的加密算法;第一预设算法可以是哈希(Hash)法,如md5算法(MessageDigestAlgorithm消息摘要算法第五版)或SHA(SecureHashAlgorithm安全哈希算法)等。哈希算法即散列函数,是一种单向密码体制,只有加密过程,没有解密过程。第一哈希值是终端根据应用程序在服务器被打包时的签名信息,经过第一预设算法加密得到的加密值;如应用程序被打包时的签名信息的md5值等。具体地,在终端对应用程序的签名信息进行验证时,由于应用程序安装包的签名信息常采用哈希算法进行加密,所以终端应先获取应用程序被打包时的签名信息,然后通过第一预设算法将此签名信息进行加密计算得到第一哈希值。S206,获取应用程序的第二哈希值,第二哈希值与第一哈希值的数据类型相同,比较第一哈希值与第二哈希值。其中,第二哈希值是终端上已下载的应用程序的安装包中被加密后的签名信息,该第二哈希值是在服务器中计算得到的,并随应用程序的安装包下载到终端,该第二哈希值用于和第一哈希值进行比较,判断此应用程序的安装包是否被修改,其数据类型应该和第一哈希值一致,当第一哈希值为md5值时,第二哈希值也为md5值,即在服务器中计算第二哈希值的算法需要与在终端中计算第一哈希值的算法相同。具体地,将步骤S204中计算得到的第一哈希值和终端上已下载的应用程序的安装包中签名信息被加密后的得到的第二哈希值相比较,进行应用程序的签名信息校验,当第一哈希值与第二哈希值相同时,则证明应用程序的安装包中的内容在被打包后并未被修改,则此应用程序的签名信息验证通过。S208,当第一哈希值与第二哈希值相同,则根据第二预设算法对应用程序对应的加密的编译包进行解密。其中,第二预设算法是用于对应用程序中对应的加密的编译包进行解密的解密算法;第二预设算法与服务器对应用程序安装包中的部分文件进行加密的加密算法相对应;二者可以采用对称密钥对应用程序的安装包进行加密和解密的操作。编译包是应用程序的动态链接库文件,如安卓系统中的.so文件(so是sharedobject的缩写,而so库文件表示用户层的动态库)。具体地,服务器在对应用程序进行打包时,为防止应用程序在传输过程中被篡改或攻击,可以对应用程序安装包中的关键性文件进行加密;终端下载应用程序的安装包之后,若需要安装此应用程序,需要对应用程序安装包中的加密文件解密后,才能运行此应用程序。S210,根据解密后的编译包安装应用程序。具体地,当终端根据第二预设算法对应用程序中的加密的编译包解密成功后,终端可以开始应用程序的正常安装。上述应用程序安装方法、在终端安装应用程序时,先验述应用程序的加密编译包的签名信息,再对应用程序加密的编译包进行解密后,才允许在终端上安装此应用程序。通过签名信息的验证,防止应用程序在安装前被篡改,而对应用程序的编译包进行加密,在安装应用程序时,只有对加密的编译包解密成功,才能够允许应用程序被安装在终端上的操作,避免应用程序的关键信息被修改,通过两种加密方式,提高了应用程序安全性。在一个实施例中,请参见图3,上述应用程序安装方法中的步骤S208根据第二预设算法对应用程序对应的加密的编译包进行解密,可以包括:S302,获取应用程序对应的加密的编译包的存储地址。具体地,在终端根据第二预设算法对应用程序对应加密的编译包进行解密的过程中,终端先需要寻找到下载的应用程序的安装包在终端的存储地址,然后在此存储地址中寻找加密的编译包的存储地址,才能对加密的编译包进行解密的操作。S304,根据存储地址读取加密的编译包的头文件,并从头文件中提取加密的编译包中加密数据的存储信息。其中,编译包的头文件是用于记录编译包中的每个函数的存储位置和存储方式的目录文件,如安卓系统中.so库文件中的头文件ELF(ExecutableandLinkingFormat是一种对象文件的格式)等。加密数据是加密的编译包中经过加密算法处理的相关数据,如.so库文件中处理终端与网络或其他设备交互数据的函数。存储信息是用于寻找编译包中加密数据在终端中的存储位置的信息;如加密数据为编译包中的部分函数时,则存储信息可以是加密的函数在编译包中的位置偏移量和函数名等信息。具体地,终端获取加密的编译包的存储地址后,需要在此存储地址中找到加密数据对应的部分,并对服务器加密的编译包中的加密数据进行解密,才能对该存储地址的加密数据进行解密。在存储地址中寻找加密数据的地址的方法可以是:先在加密的编译包的存储地址中找到编译包的头文件,头文件中存储着编译包中函数的函数名和存储位置的偏移量等存储信息,然后提取头文件中的加密的编译包中加密数据的存储信息。S306,根据存储信息以及存储地址获取加密数据。其中,加密数据是服务器用于保护编译包中的数据在信息传输过程中不被篡改而对其进行加密操作后的数据;加密数据主要是编译包中的部分函数,如某一应用程序主要用于网上支付,则服务器可以对此应用程序的加密编译包中需要调用支付数据交互模块的函数进行加密。具体地,终端根据步骤S304中提取的存储信息在存储地址中找到加密数据,然后执行下一步的操作。S308,通过第二预设算法对加密数据进行解密。具体地,服务器在对此应用程序进行打包时,为在传输过程中加固应用程序的编译包,根据一定的加密规则,即第二预设算法对部分数据进行加密,生成加密函数;终端从服务器下载此应用程序的安装包后,根据与服务器的加密规则对应的解密规则对编译包中的加密数据进行解密。上述实施例中,通过服务器对应用程序的编译包中的部分数据进行加密的操作,防止编译包在信息传输过程中被修改,加强了应用程序在传输过程中的稳定性,使得安装在终端上的应用程序更安全。在一个实施例中,上述应用程序安装方法中的步骤S210根据解密后的编译包安装应用程序之后,可以包括:当应用程序运行时,则获取已安装的编译包中的预设函数;记录预设函数的输入数据的输入时间,并获取预设函数的响应数据的输出时间;计算输入时间与输出时间的差值;当差值大于预设值时,则返回应用程序运行异常的信息。其中,预设函数是用于监测应用程序是否处于调试状态的函数;预设函数可以是预设函数可以是time()函数或clock()函数等。具体地,正常情况下一段代码中函数的返回值的时间与请求时间之间的时间差较小,所以可以在部分可以反映程序运行状态的函数的入口处设置计时检测。当此函数的返回值的响应时间(上述输出时间)与请求时间(上述输入时间)之间的时间差较大时,应用程序可能正在被篡改、已经篡改或者应用程序处于调试阶段,从而导致函数的计算错误或者延时,例如函数本来仅需要调用一个参数,被篡改后,为了获取多个参数,则调用时间变长,从而导致输入时间和输出时间的差值变大,或者应用程序处于调试阶段,人工返回响应数据,从而导致输入时间和输出时间的差值变大。终端监控关键函数的入口,并计算在关键函数入口处请求数据与其对应的返回值的时间差;当时间差超过预设值时,返回异常数据;进一步地,当关键函数的返回值的时间与请求时间之间的时间差较大,比如达到秒级别,则可以认定为是在进行调试程序,终端返回应用程序运行异常的信息,提醒用户当前应用程序可能存在被调试的风险,用户可根据此应用程序运行异常的信息删除此应用程序或者扫描杀毒。上述实施例中,通过监测预设函数入口处请求数据与其对应的返回值的时间差,防止在应用程序运行过程中被篡改,通过此实施例中防调试步骤和上述实施例中的应用程序安装方法,可以有效地保护应用程序在终端上运行的安全性。在一个实施例中,上述应用程序安装方法中的步骤S206,比较第一哈希值与第二哈希值之后,还可以包括:当第一哈希值与第二哈希值不同,则停止安装应用程序。具体地,当第一哈希值和第二哈希值不同时,则应用程序的安装包中的内容在被打包后可能被修改,或者此应用程序的安装包可能被二次打包,则应用程序的签名信息验证通失败,退出应用程序的安装进程。可选地,应用程序的签名信息验证通失败后,终端可以输出一个验证失败的错误信息,向正在操作终端的用户提醒此应用程序安装失败,可能是由于此应用程序的安装包被修改,存在危险信息,提示用户可重新下载此应用程序的安装包。上述实施例中,通过签名信息验证失败时,退出此应用程序的安装进程,防止在应用程序被篡改或二次打包后,仍在终端上安装次应用程序,提高了在终端上安装应用程序的安全性。在一个实施例中,上述应用程序安装方法中的步骤S208,根据第二预设算法对应用程序对应的加密的编译包进行解密之后,还可以包括:当对加密的编译包解密失败,停止安装应用程序。具体地,当终端对加密的编译包解密失败时,终端无法运行编译包中的内容,从而无法在终端上安装此应用程序,终端停止安装此应用程序的进程。可选地,终端停止安装应用程序后,输出一个安装失败的信息,提醒用户因无法对加密的编译包解密而造成应用程序的安装失败。用户可以根据此信息排查无法解密加密的编译包的原因,如终端没有解密对应的密钥等。上述实施例中,在终端无法解密编译包时,退出应用程序的安装进程,防止在终端无法解密编译包时,安装的应用程序无法正常使用,造成错误安装。在一个实施例中,使用安卓系统的终端在下载应用程序的安装包后,输出通知消息提示用户是否开始安装此应用程序,收到用户的安装指令后,开始在终端上安装此应用程序,先使用JNI_onLoad方法(一种基于下文中的JNI调用方法中,通过java获取到程序中的前面信息的方法)中获取APK(Android安装包)的签名信息,获取签名需要通过反射调用安卓框架提供的Java(一种编译语言)接口,获取的签名信息再通过第一预设算法计算签名信息的md5值(根据md5算法对原信息进行数学变换后得到的一个128位的特征码),与打包所用的签名信息的md5值进行比较,如果相同,则应用程序可以注册JNI方法(JavaNativeInterface一种Java编程接口,JAVA平台的一部分,允许Java代码和其他语言写的代码进行交互),执行下一步的操作;否则不注册JNI方法,这样应用程序就退出此次安装,并提醒用户安装失败。其中,安卓系统中主要是使用java编写的上层框架调用C语言编写的下层程序,当JNI方法无法注册时,则此应用程序无法使用。应用程序可以注册JNI方法后,应用程序执行通过预设解密规则对so文件中的已加密的运行函数进行解密的步骤,具体操作为:找到so文件在内存中的起始地址;通过so文件头获取到Phdr字段;从Phdr字段查询到PT_DYNAMIC(程序头元素指向so文件头中的.dynamic字段,dynamic字段中保存了动态链接器所需要的基本信息,是一个结构数组,可以看做动态链接下ELF文件的“文件头”)后,获取PT_DYNAMIC中的p_vaddr字段和p_filesz字段(函数的偏移量和大小等信息);再根据p_vaddr字段和p_filesz字段得到文件类型,继续根据文件类型得到Dynamic字段的偏移值和大小,从而在应用程序安装包的.so库文件中查询到对应的加密函数,将所有的加密函数都根据第二预设算法进行相应的解密操作,从而将.so库文件解密完成,再根据解密后的.so库文件安装此应用程序;当终端执行上述解密操作失败时,则退出此应用程序的安装进程,并发送通知消息,提醒用户由于无法解密安装包,对此应用程序的安装失败。在终端安装此应用程序,并对其进行运行后,在此应用程序的关键函数的入口加一个计时函数time(),统计关键函数的返回值的时间与请求时间之间的时间差,当此计时函数的获取的时间差较大时,则输出应用程序运行异常的信息,提醒用户应用程序可能正在被篡改,需要用户对此情况进行排查。上述实施例中,在安卓系统终端上安装应用程序时,通过对应用程序的签名信息校验、.so库文件的加密与对应的解密操作和对应用程序的防调试监控,保证了应用程序可以在终端上健康地安装和运行。另外,上述实施例中,与应用程序执行通过预设解密规则对.so文件中的已加密的运行函数进行解密的步骤对应的,服务器在发送此应用程序的安装包之前需要对.so文件中的对应函数进行加密操作,详细步骤如下:按ELF文件格式解so文件;首先解析文件头,获取e_phoff字段、e_phentsize字段和e_phnum字段(表示程序头表格的位置和数量)等字段的信息;根据程序头部的结构中的p_type字段(文件类型)得到Dynamic字段的偏移值和大小;遍历Dynamic字段找到dynsym字段(用于防止函数名的字段)、dynstr字段(装载了字符串信息的字段)、hashsection字段(ELF中的哈希表)中的偏移和.dynstr的大小;根据函数的方法名,计算所对应的第一哈希值,根据第一哈希值,找到下标hash%nbuckets(哈希散列)的缓存;根据缓存中的值,读取dynsym字段中的对应索引的Elf32_Sym符号(ELF中的一种信息类型);从Elf32_Sym符号的st_name索引(字段名称)找到在.dynstr字段中对应的字符串,将找到的字符串与函数名进行比较。若不等,则根据chain[hash%nbuckets](采用Java中的链式执行方法操作的哈希散列)找下一个Elf32_Sym符号,直到找到或者此执行链终止为止。找到对应函数后根据预设的加密规则进行加密。上述实施例,描述了在安卓系统的终端上下载应用程序安装包后,先验证APK的签名信息,然后对.so库文件中的加密数据解密,才能在终端上安装应用程序,并通过计时函数time()防止程序在安装后被篡改,通过上述方法,提高了在安卓系统的终端上安装应用程序的安全性。应该理解的是,虽然图2至图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在一个实施例中,如图4所示,提供了一种应用程序安装装置,包括:启动模块100、签名加密模块200和验证模块300,解密模块400和安装模块500,其中:启动模块100,用于当接收到应用程序的安装指令,获取应用程序的签名信息。签名加密模块200,用于按照第一预设算法计算签名信息对应的第一哈希值。验证模块300,用于获取应用程序的第二哈希值,第二哈希值与第一哈希值的数据类型相同,比较第一哈希值与第二哈希值;解密模块400,用于当第一哈希值与第二哈希值相同,则根据第二预设算法对应用程序对应的加密的编译包进行解密。安装模块500,用于根据解密后的编译包安装应用程序。在一个实施例中,上述应用程序安装装置中的解密模块400可以包括:定位单元,用于获取应用程序对应的加密的编译包的存储地址。提取单元,用于根据存储地址读取加密的编译包的头文件,并从头文件中提取加密的编译包中加密数据的存储信息。读取单元,用于根据存储信息以及存储地址获取加密数据。解密单元,用于通过第二预设算法对加密数据进行解密。在一个实施例中,上述应用程序安装装置中的还可以包括:预设函数获取模块,用于当应用程序运行时,则获取已安装的编译包中的预设函数。计时模块,用于记录预设函数的输入数据的输入时间,并获取预设函数的相应数据的输出时间;计算输入时间与输出时间的差值。异常监控模块,用于当差值大于预设值时,则返回应用程序运行异常的信息。在一个实施例中,上述应用程序安装装置还可以包括:第一停止模块,用于当第一哈希值与第二哈希值不同时,则停止安装应用程序。在一个实施例中,上述应用程序安装装置还可以包括:第二停止模块,用于当加密的编译包解密失败时,停止安装应用程序。关于应用程序安装装置的具体限定可以参见上文中对于应用程序安装方法的限定,在此不再赘述。上述应用程序安装装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用程序安装方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:当接收到应用程序的安装指令,获取应用程序的签名信息;按照第一预设算法计算签名信息对应的第一哈希值;获取应用程序的第二哈希值,第二哈希值与第一哈希值的数据类型相同,比较第一哈希值与第二哈希值;当第一哈希值与第二哈希值相同,则根据第二预设算法对应用程序对应的加密的编译包进行解密;根据解密后的编译包安装应用程序。在一个实施例中,处理器执行计算机程序时实现的根据第二预设算法对应用程序对应的加密的编译包进行解密,可以包括:获取应用程序对应的加密的编译包的存储地址;根据存储地址读取加密的编译包的头文件,并从头文件中提取加密的编译包中加密数据的存储信息;根据存储信息以及存储地址获取加密数据;通过第二预设算法对加密数据进行解密。在一个实施例中,处理器执行计算机程序时实现的根据解密后的编译包安装应用程序之后,还可以包括:当应用程序运行时,则获取已安装的编译包中的预设函数;记录预设函数的输入数据的输入时间,并获取预设函数的响应数据的输出时间;计算输入时间与输出时间的差值;当差值大于预设值时,则返回应用程序运行异常的信息。在一个实施例中,处理器执行计算机程序时实现的比较第一哈希值与第二哈希值之后,还可以包括:当第一哈希值与第二哈希值不同时,则停止安装应用程序。在一个实施例中,处理器执行计算机程序时实现的据第二预设算法对应用程序对应的加密的编译包进行解密之后,还可以包括:当加密的编译包解密失败时,停止安装应用程序。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:当接收到应用程序的安装指令,获取应用程序的签名信息;按照第一预设算法计算签名信息对应的第一哈希值;获取应用程序的第二哈希值,第二哈希值与第一哈希值的数据类型相同,比较第一哈希值与第二哈希值;当第一哈希值与第二哈希值相同,则根据第二预设算法对应用程序对应的加密的编译包进行解密;根据解密后的编译包安装应用程序。在一个实施例中,计算机程序被处理器执行时实现的根据第二预设算法对应用程序对应的加密的编译包进行解密,可以包括:获取应用程序对应的加密的编译包的存储地址;根据存储地址读取加密的编译包的头文件,并从头文件中提取加密的编译包中加密数据的存储信息;根据存储信息以及存储地址获取加密数据;通过第二预设算法对加密数据进行解密。在一个实施例中,计算机程序被处理器执行时实现的根据解密后的编译包安装应用程序之后,还可以包括:当应用程序运行时,则获取已安装的编译包中的预设函数;记录预设函数的输入数据的输入时间,并获取预设函数的响应数据的输出时间;计算输入时间与输出时间的差值;当差值大于预设值时,则返回应用程序运行异常的信息。在一个实施例中,计算机程序被处理器执行时实现的比较第一哈希值与第二哈希值之后,还可以包括:当第一哈希值与第二哈希值不同时,则停止安装应用程序。在一个实施例中,计算机程序被处理器执行时实现的据第二预设算法对应用程序对应的加密的编译包进行解密之后,还可以包括:当加密的编译包解密失败时,停止安装应用程序。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1