面向Android智能手机终端应用程序的代码混淆算法研究与实现
发布时间:2017-08-05 12:32
本文关键词:面向Android智能手机终端应用程序的代码混淆算法研究与实现
更多相关文章: 代码混淆 控制流混淆 不透明谓词 知识产权保护
【摘要】:随着社会经济的发展,全球应用程序商店的数量有所增长,其规模保大幅度扩张,移动应用程序的数量呈爆发式增长的同时也面临着许多挑战,其中一方面就是知识产权的保护[¨。随着网络的发展,移动应用程序传播的范围变得更加开放,移动应用程序传播的速度变得更加便捷,这在促进移动应用程序交流的同时,也为移动应用程序知识产权窃取提供了良好的温床。相比于iOS等其他平台的移动应用程序,Android应用程序由于Java语言编译后产生的中间代码会保留大量信息的原因,反编译后得到的代码具有很高的质量,基本上可以根据获取的应用程序信息重构程序,导致Java应用程序在代码保护上的保密性较低,使得Android应用程序的知识产权保护面临着很大的安全风险。 在众多软件保护技术中,代码混淆是一种比较有效的保护技术,其基本思想是通过各种混淆技术对软件代码或数据进行保留语义的变换,使得对混淆后的代码进行分析的难度加大,进而达到保护软件代码安全的目的。代码混淆技术通过对程序的代码进行重新组织或处理,在确保混淆后的代码与混淆前的代码能够实现相同功能的前提下,使得混淆后的代码更难被分析,更难被反编译,即使反编译成功也难以得到程序的真正语义。相较于水印、防篡改等其他保护技术,代码混淆保护的是程序的代码,它并不改变程序实现的功能,即使是合法用户也无法从代码中获取程序的重要信息。 本文重点研究面向Android智能终端应用程序的控制流混淆,设计并实现了控制流混淆方案,给出了相关算法的基本描述。本文在结合不透明谓词技术与插入分支代码的基础上,通过扁平化部分控制结构的方式,进一步破坏程序原控制流结构,在不过分增加开销的情况下,增加重构应用程序控制流图的难度,加强对应用程序的保护。本文主要工作如下: 首先,结合Android智能终端应用程序的特点,研究了当前代码混淆技术及不透明谓词技术,对常见的混淆技术做了详细的介绍,并针对应用程序的保护需求及使用场景需求提出了基于控制流保护的混淆方案。 其次,基于混淆工具理论模型以及本文的混淆方案,完成了混淆工具架构的设计,以及混淆工具的开发,实现控制流混淆方案。并逐步优化混淆方案及工具,提高混淆的灵活性和混淆效果。 最后,结合混淆的评估标准,根据Android应用程序的特点及应用场景的需求,从代码长度、性能开销、语义复杂度等维度分析了实验结果,并与Proguard的混淆结果进行对比。
【关键词】:代码混淆 控制流混淆 不透明谓词 知识产权保护
【学位授予单位】:北京邮电大学
【学位级别】:硕士
【学位授予年份】:2015
【分类号】:TP311.1;TP309
【目录】:
- 摘要4-6
- ABSTRACT6-10
- 第一章 绪论10-16
- 1.1 研究背景及意义10-11
- 1.2 国内外研究现状11-13
- 1.3 论文主要研究内容13-14
- 1.4 创新性分析14-15
- 1.5 论文章节安排15-16
- 第二章 代码混淆技术16-29
- 2.1 代码混淆技术研究16-26
- 2.1.1 代码混淆的定义16-17
- 2.1.2 控制流混淆17-20
- 2.1.2.1 压扁控制流18
- 2.1.2.2 插入多余的控制流18-20
- 2.1.2.3 通过跳转函数执行无条件转移指令20
- 2.1.3 数据混淆20-24
- 2.1.3.1 混淆整型数21
- 2.1.3.2 混淆布尔型变量21-22
- 2.1.3.3 混淆常量22-23
- 2.1.3.4 混淆数组23-24
- 2.1.4 结构混淆24-25
- 2.1.5 动态混淆25-26
- 2.2 不透明谓词技术研究26-27
- 2.2.1 不透明谓词的定义26
- 2.2.2 常见的不透明谓词的强化方法26-27
- 2.3 代码混淆评估标准研究27-28
- 2.4 本章小结28-29
- 第三章 混淆方案及其相关算法29-41
- 3.1 混淆方案概述29-31
- 3.2 混淆方案相关算法描述31-40
- 3.2.1 插入多余的分支路径31-33
- 3.2.2 压扁控制流33-39
- 3.2.2.1 压扁控制流算法34
- 3.2.2.2 条件基本块压扁控制流算法34-39
- 3.2.3 强化不透明谓词39-40
- 3.3 本章小结40-41
- 第四章 混淆工具的开发实现41-50
- 4.1 混淆工具的设计41-42
- 4.2 开发环境42-43
- 4.3 系统设计43-44
- 4.4 用户界面及工作流程44-46
- 4.4.1 用户界面44-45
- 4.4.2 工作流程45-46
- 4.5 程序分析模块的实现46
- 4.6 混淆模块的实现46-47
- 4.7 程序运行实例分析47-49
- 4.8 本章小结49-50
- 第五章 混淆工具的测试及性能分析50-56
- 5.1 混淆方案的可行性分析50-51
- 5.2 混淆工具的有效性分析51-54
- 5.2.1 代码长度51-52
- 5.2.2 时间开销52-53
- 5.2.3 语义复杂度53-54
- 5.3 本章小结54-56
- 第六章 总结与展望56-58
- 6.1 总结56
- 6.2 展望与进一步研究56-58
- 参考文献58-60
- 致谢60-61
- 攻读学位期间发表的学术论文目录61
【参考文献】
中国期刊全文数据库 前10条
1 李新良;罗戈夕;;基于Java的代码混淆算法研究[J];湖南文理学院学报(自然科学版);2010年03期
2 李婧;;基于控制流混淆转换的代码保护技术[J];计算机安全;2009年08期
3 王一宾;陈意云;;一种基于流图变换的代码迷惑算法[J];计算机工程与应用;2012年11期
4 罗宏;蒋剑琴;曾庆凯;;用于软件保护的代码混淆技术[J];计算机工程;2006年11期
5 杨乐;周强强;薛锦云;;基于垃圾代码的控制流混淆算法[J];计算机工程;2011年12期
6 何凌毅,樊莉萍;Java安全机制的研究[J];计算机工程与科学;2001年06期
7 徐海银;雷植洲;李丹;;代码混淆技术研究[J];计算机与数字工程;2007年10期
8 李林涛;石庆民;;Android智能手机操作系统的研究[J];科技信息;2011年25期
9 赵玉洁;汤战勇;王妮;房鼎益;顾元祥;;代码混淆算法有效性评估[J];软件学报;2012年03期
10 史扬,曹立明,王小平;混淆算法研究综述[J];同济大学学报(自然科学版);2005年06期
中国博士学位论文全文数据库 前1条
1 王祥根;自修改代码逆向分析方法研究[D];中国科学技术大学;2009年
,本文编号:624964
本文链接:https://www.wllwen.com/falvlunwen/zhishichanquanfa/624964.html
教材专著