一种APK的加固方法和装置,及动态加载方法和装置制造方法及图纸

技术编号:15640105 阅读:448 留言:0更新日期:2017-06-16 03:48
本发明专利技术实施例中公开了一种APK文件的加固方法和装置、及动态加载方法和装置。所述加固方法包括:获取待加固的原APK中需要保护的原数据,将所述原数据进行加密处理,得到加密数据;对所述原APK进行加固处理,生成目标APK,其中,所述加密数据以文件形式存储于所述目标APK的预设位置。本发明专利技术实施例中提供的所述加固方法和装置、以及动态加载方法和装置,通过将对运行APK所必须的加密数据隐藏存储于目标APK中,提高了APK加密数据的存储隐蔽性,增加了APK反编译的难度,极大程度地提高了APK文件的安全性。

【技术实现步骤摘要】
一种APK的加固方法和装置,及动态加载方法和装置
本专利技术涉及终端应用安全
,特别涉及一种APK的加固方法和装置、以及动态加载方法和装置。
技术介绍
APK(AndroidPackage)即安卓Android安装包,是Android操作系统上的应用程序安装文件,该应用安装文件由安装文件打包工具根据多个文件生成,生成APK的文件一般采用java编程语言编写,用户将通过安装文件打包工具生成的APK文件上传到安卓模拟器或安卓操作系统的用户设备中执行即可安装。随着Android移动终端平台的日益发展,第三方应用程序大量涌现,对应用的盗版和重打包现象日益严重。由于Android平台采用Java语言开发,导致APK中的代码易于被反编译,通过反编译APK文件,进行代码的分析、修改或者插入,再重新签名打包为新的APK文件,以达到改变程序原有行为的目的,APK的篡改行为严重损害了应用程序开发商的利益和积极性,而利用APK篡改技术,通过加入恶意代码使得Android用户面临隐私泄露和财产损失的危险,严重影响了用户的应用安全。因此,开发者们对于Android程序代码的加固防护也越来越关注。现有安卓软件安装包APK的加固方法中,对APK中的某些重要数据进行加密,将加密数据以文件形式存放在资源存放目录res目录下或者额外资源目录assets目录下,程序执行执行过程中去对应目录下寻找这个加密文件并加载,从而完APK文件的运行,但是该种加密数据的存放方式隐蔽性差,容易被发现,导致APK被破解的风险仍然较大。
技术实现思路
针对现有技术中存在的缺陷,本专利技术实施例的目的在于提供一种能够克服上述问题或者至少能够部分地解决上述问题的一种APK的加固方法和装置、以及动态加载方法和装置。为实现上述目的,本专利技术的一个实施例中提供了一种APK文件的加固方法,所述加固方法包括:一种APK文件的加固方法,其特征在于,包括:获取待加固的原APK中需要保护的原数据;将所述原数据进行加密处理,得到加密数据;对所述原APK进行加固处理,生成目标APK,其中,所述加密数据以文件形式存储于所述目标APK的预设位置。优选的,如上所述的加固方法,所述预设位置为目标APK的classes.dex文件中的位置。优选的,如上所述的加固方法,所述预设位置为目标APK的classes.dex文件的文件头和/或数据区的N个指定位置,N≥1。优选的,如上所述的加固方法,所述N=1,所述指定位置为所述数据区的头部或尾部。优选的,如上所述的加固方法,所述N=2;所述加密数据包括第一加密数据和第二加密数据;所述指定位置包括第一指定位置和第二指定位置,第一加密数据在目标APK的classes.dex文件中的位置为所述第一指定位置,第二加密数据在目标APK的classes.dex文件中的位置为所述第二指定位置。优选的,如上所述的加固方法,所述第一指定位置为所述数据区的头部,所述第二指定位置为所述数据区的尾部。优选的,如上所述的加固方法,所述原数据为原APK中的非classes.dex文件中的数据;所述对所述原APK进行加固处理,生成目标APK,包括:根据加密数据在目标APK中的所述预设位置,将加密数据添加到原APK中的对应位置;将添加后的原APK中除所述原数据之外的其它文件进行重新打包签名,生成目标APK。优选的,如上所述的加固方法,若所述预设位置为目标APK的classes.dex文件中的位置,所述将添加后的原APK中除所述原数据之外的其它文件进行重新打包签名,生成目标APK,包括:重新计算并更新添加加密数据后的原APK的classes.dex文件的文件头信息,得到更新后的第一classes.dex文件;将第一classes.dex文件和原APK的除所述原数据之外的其它文件进行重新打包签名,生成目标APK。优选的,如上所述的加固方法,所述原数据为原APK的classes.dex文件中的数据;所述对所述原APK进行加固处理,生成目标APK,包括:记录原数据在原APK的classes.dex文件中的原位置信息;根据加密数据在目标APK中的所述预设位置,将加密数据和所述原位置信息添加到原APK中的的对应位置;删除原APK的classes.dex文件中的所述原数据,得到第二classes.dex文件;重新计算并更新第二classes.dex文件的文件头信息,得到第三classes.dex文件;将第三classes.dex文件和原APK的除其classes.dex文件外的其它文件进行重新打包签名,生成目标APK。在本专利技术的一个实施例中还提供了一种APK文件的加固装置,该装置包括:加密数据生成模块,用于获取待加固的原APK中需要保护的原数据,将所述原数据进行加密处理,得到加密数据;目标APK生成模块,用于对所述原APK进行加固处理,生成目标APK,其中,所述加密数据以文件形式存储于所述目标APK的预设位置。在本专利技术的一个实施例中,还提供了一种加固APK的动态加载方法,其中,所述加固APK为采用上述任一APK文件的加固方法生成的目标APK,所述动态加载方法包括:解压所述目标APK;根据加密数据在目标APK中的存储位置,提取所述加密数据,并对加密数据进行解密得到原数据;根据所述原数据和解压后的目标APK,通过dex类加载器对目标APK的classes.dex文件的进行动态加载。优选的,如上所述的动态加载方法,若所述原数据为原APK中的classes.dex文件中的数据,所述根据加密数据在目标APK的存储位置,提取所述加密数据,还包括:获取加密数据所对应的原数据的原位置信息;所述根据所述原数据和解压后的目标APK,通过dex类加载器对目标APK的classes.dex文件的进行动态加载,包括:根据所述原数据的原始位置信息,将所述原数据放回到第三classes.dex文件中的对应位置,得到目标APK的完整classes.dex文件;通过dex类加载器对目标APK的完整classes.dex文件的进行动态加载。优选的,如上所述的动态加载方法,所述通过dex类加载器对目标APK的完整classes.dex文件的进行动态加载,包括:所述完整classes.dex文件中原数据被加载到内存空间中后,删除所述完整classes.dex文件中的所述原数据。在本专利技术的一个实施例中,还提供了一种加固APK的动态加载装置,所述动态加载装置包括:目标APK解压模块,用于解压所述目标APK;原数据提取模块,用于根据加密数据在目标APK中的的存储位置,提取所述加密数据,并对加密数据进行解密得到原数据;APK动态加载模块,用于根据所述原数据和解压后的目标APK,通过dex类加载器对目标APK的classes.dex文件的进行动态加载。优选的,如上所述的动态加载装置,若所述原数据为原APK中的classes.dex文件中的数据,所述原数据提取模块还用于获取加密数据所对应的原数据的原位置信息;所述APK动态加载模块包括:完整dex获取单元,用于根据所述原数据的原始位置信息,将所述原数据放回到第三classes.dex文件中的对应位置,得到目标APK的完整classes.dex文件;dex动态加载单元,用于通过dex类加载器对本文档来自技高网...
一种APK的加固方法和装置,及动态加载方法和装置

