一种移动应用APK防篡改的方法与流程

文档序号:16128162发布日期:2018-12-01 00:00阅读:2027来源:国知局

本发明涉及信息安全领域,尤其涉及一种移动应用apk防篡改的方法。

背景技术

apk即android安装包,是android操作系统上的移动应用程序安装文件格式,由于android自身的开源特性,导致apk代码容易被反编译,通过反编译apk文件,进行代码的分析、修改和插入,再重新打包为新的apk文件,以达到改变程序原有行为的目的,即实现对apk的篡改。

据统计现在中国独立app数量早已突破50万,app开发市场日渐火热,而部分不法分子通过破解、反编译、篡改代码、插入广告等手段为自己谋取巨额利润,移动应用apk被篡改的主要原因是开发者在防止apk被篡改、反编译等方面不够重视或技术不够完善。篡改移动应用apk的行为已经严重影响到了移动应用开发者的利益和移动应用开发行业的健康发展。

现今对于apk的防篡改防护,较为常用的手段有,通过修改dex文件来增加篡改难度,或是在apk运行时进行签名验证和循环冗余校验码验证,前者需要对apk代码进行修改和再编译,增加了开发人员的工作量,且容易被攻破;而后者的验证代码容易被黑客注销导致不能起到应有的作用。



技术实现要素:

鉴以此,本发明的目的在于提供一种移动应用apk防篡改的方法,以至少解决以上问题。

一种移动应用apk防篡改的方法,包括以下步骤:

s1、获取移动应用apk的数字签名与循环冗余校验码,加密后保存在服务器中;

s2、将移动应用apk发布到网络上供用户下载并安装使用;

s3、用户通过apk安装的客户端每次网络访问请求都需要上传与服务器采用相同加密方式加密的数字签名与循环冗余校验码进行验证;

s4、服务器对客户端上传的数字签名与循环冗余校验码进行验证,验证通过后才允许客户端与服务器进行数据交互。

进一步的,所述数字签名与循环冗余校验码使用aes算法进行加密。

进一步的,步骤s3中,客户端上传经过加密的数字签名与循环冗余校验码前,对服务器证书pin码进行验证。

进一步的,对服务器证书pin码进行验证包括以下步骤:

s1、获取服务器的证书pin码;

s2、将服务器的证书pin码封装到移动应用apk中;

s3、在客户端进行网络访问前验证网络连接对象的证书pin码与预设的服务器pin码是否一致,若一致客户端上传经过加密的数字签名与循环冗余校验码进行验证;若不一致则停止向该网络连接对象发送数据。

进一步的,在移动应用apk中设置共享对象库并通过所述共享对象库获取、保存经过加密的数字签名与循环冗余校验码。

进一步的,所述共享对象库设有外壳保护程序。

与现有技术相比,本发明的有益效果是:

本发明所提供的移动应用apk防篡改的方法,通过利用移动应用apk自身特有的数字签名与循环冗余校验码,在客户端每次进行网络访问时与服务器进行验证,使黑客不能注销apk的验证代码,且难以获取正确的循环冗余校验码,本方法充分利用了apk的自身特性,简便易行,可以有效防止apk被恶意篡改,保障用户的数据安全与利益。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的优选实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的移动应用apk防篡改方法流程示意图。

图2是本发明实施例的服务器证书pin码验证流程示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所列举实施例只用于解释本发明,并非用于限定本发明的范围。

本发明提供了一种移动应用apk防篡改的方法,参照图1,所述方法包括以下步骤:

s1、获取移动应用apk的数字签名与循环冗余校验码,加密后保存在服务器中。

所述数字签名和循环冗余校验码用于发送者的身份认证,数字签名和循环冗余校验码都是根据apk文件的具体内容计算得出,因此一旦文件被修改后,对应的数字签名和循环冗余校验码也会改变,通常用于确认apk由其开发商或官方渠道进行发布。本步骤中,首先获取移动应用apk的数字签名与循环冗余校验码,并对其进行加密。经过加密后的数字签名与循环冗余校验码存放在为通过apk文件安装的移动应用客户端提供服务支持的服务器中。

s2、将移动应用apk发布到网络上供用户下载并安装使用。

