- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android的应用保护技术综述
Android的应用保护技术综述
【摘 要】Android的大量应用给移动终端用户带来了丰富的体验,但其存在的大量盗版应用却严重损害了开发者的权益。本文在分析Android应用结构的基础上,总结现有的Android应用保护技术,如代码混淆技术、动态加载技术、软件水印技术等。
【关键词】Android 软件保护 代码混淆 动态加载 软件水印
【中图分类号】TP311 【文献标识码】A 【文章编号】1674-4810(2015)35-0097-03
由于Android具有开源和免费的特点,得到了大量移动终端制造商的支持,各种各样的Android应用层出不穷。在应用数量不断增长的同时,盗版应用的数量也随之增加。为了阻止应用被破解或篡改,多种保护Android应用的方法也应运而生,本文主要对现有的Android应用保护技术进行归纳总结。
一 Android应用结构
Android系统的结构如图1所示,应用程序的执行主要依赖于Android的核心库(Libraries)和Dalvik虚拟机。
图1 Android系统结构
由于PC平台的Java虚拟机不适合移动终端,因此Google公司为Android平台设计了Dalvik虚拟机。它是Android应用程序的最终运行环境。除了本地库代码可以直接在底层运行外,应用程序的其他部分都被编译为Dalvik字节码在Dalvik虚拟机上运行。Java程序经过编译后会生成Android平台特有的dex(Dalvik Executable)文件,它是一种专为Dalvik虚拟机设计的压缩文件格式,适合处理器频率和内存容量有限的移动终端。
为了给用户提供更好的操作体验,Android应用除了dex文件外还包括其他一些文件或文件目录,如用于存储签名信息的META-INF目录,用于存储资源文件的res目录,用于存储本地代码的lib目录和二进制资源文件resources.arsc等。这些文件会在Android应用程序发布前,和dex文件一同打包成完整的apk(Android Package)文件。
二 Android应用保护技术
一般来说,攻击者对Android应用的破解主要经过以下几个步骤:首先是对应用的反编译,通过反编译的代码分析程序的执行流程,从中找到破解应用的突破口;其次,如果对应用的反编译效果不理想,攻击者会转向对应用的跟踪调试,尝试在跟踪的过程中发现程序的某些关键数据或代码;最后,如果完成了对Android应用的破解,攻击者会对应用进行重新打包,生成新的apk文件。为了阻止攻击者对软件的破解,可以采取以下几种方法对软件进行保护。
1.代码混淆技术
代码混淆的目的是将程序转化为语义相同但语句不同的版本。经过混淆的代码可以明显加大分析代码语义的难度,因此非常适合防范针对程序的反编译攻击。由于Android应用主要使用Java语言进行开发,可以通过混淆Java源代码,或混淆编译后的字节码来实现阻止攻击者分析程序语义的目的。目前代码混淆主要有以下几种:
第一,词法混淆和数据混淆。词法混淆是改变或去除函数名或变量名原有含义的一种混淆方法,而数据混淆是对变量或数据结构进行分割或合并的一种混淆方法。De AR提出一种通过交换程序中的变量名、函数名和类名的词法混淆方法,这种方法的特点是不仅可以去除程序中的词法信息,而且可以进行逆向混淆。Chan提出了一种对标识符进行修改和重用的词法混淆算法。这种方法不是直接对标识符重命名,而是尽可能重用已有的标识符。经过这种方法混淆的程序,其中存在大量名称相似的标识符,攻击者很难从中分析出函数或变量原有的含义。Collberg总结了多种数据混淆的方案,如多变量(或数组)的合并、单变量(或数组)的拆解、静态字符串的动态生成等。这些方法的目的都是去除原始代码中的有意义信息,增加攻击者理解代码的难度。
第二,类混淆和布局混淆。Sosonkin等人提出了类合并和类拆分两种混淆方法。顾名思义,类合并是将原有类中的变量和函数进行组合后生成新类,而类拆分则是将一个完整的类拆分成多个相互关联的小类。无论是类合并还是类拆分,都会改变原有类之间的调用或继承关系,人为地增加代码分析的难度。
布局混淆主要采用删除调试、注释信息、改变数据的分布顺序对程序进行混淆。由于在编写程序时往往会留下大量的注释信息,而逻辑上相关的数据往往也会被程序员放置在物理上相邻的位置,这些都会成为攻击者分析程序的线索。为了清除这些有可能被攻击者利用的信息,Collberg提出了一些布局混淆的方法,如改变实例变量、方法或数组的顺序等。
第三,控制流混淆。程序的控制流信息是一种非常重要的程序结构信息。如果攻击者重构出程序的控制流信息,
您可能关注的文档
最近下载
- 新能源汽车驱动电机及控制系统检修-实训工单.docx VIP
- 第九章讲 食品干燥机械设备.ppt VIP
- 【中职专用】语文(高教版2023职业模块)4.1《活动策划》 课件.pptx VIP
- 第七单元 数学广角——植树问题整理和复习(教案)人教版数学五年级上册.docx VIP
- 全国优质课一等奖人音版六年级音乐上册《小河淌水》课件.pptx
- 学术英语(医学)知到智慧树期末考试答案题库2025年天津医科大学.docx VIP
- 附着式脚手架(爬架)安全管理.pptx
- 2022年吐鲁番市鄯善县社区工作者招聘考试试题.pdf VIP
- 危害因素辨识环因素辨识.ppt VIP
- 高中英语学习兴趣培养.doc VIP
原创力文档


文档评论(0)