apk文件的加固方法、解密方法及相关装置制造方法及图纸

技术编号:25223200 阅读:49 留言:0更新日期:2020-08-11 23:12
本申请提供了apk文件加固方法、加固apk文件解密方法及相关装置,其中,apk文件加固方法包括:对预置apk文件进行逆向工程编译,得到第一dex文件,对待加固的原始apk文件进行异或;对异或后的apk文件中的dex文件采用密钥进行加密,得到处理后的apk文件;将处理后的apk文件、处理后的apk文件的大小,以及加固标识写到第一dex文件的尾部,得到第二dex文件;对第二dex文件进行修复;采用修复后的第二dex文件替换预置apk文件中的dex文件;删除预置apk文件的签名文件;对预置apk文件重新进行签名。由于生成不同终端的加固apk文件过程中对原始apk文件中的dex文件进行加密所采用的密钥不同,增加了攻击者获取到原始apk文件的实现细节的难度,从而,提高对原始apk文件的保护力度。

【技术实现步骤摘要】
apk文件的加固方法、解密方法及相关装置
本申请涉及Android应用软件信息安全领域,尤其涉及apk文件的加固、解密方法及相关装置。
技术介绍
Android平台恶意软件逐日增加,其高发率源于其开发的低成本。恶意软件中很大一部分为重打包(Repackaging)程序。要实现重打包,攻击者必须先对原始APK(AndroidPackage)进行逆向分析,之后再向原始APK进行恶意代码注入等操作。目前,原始apk逆向分析按照Android程序是否被执行可分为静态分析方法与动态调试方法。随着Android应用软件保护技术日益完善,静态分析技术在面对代码混淆,软件加壳,动态加载等保护措施时,常显力不从心。而动态调试技术在Android逆向分析中,特别是对原生程序的分析中有着巨大的优势。其中,动态调试技术可以使Android应用软件的实现细节暴露无遗,即攻击者可以通过动态调试技术获取到Android应用软件的实现细节,从而,使得Android应用软件得不到保护。
技术实现思路
本申请提供了apk文件加固方法、解密方法及相关装置,目的在于解决Android应用软件的实现细节被动态调试技术获取的问题。为了实现上述目的,本申请提供了以下技术方案:本申请提供了一种apk文件的加固方法,包括:对预置apk文件进行逆向工程编译,得到第一dex文件;对待加固的原始apk文件进行异或,得到异或后的apk文件;对所述异或后的apk文件中的dex文件采用密钥进行加密,得到处理后的apk文件;将所述处理后的apk文件、所述处理后的apk文件的大小,以及所述原始apk文件的加固标识写到所述第一dex文件的尾部,得到第二dex文件;对所述第二dex文件进行修复,得到修复后的第二dex文件;采用所述修复后的第二dex文件替换所述预置apk文件中的dex文件;删除所述预置apk文件的签名文件;对所述预置apk文件重新进行签名,得到加固apk文件;其中,对于下载同种加固apk文件的不同终端,下载的加固apk文件的生成过程中对原始apk文件中的dex文件进行加密所采用的密钥不同。可选的,对于当前下载加固apk文件的任一终端,在生成该终端下载的加固apk文件过程中,所述对所述异或后的apk文件中的dex文件采用密钥进行加密,得到处理后的apk文件,包括:从所述Android应用软件的服务端获取该终端的密钥;利用CR4加密算法,对所述异或后的apk文件中的dex文件采用该终端的密钥进行加密,得到所述处理后的apk文件。可选的,所述对所述第二dex文件进行修复,得到修复后的第二dex文件,包括:对所述第二dex文件的文件大小、SHA-1哈希值和adler32校验值进行修复,得到所述修复后的第二dex文件。本申请还提供了一种加固apk文件的解密方法,包括:启动反调试进程;向Android应用软件的服务端发送请求信息;所述请求信息包括:加固标识、IMEI和请求时间;所述请求信息指示获取对所述加固apk文件中的dex文件解密的密钥;接收所述Android应用软件的服务端发送的加密后的密钥;所述加密后的密钥是采用所述请求信息对所述加固apk文件的密钥加密得到;根据所述请求信息对所述加密后的密钥进行解密,得到用于对所述加固apk文件中的dex文件进行解密的解密密钥;其中,对于下载同种加固apk文件的不同终端,用于对下载的加固apk文件中的dex文件解密的密钥不同;采用所述解密密钥对所述加固apk文件进行脱壳解密,得到原始apk文件;加载执行所述原始apk文件。可选的,所述向所述Android应用软件的服务端发送请求信息,包括:采用PHP作为媒介,向所述Android应用软件的服务端发送请求信息。可选的,在所述接收所述Android应用软件的服务端发送的加密后的密钥之后,并且,在所述根据所述请求信息对所述加密后的密钥进行解密,得到用于对所述加固apk文件中的dex文件进行解密的解密密钥之前,还包括:检测所述加固apk文件是否被动态调试;所述根据所述请求信息对所述加密后的密钥进行解密,得到用于对所述加固apk文件中的dex文件进行解密的解密密钥,具体为:在检测结果表示所述加固apk文件未被动态调试的情况下,根据所述请求信息对所述加密后的密钥进行解密,得到用于对所述加固apk文件中的dex文件进行解密的解密密钥。可选的,在所述检测所述加固apk文件是否被动态调试之后,还包括:在所述检测结果表示所述加固apk文件已被动态调试的情况下,将所述请求信息中的请求时间修改为当前时间,得到修改后的请求信息;采用所述修改后的请求信息,对所述加密后的密钥进行解密,得到目标解密密钥;采用所述目标解密密钥对所述加固apk文件进行脱壳解密。本申请还提供了一种apk文件的加固装置,包括:编译模块,用于对预置apk文件进行逆向工程编译,得到第一dex文件;异或模块,用于对待加固的原始apk文件进行异或,得到异或后的apk文件;加密模块,用于对所述异或后的apk文件中的dex文件采用密钥进行加密,得到处理后的apk文件;写入模块,用于将所述处理后的apk文件、所述处理后的apk文件的大小,以及所述原始apk文件的加固标识写到所述第一dex文件的尾部,得到第二dex文件;修复模块,用于对所述第二dex文件进行修复,得到修复后的第二dex文件;替换模块,用于采用所述修复后的第二dex文件替换所述预置apk文件中的dex文件;删除模块,用于删除所述预置apk文件的签名文件;签名模块,用于对所述预置apk文件重新进行签名,得到加固apk文件;其中,对于下载同种加固apk文件的不同终端,下载的加固apk文件的生成过程中对原始apk文件中的dex文件进行加密所采用的密钥不同。可选的,对于当前下载加固apk文件的任一终端,在生成该终端下载的加固apk文件过程中,所述加密模块,用于对所述异或后的apk文件中的dex文件采用密钥进行加密,得到处理后的apk文件,包括:所述加密模块,具体用于从所述Android应用软件的服务端获取该终端的密钥;利用CR4加密算法,对所述异或后的apk文件中的dex文件采用该终端的密钥进行加密,得到所述处理后的apk文件。本申请还提供了一种加固apk文件的解密装置,包括:反调试模块,用于启动反调试进程;发送模块,用于向Android应用软件的服务端发送请求信息;所述请求信息包括:加固标识、IMEI和请求时间;所述请求信息指示获取对所述加固apk文件中的dex文件解密的密钥;接收模块,用于接收所述Android应用软件的服务端发送的加密后的密钥;所述加密后的密钥是采用所述请求信息对所述加固apk文件的密钥加密得到;第一本文档来自技高网...

