一种apk文件的动态加载方法

文档序号:6633669阅读:242来源:国知局
一种apk文件的动态加载方法
【专利摘要】本发明公开一种APK文件的动态加载方法,其包括:解压已作加固处理的第一APK文件,读取第一classes.dex文件;读取该第一classes.dex文件尾部存放的文件长度信息,根据该文件长度信息确定该第一classes.dex文件尾部存放的加密数据的长度,根据加密数据的长度计算出加密数据在该第一classes.dex文件中的起始位置,提取加密数据;对加密数据进行解密,得到对应核心功能部分源代码的第二APK文件;在运行第一APK文件时,通过Android API提供的DexClassLoader类,从第二APK文件中将核心功能部分源代码动态加载至第一APK文件,并从Android系统内部存储之中删除该第二APK文件。本申请可以规避现有Android逆向工具的反编译,增加反编译的难度,从而可以极大程度地提高APK文件的安全性。
【专利说明】-种APK文件的动态加载方法

【技术领域】
[0001] 本发明涉及移动终端应用安全领域,特别涉及一种APK文件的动态加载方法。

【背景技术】
[0002] APK(AndroidPacKage的缩写)即Android安装包。将APK文件(即APK应用程 序)直接传到Android模拟器或Android操作系统的终端设备(比如安卓智能手机)中执 行即可安装。APK文件其实是zip格式,但后缀名被修改为apk,在windows系统上可以通 过解压缩工具(比如winrar软件)直接解压查看。解压APK文件后,一般的可看到的目录 结构如下表1所示:
[0003]

【权利要求】
1. 一种APK文件的动态加载方法,其特征在于,包括步骤: 解压已作加固处理的第一 APK文件,读取第一 classes, dex文件; 读取该第一 classes, dex文件尾部存放的文件长度信息,根据该文件长度信息确定该 第一 classes, dex文件尾部存放的加密数据的长度,根据加密数据的长度计算出加密数据 在该第一 classes, dex文件中的起始位置,提取加密数据; 对加密数据进行解密,得到对应核心功能部分源代码的第二APK文件; 在运行第一 APK文件时,通过Android API提供的DexClassLoader类,从第二APK文 件中将核心功能部分源代码动态加载至第一 APK文件,并从Android系统内部存储之中删 除该第二APK文件。
2. 根据权利要求1所述一种APK文件的动态加载方法,其特征在于,对加密数据进行解 密处理的解密方式为标准解密方式或已知的任意一种文件解密方法。
3. 根据权利要求1所述一种APK文件的动态加载方法,其特征在于,加固处理第一 APK 文件的步骤包括: 将需要加固的APK文件的源代码分成作为主体部分的第一源代码及作为核心功能部 分的第二源代码; 将第一源代码、第二源代码分别编译成第一 APK文件及第二APK文件; 解压第一 APK文件,提取第一 APK文件中的第一 classes, dex文件; 对第二APK文件进行加密处理,统计加密后第二APK文件的文件长度信息; 将加密后的第二APK文件及其文件长度信息添加在第一 classes, dex文件的尾部; 重新计算并更新第一 classes, dex文件中文件头信息,将更新后的第一 classes, dex 文件放回第一 APK文件中,使用Android SDK中提供的签名工具对第一 APK文件进行签名, 即得到加固处理后的APK文件。
4. 根据权利要求3所述一种APK文件的动态加载方法,其特征在于,重新计算的第一 classes, dex文件中文件头信息包括效验码checksum字段、SHA-I签名signature字段和 第一 classes, dex文件的总长度file_size字段。
5. 根据权利要求3所述一种APK文件的动态加载方法,其特征在于,对第二APK文件进 行加密处理的加密方式为标准加密方式或已知的任意一种文件加密方法。
【文档编号】G06F21/12GK104317625SQ201410632420
【公开日】2015年1月28日 申请日期:2014年11月9日 优先权日:2014年11月9日
【发明者】刘鹏 申请人:刘鹏
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1