[发明专利]一种用于保护APK的方法和装置在审
| 申请号: | 201911260291.7 | 申请日: | 2019-12-10 |
| 公开(公告)号: | CN111191195A | 公开(公告)日: | 2020-05-22 |
| 发明(设计)人: | 危学艳;卞芳 | 申请(专利权)人: | 航天信息股份有限公司 |
| 主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/60;G06F21/62;G06F21/64 |
| 代理公司: | 北京思创大成知识产权代理有限公司 11614 | 代理人: | 张立君 |
| 地址: | 100195 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 用于 保护 apk 方法 装置 | ||
1.一种用于保护APK的方法,其特征在于,该方法包括:
解压APK文件获得APK中的所有文件,包括classs.dex、lib、META-INFO、AndroidManifest.xml、res;
so库加密,调用密码库中加密算法对so库文件中text字段加密;
dex文件加密,调用密码库中加密算法对classs.dex文件进行加密;
加壳和打包,将Dex壳文件、so库、AndroidManifest.xml文件、META-INFO打包成新的APK;
对新的APK进行签名。
2.根据权利要求1所述的用于保护APK的方法,其特征在于,所述so库加密包括:
通过密码库产生密钥key1和向量IV1,利用密码库中白盒算法将密钥key1放入加密白盒文件wbFile1;
根据密钥key1生成解密白盒文件decwbFile1,将解密白盒文件decwbFile1和向量IV1放入assets文件夹;
使用白盒文件wbFile1和向量IV1作为实数,调用密码库中加密算法对so库文件中text字段加密,并将加密后数据填充回text字段,通过自定义变量对字符串和符号表进行混淆处理。
3.根据权利要求2所述的用于保护APK的方法,其特征在于,加密后的so库仍然存放于lib目录下。
4.根据权利要求1所述的用于保护APK的方法,其特征在于,所述dex文件加密包括:
通过密码库产生密钥key2和向量IV2,利用密码库中白盒算法将密钥key2放入白盒文件wbFile2;
根据密钥key2生成解密白盒文件decwbFile2,将解密白盒文件decwbFile2和向量IV2放入assets文件夹;
使用白盒文件wbFile2和向量IV2作为实数,调用密码库中加密算法对classs.dex文件进行加密,并将加密后的classs.dex作为普通文件存储。
5.根据权利要求1所述的用于保护APK的方法,其特征在于,所述加壳和打包还包括:
使用hash算法对加密后dex文件和so库进行计算,获取其签名值,并将其存入META-INFO中,以便进行完整性校验。
6.根据权利要求5所述的用于保护APK的方法,其特征在于,进一步包括:修改AndroidManifest.xml文件,将入口函数指向壳文件。
7.根据权利要求1所述的用于保护APK的方法,其特征在于,所述新的APK启动时,首先启动Dex壳文件,Dex壳文件先进行环境检测,hook框架、root设备、模拟器、防调试;
环境检测通过后,使用存储在META-INFO中签名值,对dex文件和so库进行完整性校验,校验通过则通过解密库解密dex文件,将解密后dex文件加载到相应位置,并将程序控制权交还给原classes.dex文件;
dex文件调用系统接口加载so库,首先将加密的so库加载到内存中,在内存中对so库解密,解密完成更新对应的内容。
8.一种用于保护APK的装置,其特征在于,该装置包括:
壳文件,包括Dex壳文件和解密库,Dex壳文件用于负责APK的启动并负责调用解密库,并将控制权交还给原classes.dex,解密库用于解密Dex文件和so库;
so加密库,用于解析so库结构,利用密钥和向量对so库进行加密。
加壳工具,用于将加密后的classes.dex文件、so库文件、密钥、Dex壳文件打包成新的APK;
密码库,用于生产密钥和向量,包含加密算法,白盒算法、RSA算法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于航天信息股份有限公司,未经航天信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911260291.7/1.html,转载请声明来源钻瓜专利网。





