应用程序的防二次打包及破解的保护方法及保护系统技术领域
本发明属于安全技术领域,具体地涉及一种应用程序的防二次打包及破解的保护
方法及保护系统。
背景技术
目前,市面上存在对安卓或IOS应用使用签名校验技术作为应用程序的防二次打
包及破解的保护方法及系统。以安卓平台为例,该方法通过在安卓java层或c层或服务器层
通过获取当前运行时程序的签名与原始签名进行一次校验来判断当程序签名是否被修改
(即二次打包)。
但是,现有的保护方法只对应用程序进行校验,在有原始应用程序签名文件的前
提下就失去了安全保护的意义,而且,现有的保护方法使用安卓系统接口获取程序的签名
信息,而安卓系统由于开源,每一系统接口的代码都被黑客掌握的非常清楚,通过简单的
Hook技术即可随意修改、拦截、监控通过系统接口获取的任何数据,存在很大的安全后门。
发明内容
本发明的目的在于提供一种可以通过Hash值校验法提高应用程序安全水平的应
用程序的防二次打包及破解的保护方法及保护系统。
本发明的技术方案如下:一种应用程序的防二次打包及破解的保护方法包括:加
密应用程序,获得被加密后的应用程序和应用程序中文件的Hash校验证书文件;安装并运
行所述被加密后的应用程序,并获取所述被加密后的应用程序自身文件的Hash值信息;校
验所述Hash校验证书文件与所述Hash值信息并判断是否一致,如果一致,则应用程序正常
运行,如果不一致,则应用程序退出运行。
优选地,所述加密应用程序具体包括:对所述应用程序内每一份文件均进行Hash
获取并生成Hash校验证书文件。
优选地,所述获取所述被加密后的应用程序自身文件的Hash值信息具体包括:所
述被加密后的应用程序获取每一份文件的Hash值信息。
优选地,所述校验所述Hash校验证书文件与所述Hash值信息并判断是否一致具体
包括: 将所述每一份Hash校验证书文件与所述对应的文件的Hash值信息进行校验; 判断
每一文件的Hash校验证书文件与对应的Hash值信息是否一致; 如果所述每一份Hash校验
证书文件均与所对应的Hash值信息一致,所述应用程序继续正常运行; 如果任一所述Hash
校验证书文件与所对应的Hash值信息不一致,则所述应用程序直接退出运行。
优选地,所述应用程序中的文件包括DEX文件、XML文件、文本文件、资源文件和流
媒体文件。
一种应用程序的防二次打包及破解的保护系统,包括: 加密模块,用于加密应用
程序,获得被加密后的应用程序和所述应用程序中文件的Hash校验证书文件; Hash值信息
获取模块,用于在安装并运行所述被加密后的应用程序后,获取所述被加密后的应用程序
自身文件的Hash值信息; Hash值校验模块,用于校验所述Hash校验证书文件与所述Hash值
信息,判断是否一致,如果一致,则应用程序正常运行,如果不一致,则应用程序退出运行。
优选地,所述加密模块,具体用于对所述应用程序内每一份文件均进行Hash获取
并生成对应的Hash校验证书文件。
优选地,所述Hash值信息获取模块,具体用于获取被加密后的应用程序中每一份
文件的Hash值信息。
优选地,所述Hash值校验模块,具体用于: 将所述每一份Hash校验证书文件与所
述对应的文件的Hash值信息进行校验; 判断每一文件的Hash校验证书文件与对应的Hash
值信息是否一致; 如果所述每一份Hash校验证书文件均与所对应的Hash值信息一致,所述
应用程序继续正常运行; 如果任一所述Hash校验证书文件与所对应的Hash值信息不一致,
则所述应用程序直接退出运行。
优选地,所述应用程序中的文件包括DEX文件、XML文件、文本文件、资源文件和流
媒体文件。
本发明提供的技术方案具有如下有益效果:
1、所述应用程序的防二次打包及破解的保护方法及保护系统实现了对每一份资源文
件、文本文件、代码文件、媒体文件等进行校验,实现了任何一份文件进行了删除、修改、替
换都会通过校验方式检测出来;
2、所述应用程序的防二次打包及破解的保护方法及保护系统获取文件Hash值、文件校
验的技术都与安卓系统或IOS系统的代码无关,所以不会因为安卓开源而导致安全后门问
题。
附图说明
图1是本发明实施例提供的应用程序的防二次打包及破解的保护方法的流程框
图;
图2是图1所示应用程序的防二次打包及破解的保护方法的流程示意图;
图3是本发明实施例提供的应用程序的防二次打包及破解的保护系统的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并
不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形
式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进
行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执
行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的
术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组
合。
请同时参阅图1和图2,本发明实施例提供的应用程序的防二次打包及破解的保护
方法,其中,所述应用程序是移动终端的应用程序,而且,所述移动终端包括但不限于具有
安卓平台或IOS平台的手机、平板、车载显示器等移动终端。
所述应用程序的防二次打包及破解的保护方法包括如下步骤:
S1、加密应用程序,获得被加密后的应用程序和应用程序中文件的Hash校验证书文件。
具体地,
在本实施例中,利用加密程序对原始的应用程序进行加固,不仅得到具有防二次打包
和破解保护功能的被加密后的应用程序,还对所述应用程序内的每一份文件进行基于Hash
算法的加固操作,并获得每一份文件相对应的Hash校验证书文件。
其中,所述加密程序从应用程序的风险点出发,详细分析了黑客对应用程序的反
编译/编译流程,并通过获取应用程序内每一份文件进行Hash值校验来保护应用程序不被
二次打包及破解。即所述加密程序可以防止数据输入、数据显示、本地数据存储以及数据传
输过程中出现的数据泄露问题,如安全键盘、防截屏、防录屏、防钓鱼等。可选择的,所述加
密程序是基于安卓平台或IOS平台的加密程序。
在步骤S1中,所述加密应用程序具体包括:对所述应用程序内每一份文件均进行
基于Hash算法的加固操作,并获得所述应用程序内每一份文件的Hash校验证书文件。可选
择的,所述应用程序文件包括但不限于DEX文件、XML文件、文本文件、代码文件、资源文件和
流媒体文件等。
需要说明的是,Hash算法将任意长度的二进制值映射为固定长度的较小二进制
值,这个较小的二进制值称为Hash值。Hash值是一段数据唯一且极其紧凑的数值表示形式。
如果散列一段明文而且哪怕只更改该段落的一个字母,随后的Hash都将产生不同的值。要
找到散列为同一个值的两个不同的输入,在计算上来说基本上是不可能的。
因此,Hash是根据文件的内容的数据通过逻辑运算得到的数值,不同的文件(即使
是相同的文件名)得到的Hash值是不同的,所以Hash值就成了每一个文件的身份证;而且,
不同Hash值的文件被认为是不同的文件,相同的HASH值的文件的内容肯定是完全相同(即
使文件名不同)。
S2、安装并运行所述被加密后的应用程序,并获取所述被加密后的应用程序自身
文件的Hash值信息。
具体地,在步骤S2中,在移动终端内,安装、启动并运行所述被加密后的应用程序
后,基于所述Hash算法,所述被加密后的应用程序获取自身文件的Hash值信息。在本实施例
中,所述被加密后的应用程序获取每一份文件的Hash值信息。
S3、将所述Hash校验证书文件与所述Hash值信息进行校验并判断是否一致,如果
一致,则应用程序正常运行,如果不一致,则应用程序退出运行。
具体地,在步骤S3中,所述校验所述Hash校验证书文件与所述Hash值信息并判断
是否一致具体包括:
将所述每一份Hash校验证书文件与所述对应的文件的Hash值信息进行校验;
判断每一文件的Hash校验证书文件与对应的Hash值信息是否一致;
如果所述每一份Hash校验证书文件均与所对应的Hash值信息一致,所述应用程序继续
正常运行;
如果任一所述Hash校验证书文件与所对应的Hash值信息不一致,则所述应用程序直接
退出运行。
在本实施例中,当所述加密后的应用程序运行时,所述加密后的应用程序自动运
行Hash值校验操作。而且,如果所述加密后的应用程序的任何一件应用程序文件一旦被改
动,所述应用程序自动终止自身运行。
请参阅图3,是本发明提供的一种应用程序的防二次打包及破解的保护系统的结
构图,所述系统包括:加密模块10、Hash值信息获取模块20和Hash值校验模块30。
其中,所述加密模块10用于加密应用程序,获得被加密后的应用程序和所述应用
程序中文件的Hash校验证书文件。
具体地,在所述加密模块10中,用于对所述应用程序内每一份文件均进行Hash获
取并生成对应的Hash校验证书文件。所述应用程序中的文件包括但不限于DEX文件、XML文
件、资源文件、代码文件、文本文件和流媒体文件等。
在本发明的一个优选实施例中,所述加密模块10可以是基于安卓平台或IOS平台
的加密模块。所述加密模块10从应用程序的风险点出发,详细分析黑客对应用程序的反编
译/编译流程,通过获取应用程校内每一份文件的Hash值进行Hash值校验来保护应用程序
不被二次打包及破解。即所述加密模块10可以防止数据输入、数据显示、本地数据存储以及
数据传输过程中出现的数据泄露问题,如安全键盘、防截屏、防录屏、防钓鱼等。
具体地,在移动终端内,安装、启动并运行所述被加密后的应用程序后,基于所述
Hash算法,所述Hash值信息获取模块20获取所述被加密后的应用程序自身文件的Hash值信
息。在本实施例中,所述Hash值信息获取模块20用于获取被加密后的应用程序中每一份文
件的Hash值信息。
所述Hash值校验模块30用于校验所述Hash校验证书文件与所述Hash值信息,判断
是否一致,如果一致,则应用程序正常运行,如果不一致,则应用程序退出运行。
具体地,所述Hash值校验模块30将所述每一份Hash校验证书文件与所述对应的文
件的Hash值信息进行校验,通过判断应用程序内每一文件的Hash校验证书文件与对应的
Hash值信息是否一致,对所述应用程序进行校验。
在校验过程中,如果所有所述Hash校验证书文件均与所对应的Hash值信息一致,
则说明所述应用程序的校验成功,所述应用程序继续正常运行。
如果任一所述Hash校验证书文件与所对应的Hash值信息不一致,则说明所述应用
程序的校验不成功,说明所述应用程序内的程序自身被篡改,所述应用程序直接退出运行。
在本实施例中,当所述加密后的应用程序运行时,所述加密后的应用程序自动运
行Hash值校验操作。而且,如果所述加密后的应用程序内的任何一件文件一旦被改动,所述
应用程序自动终止自身运行。
相较于现有技术,本发明提供的技术方案具有如下有益效果:
1、所述应用程序的防二次打包及破解的保护方法及保护系统实现了对每一份资源文
件、文本文件、代码文件、媒体文件等进行校验,实现了任何一份文件进行了删除、修改、替
换都会通过校验方式检测出来;
2、所述应用程序的防二次打包及破解的保护方法及保护系统获取文件Hash值、文件校
验的技术都与安卓系统或IOS系统的代码无关,以不会因为安卓开源而导致安全后门问题。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在
不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论
从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权
利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有
变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包
含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当
将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员
可以理解的其他实施方式。 。