[发明专利]基于动态恢复so文件的Android应用加固方法在审
申请号: | 201611049813.5 | 申请日: | 2016-11-24 |
公开(公告)号: | CN106650327A | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 文伟平 | 申请(专利权)人: | 湖南鼎源蓝剑信息科技有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/14;G06F21/60 |
代理公司: | 北京万象新悦知识产权代理事务所(普通合伙)11360 | 代理人: | 黄凤茹 |
地址: | 410205 湖南省长沙市长沙高新*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 动态 恢复 so 文件 android 应用 加固 方法 | ||
技术领域
本发明涉及信息安全技术领域,尤其涉及一种针对动态恢复Android系统应用程序动态链接库so文件的Android应用加固方法。
背景技术
2007年,Google公司推出了开源智能手机操作系统安卓(Android)操作系统,由于其丰富的功能和强大的定制能力,在短短几年内它便跃居为智能手机操作系统市场份额的首位。与此同时,基于Android平台的应用程序数目飞速增长。2013年7月,Google公司宣布在Google Play商店上架的应用程序超过一百万,Google Play商店成为全球最大的应用商店。
随着Android系统的兴起,诸多潜在的安全问题逐渐暴露出来,信息泄露、恶意扣费、系统被破坏的事件屡见不鲜。Android安全性的研究也开始受到人们的关注。因为Android平台应用软件使用的语言是Java,传统的Java语言编写的程序很容易遭到逆向破解,导致Android应用程序其破解难度远小于其他使用编译性语言编写的程序。由此得知,Android系统在应用加固方面所面临的主要问题是应用二次打包和恶意代码插入。应用二次打包技术使得盗版应用大量普及,大大损害了开发者的利益和积极性,而恶意代码的植入使得Android用户面临隐私数据的泄漏和财产损失的风险。Android应用的黑色产业链正是因此产生,通过二次打包植入广告降低用户的体验获取利润,又或者插入恶意代码绑定设备上的私密数据进行敲诈勒索。
目前,Android应用加固多数情况还执着于静态处理dex文件,也就是对dex文件进行一些细微修改来提升攻击的难度。这一类加固方法增加了可代码的阅读难度,但实质上并没有起到多少防护效果。这是因为Android平台诞生时间较短,软件保护方面的研究尚处于起步阶段,难以保护应用开发者的软件著作权与利益和广大用户的隐私安全。
发明内容
为了克服上述现有技术的不足,本发明提供一种针对动态恢复Android系统应用程序动态链接库so文件的Android应用加固方法,该方法基于Android系统利用二进制流加密方法进行加固,对so文件中的关键代码进行加密,以达到保护Android应用程序的目的。
本发明提供的技术方案是:
一种基于动态恢复so文件的Android应用加固方法,针对动态恢复Android系统应用程序动态链接库so文件,通过二进制流加密方法对so文件中的关键方法(关键代码)进行加固,使得Android应用程序代码得到保护;所述加固方法包括加密过程和解密过程,具体包括如下步骤:
A.针对需要保护的Android应用程序的so文件,具体设定需要加密的特定节的关键方法,对关键代码所在的节(section)进行加密,执行如下操作:
A1.首先对需要保护的Android应用程序解压,获得Android应用程序中的so文件,对所述so文件进行解析;
A2.读取elf文件头,根据e_shoff定位到节区头部表;
A3.根据elf文件头中的e_shnum得到节区数量;
A4.根据e_shoff和e_shnum读取节区头部表中的所有项;
A5.通过elf文件头中的e_shstrndx项得到节表字符串表在节表中的索引,然后找到节表字符串表的偏移;
A6.读取节表字符串表中的字符串将每一个节的名字保存起来;
A7.比较每一个节的名字和自定义节的名字,如果匹配则通过shdr->sh_offest和shdr->sh_zie得到目标节的内容,并保存到content中;
A8.设定密钥key1,使用密钥key1对步骤A7所述content进行第一次加密,得到第一次加密后的中间数据;
A9.设定密钥key2,使用密钥key2对步骤A8所述中间数据进行第二次加密;
A10.将二次加密后得到数据更新到so文件中,得到新的so文件;
A11.压缩重新生成apk,即完成加密过程;所述重新生成的apk中包含原有的dex文件以及包含解密过程中需要用的密钥和第二次加密后的得到的数据so文件;
B.开始执行Android应用程序时,对加密的so文件进行动态恢复得到关键代码,执行如下操作:
B1.Android应用程序被载入内存后,执行so文件中.init_array段中的程序;
B2.在内存中找到so文件在进程中的地址;
B3.在so文件中查找待解密节的地址;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南鼎源蓝剑信息科技有限公司,未经湖南鼎源蓝剑信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611049813.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电视柜(F‑9921)
- 下一篇:浴室柜(艾恩AC2155‑900)