"景先生毕设|www.jxszl.com

llvm的软件保护技术研究【字数:21111】

2022-11-26 17:41编辑: www.jxszl.com景先生毕设
摘 要随着信息技术的不断发展和软件系统的普及,针对软件系统的逆向破解等安全问题日益突出。尤其是近年来随着手机智能设备的大量普及,Android应用APP数量呈量级增长,软件盗版及针对软件系统的攻击对知识产权及信息安全造成了极大的威胁,如何有效的保护软件系统安全成为一项重要的研究课题。目前,对软件系统的攻击方式主要软件盗版、逆向工程和代码篡改三种,对应的防御措施主要有软件水印技术、代码混淆和软件防篡改。其中,代码混淆作为一种针对逆向工程的技术,被广泛研究与应用。目前对于混淆的分类,普遍是以Collberg的理论为基础,分为布局混淆、数据混淆、控制流混淆和预防混淆四种类型。其中,控制流混淆技术,通过对控制流图进行扰乱,改变代码控制流图中各基本块的前驱和后继,能够有效的隐藏程序执行的控制流,显著提升逆向难度。LLVM作为Apple官方支持的编译框架,被作为MacOS及IPhone平台的官方编译框架。此外LLVM和Clang同时作为Android平台SO文件的交叉编译工具,在LLVM上实现的混淆技术能广泛应用于各个平台。在其优化层定义Pass即对中间表示(IR)进行操作,即可实现编译过程中混淆代码,进而生成代码混淆保护的二进制程序。由于现有的混淆技术容易被自动化工具反混淆或通过符号执行求解路径还原代码控制流,本论文针对这些问题和弱点研究并提出一种基于插入冗余代码基本块的控制流平展化新型混淆技术,并结合插入不透明谓词和控制流不可规约化变换进一步强化混淆强度。此外,基于LLVM框架,在其优化层上设计并实现了本文提出的方法,并结合mbed TLS程序测试集在Android应用程序上对强度、弹性和开销进行了实验测试与分析,实验测试结果表明该混淆方法不仅能大大提高混淆强度,还能有效保护程序控制流信息,有效减少路径分支信息的泄露,抵抗基于Angr符号执行的动静态逆向分析,具有很好的实用性。
目 录
1. 绪论 1
1.1 课题研究背景 1
1.2 课题研究意义 1
1.3 课题研究内容和成果 2
1.4 开发系统对人文法律影响 2
1.5 论文结构 2
2. 相关工作 4
2.1 代码混淆技术 4
2.1.1 代码混淆技术原理 4
 *景先生毕设|www.jxszl.com +Q: &351916072
2.1.2 代码混淆技术分类 4
2.1.3 代码混淆技术评估 8
2.1.4 程序控制流图 8
2.2 LLVM框架 9
2.3 符号执行技术 11
2.4 本章小结 12
3. 控制流混淆方法 13
3.1 插入冗余代码基本块的控制流平展化混淆 13
3.2 插入不透明谓词 15
3.3 控制流不可规约化变换 18
3.4 方法综合应用 19
3.5 本章小结 20
4. 系统设计与实现 21
4.1 系统方案设计 21
4.1.1 开发环境 21
4.1.2 系统框架结构 21
4.1.3 系统模块设计 22
4.1.4 系统工作流程 23
4.2 APK文件操作子系统设计与实现 25
4.2.1 APK文件处理模块设计与实现 25
4.2.2 APK文件重打包模块设计与实现 26
4.3 Android Native源码混淆编译子系统 29
4.3.1 虚假控制流变换子模块实现 29
4.3.2 插入冗余代码基本块的控制流平展化混淆子模块实现 34
4.4 本章小结 41
5. 系统测试与评估 42
5.1 混淆测试环境 42
5.2 测试结果与分析 43
5.2.1 强度测试 43
5.2.2 弹性测试 44
5.2.3 开销测试 46
5.3 本章小结 47
6. 总结与展望 49
6.1 论文工作总结 49
6.2 未来工作展望 49
参考文献 50
致谢 51
绪论
课题研究背景
当前,我国移动互联网迅速发展,在线运行的各类 APP 有 600 多万款,与移动互联网相关的新型网络违法犯罪日益突出。2016年7月1日至2018年12月31日,国家移动互联网应用安全管理中心累计发现违法有害恶意 APP 16,949 款。2018 年12月发现违法有害恶意 APP 414 款,同比减少 82%, 环比增加 157%,已下架 414 款。通报应用发布平台 31 次,已下架处理 31 次[1]。
根据国际产业反盗版集团组织(BASCAP)测算,如果不采取有效的措施,全球数字音乐、影视与软件产业由于盗版导致的收入损失将由2008年的300750亿美元上升至2015年的8002400亿美元。
仅以我国软件产业为例,在政府强制要求国家机关部门及国有企事业单位安装正版软件背景下,盗版软件安装比例由2013年的74%下降至2015年的70%,盗版的商业价值折算为86.5亿美元,给软件企业造成了巨大的损失[2]。遭遇类似困境的还包括在线音乐和视频等数字产品,由此引起了学术界和产业界的密切关注。2016年6月中国互联网用户人数突破7.1亿大关为数字产品的平稳增长奠定了坚实的用户基础,同时也将带来日趋严重的数字侵权问题,盗版控制成为数字产品市场最受瞩目的研究焦点之一[3]。
严重的应用安全问题给社会带来了巨大损失,因此对应用安全的研究,对软件系统的保护成为当务之急。
课题研究意义
在软件保护方面,现有的软件加固保护是针对恶意攻击者破解软件的过程,采用加密、加壳、代码混淆等多种有效的技术手段增加其被破解的难度或者阻止恶意攻击者进行逆向分析。其中,代码混淆是现今一种高效的软件保护方法,它主要通过混淆技术把代码转换成一种更难理解、难以修改、难以还原的代码,从而有效地防止软件破解。然而,当前移动设备、嵌入式设备日趋普及,很多在PC端的传统软件保护技术在这些平台下并不适用,包括Windows、Linux、Mac、iPhone等平台的应用安全面临严峻的安全挑战。但面对不同的系统/硬件(X86,RISC,ARM,Mips等平台)平台,目前很少有人提出通用性应用保护方法。目前可知仅有ObfuscatorLLVM开源项目在LLVM平台实现了基础的代码混淆方案,但其指是实验室基础理论实现的项目,在面对越来越多新型技术如符号执行[4]的挑战下,其加固效果亟待提高。我们将在ObfuscatorLLVM开源项目的基础上,实现一种极高平台兼容性的,能抵御符号执行的基于LLVM复杂控制流混淆系统。
课题研究内容和成果
本课题研究的内容和成果主要有以下几方面:
提出一种新的插入冗余代码基本块的控制流平展化混淆的方法,在标准控制流平展化混淆的基础上,实现了游离冗余代码基本块的构造,能在一定程度上膨胀控制流路径的同时对抗目前常见的控制流平展化恢复脚本。
实现了插入不透明谓词混淆的3种不透明谓词变换,同时总结出了5种基础分支路径构造方式,在多轮变换后能在保持运行结果正确的情况下,构造出极度多样复杂的控制流,进一步强化混淆强度。

原文链接:http://www.jxszl.com/jsj/wljs/83168.html