本步骤中,移动应用的开发商或官方渠道将移动应用apk文件发布到网上供用户下载使用。

s3、用户通过apk安装的客户端每次网络访问请求都需要上传与服务器采用相同加密方式加密的数字签名与循环冗余校验码进行验证。

本步骤中,用户下载移动应用apk文件后执行该文件以安装移动应用客户端,在使用客户端时,客户端通过网络访问服务器以进行数据交互。而客户端每次向服务器发送网络访问请求前,都需要上传与服务器采用相同加密方式进行加密的数字签名与循环冗余校验码进行验证。

s4、服务器对客户端上传的数字签名与循环冗余校验码进行验证,验证通过后才允许客户端与服务器进行数据交互。

本步骤中,服务器将预先存储的经过加密后的数字签名与循环冗余校验码与客户端上传的数字签名与循环冗余校验码进行比对,如果比对结果符合,服务器将允许该客户端的网络访问请求,并与该客户端进行数据交互;如果比对结果不符合,服务器将向该客户端发送消息以提示用户正在使用的客户端可能被恶意篡改,请到官方渠道下载原版apk文件重新安装客户端。

以往的apk防篡改方法中在apk运行时进行数字签名验证和循环冗余校验码验证,而此方法的验证代码容易被人为注销,无法正常进行验证,导致防篡改功能失效。而在本方法中,黑客不能注销apk的验证代码,因为客户端在每次需要进行网络访问时,服务器必须接受到正确的数字签名和循环冗余校验码才会接受客户端的网络访问请求,否则客户端将无法正常使用,用户自然会删除被篡改的客户端。而黑客也不能通过插入代码获取经过加密的循环冗余校验码,因为循环冗余校验码具备唯一性,当apk文件发生改变时,与其相应的循环冗余校验码也会改变,黑客所获取到的循环冗余校验码将无法通过服务器的验证,黑客将无法通过篡改客户端谋取不法利益,用户的数据安全与利益也能够得到有效保障。

参照图2,在本发明的一个实施例中,步骤s3中,客户端上传数字签名与循环冗余校验码前,对服务器的证书pin码进行验证,所述验证包括以下步骤:

s1、获取服务器的证书pin码;

s2、将服务器的证书pin码封装到移动应用apk中;

s3、在客户端进行网络访问前验证网络连接对象的证书pin码与预设的服务器pin码是否一致,若一致客户端上传经过加密的数字签名与循环冗余校验码进行验证;若不一致则停止向该网络连接对象发送数据。

在客户端向服务器发送数字签名与循环冗余校验码时,如果黑客在传输过程中对数据进行拦截,数字签名和循环冗余校验码可能会泄露,因此,在移动应用apk中封装对应于服务器的证书pin码,在客户端发送数字签名与循环冗余校验码之前,验证接收服务器的证书pin码是否与预设的服务器证书pin码一致,如果一致,则继续向该服务器发送数字签名与循环冗余校验码进行验证以进行网络访问;如果不一致,则停止发送数字签名与循环冗余校验码。通过该验证流程可以有效防止黑客通过网络拦截手段获取数字签名和循环冗余校验码,保障客户端与服务器之间网络通信的安全。

在本发明的一个实施例中,移动应用apk设有共享对象库,所述共享对象库用于获取并保存经过加密的数字签名与循环冗余校验码,所述共享对象库设有外壳保护。当需要调取共享对象库内的数据时,首先执行的是共享对象库的外壳程序,当外壳程序运行在内存中时,将其内部的共享对象库代码在内存中解压缩,并将控制权交还给内部的共享对象库,以进行数字签名与循环冗余校验码的获取、保存或调用,由于这段操作发生在内存中,黑客难以得知具体运行过程,并且不会影响到移动应用apk的运行速度,黑客难以攻破具有外壳保护的共享对象库,更难以获取其中的数字签名与循环冗余校验码,提高了移动应用apk的防篡改性能。

具体的,对数字签名和循环冗余校验码的加密采取aes加密算法,该算法是对称秘钥加密中最流行的算法之一,无论是在软件或是硬件上都能够快速地进行加解密,相对于其他加密算法更易于实现,并且所需要占用的存储器容量较小,适用于移动应用apk文件的应用场景。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1