【技术保护点】
1.一种apk文件的加固方法,其特征在于,包括:/n对预置apk文件进行逆向工程编译,得到第一dex文件;/n对待加固的原始apk文件进行异或,得到异或后的apk文件;/n对所述异或后的apk文件中的dex文件采用密钥进行加密,得到处理后的apk文件;/n将所述处理后的apk文件、所述处理后的apk文件的大小,以及所述原始apk文件的加固标识写到所述第一dex文件的尾部,得到第二dex文件;/n对所述第二dex文件进行修复,得到修复后的第二dex文件;/n采用所述修复后的第二dex文件替换所述预置apk文件中的dex文件;/n删除所述预置apk文件的签名文件;/n对所述预置apk文件重新进行签名,得到加固apk文件;其中,对于下载同种加固apk文件的不同终端,下载的加固apk文件的生成过程中对原始apk文件中的dex文件进行加密所采用的密钥不同。/n

【技术特征摘要】
1.一种apk文件的加固方法,其特征在于,包括:
对预置apk文件进行逆向工程编译,得到第一dex文件;
对待加固的原始apk文件进行异或,得到异或后的apk文件;
对所述异或后的apk文件中的dex文件采用密钥进行加密,得到处理后的apk文件;
将所述处理后的apk文件、所述处理后的apk文件的大小,以及所述原始apk文件的加固标识写到所述第一dex文件的尾部,得到第二dex文件;
对所述第二dex文件进行修复,得到修复后的第二dex文件;
采用所述修复后的第二dex文件替换所述预置apk文件中的dex文件;
删除所述预置apk文件的签名文件;
对所述预置apk文件重新进行签名,得到加固apk文件;其中,对于下载同种加固apk文件的不同终端,下载的加固apk文件的生成过程中对原始apk文件中的dex文件进行加密所采用的密钥不同。


