基于嵌套复杂度的控制流混淆算法研究
本文关键词:基于嵌套复杂度的控制流混淆算法研究
更多相关文章: 代码混淆 嵌套复杂度 控制流 安卓 Java
【摘要】:计算机软件的广泛运用,大大提高了社会生产力,同时也带来了诸多安全问题。特别是近年来移动互联网的飞速发展,安卓智能手机和Java语言的使用越来越多,安卓系统的开放性导致大量应用程序被破解甚至植入木马和病毒,不仅给软件开发者的知识产权和合法权益造成了严重损害,而且严重威胁手机用户的个人隐私和数据安全。因此,研究更加有效的软件保护技术具有十分重要的意义。代码混淆是软件保护的关键技术,它对程序的外形、数据流、控制流等进行语义保留的变换,生成功能相同却更加难以理解和分析的程序,能有效防止程序被恶意破解。本文介绍了代码混淆的国内外研究现状和几种代码混淆算法,重点分析了基于随机插入策略的控制流混淆算法,探讨了代码混淆的评估方法,研究了JVM指令集和Java字节码文件格式。基于随机插入策略的控制流混淆算法存在混淆强度和额外开销的不确定性,针对这一问题,提出一种基于嵌套复杂度的控制流混淆算法OB_NC,通过计算指令开销和循环嵌套深度来对混淆操作所引入的开销进行量化,采用嵌套复杂度对控制流复杂度进行度量,基于分组背包思想构造背包决策表,综合考虑混淆强度和开销来选择垃圾代码插入点,在开销阈值内尽可能提升混淆强度。分析和实验结果表明,与基于随机插入策略的控制流混淆算法相比,OB_NC算法混淆后的控制流更加复杂,具有更高的混淆强度,且时间开销较低。最后介绍了安卓应用程序结构,分析了目前主流DEX加壳技术的原理和不足。在此基础上,将OB NC算法运用到安卓APP的安全加固中,并验证了其可行性。
【关键词】:代码混淆 嵌套复杂度 控制流 安卓 Java
【学位授予单位】:合肥工业大学
【学位级别】:硕士
【学位授予年份】:2016
【分类号】:TP309
【目录】:
- 致谢7-8
- 摘要8-9
- abstract9-15
- 第一章 绪论15-19
- 1.1 研究背景与意义15
- 1.2 国内外研究现状15-17
- 1.3 论文研究内容17
- 1.4 论文组织架构17-19
- 第二章 代码混淆19-28
- 2.1 代码混淆的概念19-20
- 2.2 代码混淆的分类20
- 2.3 标识符重命名20-21
- 2.4 数据流混淆21-22
- 2.5 类结构混淆22
- 2.6 控制流混淆22-26
- 2.6.1 基于不透明谓词的控制流混淆22-24
- 2.6.2 基于垃圾代码的控制流混淆24-26
- 2.7 代码混淆的评估方法26-27
- 2.8 本章小结27-28
- 第三章 Java字节码28-35
- 3.1 JVM指令集28-31
- 3.2 Java字节码文件结构31-33
- 3.3 BCEL和Sandmark33-34
- 3.4 本章小结34-35
- 第四章 基于嵌套复杂度的控制流混淆算法35-46
- 4.1 控制流35-36
- 4.1.1 Java字节码控制流图35-36
- 4.1.2 控制流复杂度36
- 4.2 OB NC算法基本思想36-37
- 4.3 算法步骤37-42
- 4.3.1 初始化37
- 4.3.2 计算插入点的循环嵌套深度37-40
- 4.3.3 计算混淆强度40
- 4.3.4 选择插入点进行混淆40-42
- 4.4 算法分析42-44
- 4.5 本章小结44-46
- 第五章 OB_NC算法性能测试46-52
- 5.1 测试环境46
- 5.2 CFG对比46-48
- 5.3 混淆强度48-50
- 5.4 混淆开销50-51
- 5.5 本章小结51-52
- 第六章 OB_NC算法在安卓APP安全加固中的应用52-62
- 6.1 安卓APP安全加固52-56
- 6.1.1 安卓APP文件结构52-53
- 6.1.2 DEX加壳53-55
- 6.1.3 破解DEX壳55-56
- 6.2 OB_NC算法在APP安全加固中的应用56-58
- 6.2.1 不透明谓词和垃圾代码的构造56
- 6.2.2 加固流程56-58
- 6.3 测试58-61
- 6.3.1 测试环境58
- 6.3.2 测试结果58-61
- 6.4 本章小结61-62
- 第七章 总结与展望62-63
- 7.1 总结62
- 7.2 展望62-63
- 参考文献63-67
- 攻读硕士学位期间的学术活动及成果情况67-68
【相似文献】
中国期刊全文数据库 前10条
1 陈卫东,杨建军,叶澄清,潘云鹤;基于块的流图模型及其控制流图[J];浙江大学学报(工学版);2003年02期
2 芦运照,张兆庆;控制流路径敏感的深层代码优化技术[J];计算机工程;2004年10期
3 汪淼;赵荣彩;蔡国明;丁志芳;;软件流水中隐式控制流恢复技术[J];计算机科学;2008年10期
4 龚锐;陈微;刘芳;戴葵;王志英;;一种软硬件结合的控制流检测与恢复方法[J];计算机研究与发展;2009年02期
5 张雁;林英;;程序控制流图自动生成的算法[J];计算机与数字工程;2010年02期
6 杜子德;程序控制流图:一种可观化的程序设计工具[J];计算机研究与发展;1995年12期
7 李爱国;洪炳昒;王司;;软件实现的程序控制流校验方法研究进展[J];哈尔滨工业大学学报;2008年03期
8 胡刚;张平;李清宝;张翠艳;;基于静态模拟的二进制控制流恢复算法[J];计算机工程;2011年05期
9 陈新;;基于程序控制流图源代码相似程度分析系统[J];计算机系统应用;2013年03期
10 李金诺;;一种基于约束分析精简控制流图方法[J];计算机与现代化;2013年10期
中国重要会议论文全文数据库 前1条
1 夏玉辉;张威;万琳;王洪艳;;一种基于控制流图的静态测试方法[A];第三届全国软件测试会议与移动计算、栅格、智能化高级论坛论文集[C];2009年
中国博士学位论文全文数据库 前1条
1 王伟;使用显式控制流语言验证汇编程序的方法[D];中国科学技术大学;2011年
中国硕士学位论文全文数据库 前10条
1 杨克;基于代码属性图的软件安全漏洞挖掘方法研究[D];燕山大学;2015年
2 卫彦伉;星载LTE上行同步处理抗辐照技术研究[D];解放军信息工程大学;2014年
3 王磊;基于嵌套复杂度的控制流混淆算法研究[D];合肥工业大学;2016年
4 崔晨;固件代码控制流图恢复技术研究[D];解放军信息工程大学;2012年
5 冯斌;静态构造面向方面程序的控制流图[D];上海交通大学;2007年
6 杨广;控制流提取模型及软件可靠性评价应用研究[D];大连理工大学;2013年
7 周希;基于静态分析的程序控制流图生成工具的设计与实现[D];中山大学;2013年
8 李剑明;面向星载计算机瞬时故障的软件控制流错误检测技术[D];国防科学技术大学;2009年
9 韩红军;基于控制流图的Java语言动态例化的研究[D];北京工业大学;2002年
10 任浩;基于静态分析的C程序控制流图构造方法研究[D];内蒙古师范大学;2013年
,本文编号:917057
本文链接:https://www.wllwen.com/falvlunwen/zhishichanquanfa/917057.html