【技术保护点】
一种APK文件的加固方法,其特征在于,包括:获取待加固的原APK中需要保护的原数据;将所述原数据进行加密处理,得到加密数据;对所述原APK进行加固处理,生成目标APK,其中,所述加密数据以文件形式存储于所述目标APK的预设位置。

【技术特征摘要】
1.一种APK文件的加固方法,其特征在于,包括:获取待加固的原APK中需要保护的原数据;将所述原数据进行加密处理,得到加密数据;对所述原APK进行加固处理,生成目标APK,其中,所述加密数据以文件形式存储于所述目标APK的预设位置。2.根据权利要求1所述的加固方法,其特征在于,所述预设位置为目标APK的classes.dex文件中的位置。3.根据权利要求2所述的加固方法,其特征在于,所述预设位置为目标APK的classes.dex文件的文件头和/或数据区的N个指定位置,N≥1。4.根据权利要求3所述的加固方法,其特征在于:所述N=1,所述指定位置为所述数据区的头部或尾部。5.根据权利要求3所述的加固方法,其特征在于,所述N=2;所述加密数据包括第一加密数据和第二加密数据;所述指定位置包括第一指定位置和第二指定位置,第一加密数据在目标APK的classes.dex文件中的位置为所述第一指定位置,第二加密数据在目标APK的classes.dex文件中的位置为所述第二指定位置。6.根据权利要求1所述的加固方法,其特征在于:所述原数据为原APK中的非classes.dex文件中的数据;所述对所述原APK进行加固处理,生成目标APK,包括:根据加密数据在目标APK中的所述预设位置,将加密数据添加到原APK中的对应位置;将添加后的原APK中除所述原数据之外的其它文件进行重新打包签名,生成目标APK。7.根据权利要求1所述的加固方法,其特征在于,所述原数据为原APK的classes.dex文件中的数据;所述对所述原APK进行加固处理,生成目标APK,包括:记录原数据在原APK的classes.de...

【专利技术属性】
技术研发人员:刘敏
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1