2.根据权利要求1所述的方法,其特征在于,对于当前下载加固apk文件的任一终端,在生成该终端下载的加固apk文件过程中,所述对所述异或后的apk文件中的dex文件采用密钥进行加密,得到处理后的apk文件,包括:
从所述Android应用软件的服务端获取该终端的密钥;
利用CR4加密算法,对所述异或后的apk文件中的dex文件采用该终端的密钥进行加密,得到所述处理后的apk文件。


3.根据权利要求1所述的方法,其特征在于,所述对所述第二dex文件进行修复,得到修复后的第二dex文件,包括:
对所述第二dex文件的文件大小、SHA-1哈希值和adler32校验值进行修复,得到所述修复后的第二dex文件。


4.一种加固apk文件的解密方法,其特征在于,包括:
启动反调试进程;
向Android应用软件的服务端发送请求信息;所述请求信息包括:加固标识、IMEI和请求时间;所述请求信息指示获取对所述加固apk文件中的dex文件解密的密钥;
接收所述Android应用软件的服务端发送的加密后的密钥;所述加密后的密钥是采用所述请求信息对所述加固apk文件的密钥加密得到;
根据所述请求信息对所述加密后的密钥进行解密,得到用于对所述加固apk文件中的dex文件进行解密的解密密钥;其中,对于下载同种加固apk文件的不同终端,用于对下载的加固apk文件中的dex文件解密的密钥不同;
采用所述解密密钥对所述加固apk文件进行脱壳解密,得到原始apk文件;
加载执行所述原始apk文件。


5.根据权利要求4所述的方法,其特征在于,所述向所述Android应用软件的服务端发送请求信息,包括:
采用PHP作为媒介,向所述Android应用软件的服务端发送请求信息。


6.根据权利要求4所述的方法,其特征在于,在所述接收所述Android应用软件的服务端发送的加密后的密钥之后,并且,在所述根据所述请求信息对所述加密后的密钥进行解密,得到用于对所述加固apk文件中的dex文件进行解密的解密密钥之前,还包括:
检测所述加固apk文件是否被动态调试;
所述根据所述请求信息对所述加密后的密钥进行解密,得到用于对所述加固apk文件中的de...

【专利技术属性】
技术研发人员:徐君锋刘照辉张鹏施蕾孙博文
申请(专利权)人:中国信息安全测评中心
类型:发明
国别省市:北京;11

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

1