程序文件校验方法及装置、服务器和终端的制作方法

文档序号:9551276阅读:407来源:国知局
程序文件校验方法及装置、服务器和终端的制作方法
【技术领域】
[0001]本发明涉及文件检测技术领域,特别是涉及程序文件校验方法及装置、服务器和终端。
【背景技术】
[0002]由于应用于某些操作系统的应用软件采用通用的编码语言,使得作为应用软件的载体的应用程序包中的某些文件很容易被攻击者反编译、修改,并重新打包发布,这样使得盗版软件横行,例如:适用于安卓系统的应用软件主要采用Java语言编写,使得作为这类应用软件的载体的APK (Android Package,安卓应用程序包)很容被攻击者反编译、修改,并重新打包发布。
[0003]而为了防止应用程序包的二次打包,需要进行应用程序包中的某些文件的完整性校验,即是否被修改过的校验。现有的程序文件校验方法为:在应用程序包中的某些文件中内置有一段代码,该段代码能够在应用程序包加载过程中校验这些文件的签名,如果签名正确,表明该应用程序包中的这些文件完整,则继续运行,否则退出程序。其中,所述的签名为对应用程序包中的这些文件的文件内容计算出的哈希值。
[0004]但是,由于现有的程序文件校验通过在本地执行代码,这样使得攻击者可以看到相关代码,并通过各种方式阻止代码的有效运行,这样导致完整性校验的准确率较低,其中,所述的阻止代码的有效运行具体指:校验结果均为签名正确,或者,跳过整个校验过程。

【发明内容】

[0005]本发明实施例的目的在于提供程序文件校验方法及装置、服务器和终端,以提高校验程序文件的完整性的准确率。具体技术方案如下:
[0006]第一方面,本发明实施例提供了一种程序文件校验方法,应用于服务器,其中,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器;所述方法包括:
[0007]在与所述终端建立通信连接后,获得所述应用程序包的版本号;
[0008]获得针对于所述应用程序包的随机数;
[0009]根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
[0010]将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
[0011]获得关于所述终端所生成的所述第二哈希值的相关信息;
[0012]根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
[0013]可选的,所述获得关于所述终端所生成的所述第二哈希值的相关信息,包括:
[0014]向所述终端请求获得所述终端所生成的所述第二哈希值;
[0015]或者,
[0016]接收所述终端在生成所述第二哈希值后所上报的所述第二哈希值;
[0017]所述根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,包括:
[0018]判断所获得的所述第二哈希值和所述第一哈希值是否相同,如果相同,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
[0019]可选的,所述获得关于所述终端所生成的所述第二哈希值的相关信息,包括:
[0020]依次向所述终端请求获得所述第二哈希值的多个与预定数据位相关的数值;
[0021]所述根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,包括:
[0022]依次判断所述第二哈希值的多个与预定数据位相关的数值和所述第一哈希值的与相应预定数据位相关的数值是否相同,如果判断结果均为是,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
[0023]可选的,所述与预定数据位相关的数值,包括:
[0024]预定数据位上的数值;
[0025]或者,
[0026]对至少两个预定数据位上的数值进行数学运算所得的数值。
[0027]可选的,在确定出所述终端内的所述预设待校验文件不完整性时,所述方法还包括:
[0028]断开与所述终端之间的通信连接。
[0029]可选的,在确定出所述终端内的所述预设待校验文件不完整性时,所述方法还包括:
[0030]向终端推送提示消息,其中,所述提示消息用于提示所述预设待校验文件不完整;
[0031]或者,
[0032]向终端推送提示消息以及下载链接地址,其中,所述提示消息用于提示所述预设待校验文件不完整,所述下载链接地址为所述应用程序包的下载地址。
[0033]第二方面,本发明实施例提供了一种程序文件校验方法,应用于终端,所述终端为:用于运行承载于应用程序包的应用软件的终端;所述方法包括:
[0034]在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
[0035]根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
[0036]向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
[0037]可选的,所述向所述服务器发送所述第二哈希值的相关信息,包括:
[0038]在接收到所述服务器发送的关于所述第二哈希值的请求后,向所述服务器反馈所述第二哈希值;
[0039]或者,
[0040]在生成所述第二哈希值后,向所述服务器上报所述第二哈希值。
[0041]可选的,所述向所述服务器发送所述第二哈希值的相关信息,包括:
[0042]依次接收服务器发送的关于所述第二哈希值的多个与预定数据位相关的数值的请求;
[0043]在接收到服务器发送的关于所述第二哈希值的每一个与预定数据位相关的数值的请求后,向所述服务器反馈关于所述第二哈希值的相应与预定数据位相关的数值。
[0044]可选的,所述与预定数据位相关的数值,包括:
[0045]预定数据位上的数值;
[0046]或者,
[0047]对至少两个预定数据位上的数值进行数学运算所得的数值。
[0048]可选的,本发明实施例提供的一种程序文件校验方法,还包括:
[0049]接收所述服务器推送的提示消息,其中,所述提示消息用于提示所述预设待校验文件不完整;
[0050]或者,
[0051]接收服务器推送的提示消息以及下载链接地址,其中,所述提示消息用于提示所述预设待校验文件不完整,所述下载链接地址为所述应用程序包的下载地址。
[0052]第三方面,本发明实施例提供了一种程序文件校验装置,应用于服务器,其中,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器;所述装置包括:
[0053]版本号获得模块,用于在与所述终端建立通信连接后,获得所述应用程序包的版本号;
[0054]随机数获得模块,用于获得针对于所述应用程序包的随机数;
[0055]第一哈希值生成模块,用于根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
[0056]随机数发送模块,用于将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
[0057]第二哈希值信息获得模块,用于获得关于所述终端所生成的所述第二哈希值的相关信息;
[0058]完整性校验模块,用于根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
[0059]可选的,所述第二哈希值信息获得模块,包括:
[0060]第一信息获得单元,用于向所述终端请求获得所述终端所生成的所述第二哈希值;
[0061]或者,
[0062]第二信息获得单元,用于接收所述终端在生成所述第二哈希值后所上报的所述第二哈希值;
[0063]所述完整性校验模块,包括:
[0064]第一完整性校验单元,用于判断所获得的所述第二哈希值和所述第一哈希值是否相同,如果相同,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
[0065]可选的,所述第二哈希值信息获得模块,包括:
[0066]第三信息获得单元,用于依次向所述终端请求获得所述第二哈希值的多个与预定数据位相关的数值;
[0067]所述完整性校验模块,包括:
[0068]第二完整性校验单元,用于依次判断所述第二哈希值的多个与预定数据位相关的数值和所述第一哈希值的与相应预定数据位相关的数值是否相同,如果判断结果均为是,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
[0069]可选的,所述与预定数据位相关的数值,包括:
[0070]预定数据位上的数值;
[0071]或者,
[0072]对至少两个预定数据位上的数
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1