| 需要金币: |
资料包括:完整论文 | ![]() | |
| 转换比率:金额 X 10=金币数量, 例100元=1000金币 | 论文字数:21982 | ||
| 折扣与优惠:团购最低可5折优惠 - 了解详情 | 论文格式:Word格式(*.doc) |
摘要:众所周知,软件行业发展迅猛,人们对于软件的各个方面要求都不断提高,从而导致在软件开发中,为了使软件满足更多人更高的需求,也使得其规模与功能复杂度越来越高,但随之而来的是软件公司需要更多的人力,财力以及时间,这些开销也随之增加。因此个别的人以及团体,利用非法手段,俗称逆向工程,从中盗取他人成果,例如程序的核心算法或者是源代码等。在信息共享的时代,软件产品的知识产权(Intellectual Property)保护问题面临重大的挑战。 在历史的长河中,许多学术专家对代码混淆技术进行了深入研究,并将其分为四类,即布局,控制流,数据和预防性混淆,本文后面会对此进行详细讨论。 在目前所有主流代码混淆技术中,不透明谓词混淆技术具有形式简单、不显著增加开销的两个特点,因此它目前在控制流混淆技术中非常的受人喜欢与使用。出于这个原因,本课题的主要方向是控制流混淆中的不透明谓词混淆技术。 如果从实现角度进行分析,一般不透明谓词构造相对简单,但如果要构造令逆向分析者头疼的不透明谓词还是比较艰难,这很大程度上是需要一些更难以理解的复杂算法才能满足的。在本论文中,会利用随机序列以及一些数组相关知识,将基于哈希构造不透明谓词的方法加以改进,让其生成的不透明谓词更简单方便,并且在规律上更难以寻找,可以大幅度减少软件的可读性,使逆向分析人员更难理解源代码的逻辑方向。 在本论文的后面,我会将不透明谓词插入混淆技术应用到现在流行的Android应用程序中,并通过其实例进行强度,弹性,开销三个方面进行测试与分析。 关键词: 逆向工程 不透明谓词 代码混淆 软件保护
目录 摘要 Abstract 1.绪论-1 1.1 研究背景-1 1.2 研究意义-2 1.3 课题研究内容和成果-2 1.4 论文结构-2 2.相关工作-4 2.1 Java语言-4 2.2 Android应用逆向工程-4 2.2.1 Android系统-4 2.2.2 APK文件结构-5 2.2.3 Android逆向概述-7 2.2.4 逆向分析技术主要方法-9 2.3 代码混淆-10 2.3.1 代码混淆概述-10 2.3.2 布局混淆-11 2.3.3 数据混淆-11 2.3.4 控制流混淆-12 2.3.5 预防混淆-14 2.4 代码混淆评价指标-14 2.4.1 强度指标-14 2.4.2 耐受力指标-15 2.4.3 执行开销指标-15 2.4.4 隐蔽性指标-16 2.5 本章小结-16 3. 不透明谓词-17 3.1 不透明谓词相关定义-17 3.1.1 不透明谓词-17 3.1.2 陷门不透明谓词-17 3.1.3 不透明方法-17 3.2 不透明谓词的插入方式-18 3.2.1 在分支判断点处插入-18 3.2.2 在顺序执行语句中插入-20 3.3 哈希不透明谓词-21 3.3.1 哈希不透明谓词算法描述-21 3.3.2 如何构造哈希不透明谓词-23 3.3.3 基于哈希不透明谓词改进-23 3.3.4 基于改进后哈希不透明谓词实现-24 3.4 本章小结-36 4.测试分析-37 4.1 测试环境-37 4.2 测试结果与分析-37 4.2.1 强度测试与分析-37 4.2.2 弹性测试与分析-40 4.2.3 开销测试与分析-41 4.3 本章小结-41 5.总结与展望-42 参考文献-43 致 谢-44 |

