[发明专利]一种基于Dex加载器的Android应用软件加固保护方法在审
| 申请号: | 201611199104.5 | 申请日: | 2016-12-22 |
| 公开(公告)号: | CN106650330A | 公开(公告)日: | 2017-05-10 |
| 发明(设计)人: | 王鑫 | 申请(专利权)人: | 合肥国信车联网研究院有限公司 |
| 主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/14;G06F21/60 |
| 代理公司: | 北京和信华成知识产权代理事务所(普通合伙)11390 | 代理人: | 胡剑辉 |
| 地址: | 230000 安徽省合肥市蜀山*** | 国省代码: | 安徽;34 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 dex 加载 android 应用软件 加固 保护 方法 | ||
技术领域
本发明属于信息安全领域,涉及移动应用软件安全保护技术,具体涉及一种Android平台下基于Dex加载器的一种改进优化的应用软件加固保护方法。
背景技术
Android应用有Java语言编译而成,而Java语言编译成的二进制代码后很容易被反编译,代码的安全性受到极大威胁,同时也为盗版提供了可乘之机。攻击者下载合法应用,通过反编译修改配置文件甚至植入恶意代码,然后利用打包工具对应用进行重打包,最后使用自己的密钥对应用进行重签名并发布到应用市场。对于普通手机用户,这种重打包的应用很难辨别,盗版或恶意应用很容易被安装到用户手机上,任意获取用户隐私信息,偷跑流量,恶意扣费等,给用户带了很大的损失。
针对这种恶意攻击,传统的防护措施如代码混淆,数字水印技术,Android签名机制等保护方式安全性非常有限。无论采用上述哪种方式,最终攻击者都能在适当地时机获取到程序源码,攻击者可以使用静态的分析工具或者将应用程序置于动态分析的模拟器中获得代码,这些保护措施的效果不佳。
Android应用加固是针对应用重打包的有效防范措施,应用加固是对Android应用程序源代码的加密保护过程,通过利用Android开放的加载机制,动态启动被加密后的代码文件。通过加固的应用,源代码以密文方式保存在Apk中,攻击者在不知道加密算法和密钥的前提下,无从直接获取源码。到目前为止,Android应用加固已经有了一定的技术积累,但是随着Android系统版本一直在迭代更新,现有的Android加固技术也面临着一些挑战:加固应用的启动速度有待优化;加固流程效率低下有待提升;加固程序自身的安全尚未得到重视等。
传统的基于Dex加载器(DexClassLoader)的加固技术是近期使用最广泛的加固方法,该方法需要将Apk中的classes.dex文件加密隐藏,将原Dex文件保存在assets文件夹中,assets文件夹中可以存放不限类型的文件,这样能避免Dex嵌入加固技术对Art虚拟机加固不兼容的问题。如图3所示,其加固流程大致如下:
1)使用反编译软件对目标Apk进行解包,获取其中的classes.dex文件以及AndroidManifest.xml;
2)加密压缩classes.dex文件,存放到assets目录中;
3)将自定义的DexClassLoader编译成壳classes.dex文件放在应用的根目录中以替换目标应用的classes.dex;
4)修改Manifest,将程序入口改为壳程序;
5)打包签名发布。
相应的,如图4所示,系统运行加固后的流程分析如下:
1)系统运行时首先从Manifest文件中读取程序入口,加载并启动壳程序;
2)壳程序对assets中的密文Dex进行解密和完整性校验;
3)壳程序动态加载解密生成的Dex明文文件,将程序的控制权交还给原程序。
发明内容
为解决上述技术问题,本发明提供了一种基于Dex加载器的Android应用软件加固保护方法,其包括以下步骤:
S1:解包原应用Apk文件,得到AndroidManifest.xml,classes.dex文件以及assets,META_INF,libs文件夹;
S2:生成随机密钥KEY,使用随机密钥KEY对Apk中的Dex文件使用128bit的AES算法加密,生成密文文件Reinforce.dex;
S3:将Reinforce.dex移动到在assets文件夹中保存,图示删除classes.dex明文文件;
S4:替换加密核心库libcorn.so中Key密钥区域,并将库文件libcorn.so并保存在libs文件夹中;
S5:将壳源码编译成classes.dex文件,并将壳文件dex放在根目录下替代原程序的classes.dex;
S6:将Manifest中程序入口修改为壳程序具体修改方法为:
a)<application>标签下的android:name属性值改为壳程序名称;
b)建立标签<meta-data>,在<meta-data>标签下添加属性android:name和android:value;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥国信车联网研究院有限公司,未经合肥国信车联网研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611199104.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:书架(四层)
- 下一篇:激发指令文件的生成方法





