不透明谓词的代码混淆技术研究【字数:20542】
摘 要众所周知,软件行业发展迅猛,人们对于软件的各个方面要求都不断提高,从而导致在软件开发中,为了使软件满足更多人更高的需求,也使得其规模与功能复杂度越来越高,但随之而来的是软件公司需要更多的人力,财力以及时间,这些开销也随之增加。因此个别的人以及团体,利用非法手段,俗称逆向工程,从中盗取他人成果,例如程序的核心算法或者是源代码等。在信息共享的时代,软件产品的知识产权(Intellectual Property)保护问题面临重大的挑战。在历史的长河中,许多学术专家对代码混淆技术进行了深入研究,并将其分为四类,即布局,控制流,数据和预防性混淆,本文后面会对此进行详细讨论。在目前所有主流代码混淆技术中,不透明谓词混淆技术具有形式简单、不显著增加开销的两个特点,因此它目前在控制流混淆技术中非常的受人喜欢与使用。出于这个原因,本课题的主要方向是控制流混淆中的不透明谓词混淆技术。如果从实现角度进行分析,一般不透明谓词构造相对简单,但如果要构造令逆向分析者头疼的不透明谓词还是比较艰难,这很大程度上是需要一些更难以理解的复杂算法才能满足的。在本论文中,会利用随机序列以及一些数组相关知识,将基于哈希构造不透明谓词的方法加以改进,让其生成的不透明谓词更简单方便,并且在规律上更难以寻找,可以大幅度减少软件的可读性,使逆向分析人员更难理解源代码的逻辑方向。在本论文的后面,我会将不透明谓词插入混淆技术应用到现在流行的Android应用程序中,并通过其实例进行强度,弹性,开销三个方面进行测试与分析。
目 录
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 *好棒文|www.hbsrm.com +Q: *351916072*
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
1.绪论
1.1 研究背景
现如今,全世界的IT行业以一个指数形式迅速发展,这也导致不断出现各式各样的一些软件,并且这些软件又运用在各行各业,不论是生活、学习还是办公当中,软件的使用一直伴随着人们。它不仅使人们的生活得到更优质化的体验,而且与很多行业相结合,使其发展得到了显著的提高。
与此同时,软件产业高速发展,人们对于软件的各个方面要求不断提高,从而导致在软件开发中,为了使软件满足更多人更高的需求,也使得其规模与功能复杂度越来越高,软件功能上的强大也使得开发软件的成本也急剧上涨,因此某些个人或团体利用非法手段对软件进行逆向破解,之后对其内部代码进行篡改、拷贝,导致盗版软件的产生。
盗版软件带给社会的危害有多个方面:首先对于软件开发所有人层面来讲,是一种侵权行为,直接影响了正版软件的销售量,严重的伤害了正版开发商的利益,如果无法将正版软件进行正常销售,会导致连前期投入成本都无法收回,导致整个厂商蒙受巨大的损失。对于个人层面来讲,盗版软件例如劣质商品一样,无法保证使用者和用户的安全,例如盗版软件夹带的病毒会导致用户数据被泄露或者遗失,造成不可恢复的损失。并且无法得到相应的售后,只能用户独自承担。对于国家层面来讲,每一个行业领域都会有固有的正常运作环境,例如税收等等,盗版软件会导致这一平衡被打破,盗版软件商进行逃税漏税,长远来说,对整个国家经济与发展带来难以估量的损失。
根据软件联盟(BSA)的统计,我国盗版问题比较突出,受到盗版侵权影响的软件价值居高不下,2015年为86.57亿美元,而美国高达90.95亿美元,从中我们可以得出,盗版问题不仅仅只存在于我们国家,甚至在版权保护严厉的美国也同样严重[1]。
除此以外,最近几年许多的黑客攻击者利用逆向工程技术,对很对新软件和具有高价值软件进行逆向分析,通过这种非法手段,将其软件内部的重要的数据信息进行盗取,而仅仅因为软件高价值信息被盗的损失就超达2000亿元。
综上所述,在现代这个信息开源与共享的时代,软件产品的知识产权(Intellectual Property)保护问题面临重大的挑战。
1.2 研究意义
目前很多的学校乃至企业,为了自身利益,加强了对软件保护研究的重视程度,并且采取多种多样的软件保护技术。软件保护分为两种,一种是硬加密,一种是软加密,前者虽然安全性能较高,但会使得成本大幅度提高,后者成本低,因此软加密更流行更普遍。
而代码混淆技术作为低成本且效率较高的软加密保护方法,受到更多人的青睐。其中代码混淆中的不透明谓词混淆技术,作为一门既简单又容易实现,并且效果显著的软件保护技术应运而生。
而在软件保护方面,代码混淆作为主要技术,让很多专家以及学者,如Collberg等人对代码混淆技术的基本方法做了深入的研究,并将其大致分为四种:布局混淆,控制流混淆、数据混淆以及预防性混淆[2]。
其中控制流混淆中不透明谓词这项技术研究也很多,但之前对于构造的不透明谓词一般只是一些结构形式简单的恒真数学表达式,它具有对于程序不会产生太大的开销以及良好的混淆效果,因此目前不透明谓词技术是当前最为简单并且热门的混淆技术之一,本文就是针对不透明谓词进行学习与研究。
目 录
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 *好棒文|www.hbsrm.com +Q: *351916072*
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
1.绪论
1.1 研究背景
现如今,全世界的IT行业以一个指数形式迅速发展,这也导致不断出现各式各样的一些软件,并且这些软件又运用在各行各业,不论是生活、学习还是办公当中,软件的使用一直伴随着人们。它不仅使人们的生活得到更优质化的体验,而且与很多行业相结合,使其发展得到了显著的提高。
与此同时,软件产业高速发展,人们对于软件的各个方面要求不断提高,从而导致在软件开发中,为了使软件满足更多人更高的需求,也使得其规模与功能复杂度越来越高,软件功能上的强大也使得开发软件的成本也急剧上涨,因此某些个人或团体利用非法手段对软件进行逆向破解,之后对其内部代码进行篡改、拷贝,导致盗版软件的产生。
盗版软件带给社会的危害有多个方面:首先对于软件开发所有人层面来讲,是一种侵权行为,直接影响了正版软件的销售量,严重的伤害了正版开发商的利益,如果无法将正版软件进行正常销售,会导致连前期投入成本都无法收回,导致整个厂商蒙受巨大的损失。对于个人层面来讲,盗版软件例如劣质商品一样,无法保证使用者和用户的安全,例如盗版软件夹带的病毒会导致用户数据被泄露或者遗失,造成不可恢复的损失。并且无法得到相应的售后,只能用户独自承担。对于国家层面来讲,每一个行业领域都会有固有的正常运作环境,例如税收等等,盗版软件会导致这一平衡被打破,盗版软件商进行逃税漏税,长远来说,对整个国家经济与发展带来难以估量的损失。
根据软件联盟(BSA)的统计,我国盗版问题比较突出,受到盗版侵权影响的软件价值居高不下,2015年为86.57亿美元,而美国高达90.95亿美元,从中我们可以得出,盗版问题不仅仅只存在于我们国家,甚至在版权保护严厉的美国也同样严重[1]。
除此以外,最近几年许多的黑客攻击者利用逆向工程技术,对很对新软件和具有高价值软件进行逆向分析,通过这种非法手段,将其软件内部的重要的数据信息进行盗取,而仅仅因为软件高价值信息被盗的损失就超达2000亿元。
综上所述,在现代这个信息开源与共享的时代,软件产品的知识产权(Intellectual Property)保护问题面临重大的挑战。
1.2 研究意义
目前很多的学校乃至企业,为了自身利益,加强了对软件保护研究的重视程度,并且采取多种多样的软件保护技术。软件保护分为两种,一种是硬加密,一种是软加密,前者虽然安全性能较高,但会使得成本大幅度提高,后者成本低,因此软加密更流行更普遍。
而代码混淆技术作为低成本且效率较高的软加密保护方法,受到更多人的青睐。其中代码混淆中的不透明谓词混淆技术,作为一门既简单又容易实现,并且效果显著的软件保护技术应运而生。
而在软件保护方面,代码混淆作为主要技术,让很多专家以及学者,如Collberg等人对代码混淆技术的基本方法做了深入的研究,并将其大致分为四种:布局混淆,控制流混淆、数据混淆以及预防性混淆[2]。
其中控制流混淆中不透明谓词这项技术研究也很多,但之前对于构造的不透明谓词一般只是一些结构形式简单的恒真数学表达式,它具有对于程序不会产生太大的开销以及良好的混淆效果,因此目前不透明谓词技术是当前最为简单并且热门的混淆技术之一,本文就是针对不透明谓词进行学习与研究。
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/wljs/185.html