论文摘要
近年来,移动代码技术得到了极大的发展,并有着广泛的应用前景,但代码移动性所引发的安全问题阻碍了该技术在现实商业应用中的大规模使用。在这些安全问题中,如何保护移动代码不受主机的损害是传统安全技术无法处理的新需求。在恶意主机环境下,软件系统可以被逆向工程或被篡改,其机密性、完整性与可用性受到威胁。业界迫切要求简便和行之有效的保护软件与软件知识产权的方法。代码混淆作为一种防止逆向工程的技术应运而生。尤其随着Java语言的迅速发展引起了对混淆技术的研究热潮。这是因为Java目标代码——字节代码(bytecode)很容易被反编译为Java源代码,这就迫切要求有效的保护Java字节代码的方法。因此,恶意主机环境下用于软件保护的代码混淆技术的研究就具有重要的理论和现实意义,并越来越受到业界的重视。本文以保护软件,提高逆向工程代价为目标,分别从破解与保护两方面对逆向工程与代码混淆技术进行了深入的研究。针对Java字节代码的解析与混淆,我们实现了一个代码混淆系统原型——JOT,该系统是一个基于Java字节代码的综合代码混淆系统,也是本文研究成果的重要体现。本文的主要研究工作如下:(1)分析了逆向工程的概念、逆向工程的分类、逆向工程的研究方法等。并对形式化方法在逆向工程中的应用做了详尽的研究。(2)研究了当今主流的代码混技术,内容主要涵盖外形混淆、控制流混淆、数据混淆、类结构混淆以及预防性混淆这五类混淆技术,揭示了混淆变换具有的一些特性。(3)提出了一个通用的软件保护模型。该模型对具体应用领域的软件保护策略的制定具有积极的指导意义。其对软件的保护涵盖了5种安全服务:机密性、完整性、可用性、可靠性、鉴别。(4)提出一个通用的针对面向对象程序的混淆转换模型。该模型对制定具体的混淆转换方案具有一定的参考价值。(5)设计并实现了一个用于混淆转换Java字节代码的原型系统——JOT(Java Obfuscate Tool),JOT在实现外形混淆的同时,还实现类结构混淆。并且我们在系统中需要进一步扩展的部分留出了相应的接口以待完善。
论文目录
摘要ABSTRACT第1章 绪论1.1 研究背景及意义1.2 代码混淆技术当前研究现状1.3 主要研究内容1.4 本文结构及章节安排第2章 应用安全与软件保护2.1 应用安全2.2 软件威胁模型2.2.1 什么是威胁模型2.2.2 三种基本的威胁模型2.3 软件保护措施2.3.1 篡改抵制2.3.2 软件多样性2.3.3 软件加密2.3.4 软件水印2.3.5 代码混淆2.4 本章小结第3章 逆向工程技术3.1 概述3.1.1 逆向工程的概念3.1.2 逆向工程技术分类3.1.3 逆向工程研究方法3.1.4 逆向工程的应用3.1.5 逆向工程的的发展方向3.2 形式化方法在逆向工程中的应用3.2.1 形式化方法概述3.2.2 形式化方法分类和特点3.2.3 形式化方法应用于逆向工程3.2.3.1 结构化分析3.2.3.2 形式化规约的生成方法3.3 本章小结第4章 代码混淆技术4.1 概述4.2 混淆变换的定义4.3 代码混淆的分类4.3.1 外形混淆4.3.2 控制流混淆4.3.2.1 分支插入变换4.3.2.2 循环条件插入变换4.3.2.3 将可化简的控制流转换为不可化简的控制流4.3.2.4 取消循环4.3.2.5 控制流恶化4.3.2.6 数据流变换4.3.2.7 使用对象和别名的不透明谓词4.3.2.8 使用并行技术构建不透明谓词4.3.3 数据混淆4.3.3.1 数组重构变换4.3.3.2 变量重组变换4.3.3.3 将静态数据转换为与程序相关的数据4.3.3.4 数值变量混合变换4.3.4 类结构混淆4.3.4.1 类熔合4.3.4.2 类分裂4.3.4.3 类型隐藏4.3.5 预防混淆4.4 代码混淆的性能与度量4.4.1 力量及其度量4.4.2 弹性及其度量4.4.3 执行代价及其度量4.4.4 隐蔽性及其度量4.5 代码混淆技术的应用与发展4.6 本章小结第5章 软件保护模型与混淆转换模型5.1 通用软件保护模型5.1.1 模型的设计目标5.1.2 模型的设计思想5.2 面向对象程序的混淆转换模型5.2.1 模型的设计目标5.2.2 模型的设计思想5.3 本章小结第6章 原型系统JOT 的设计与实现6.1 JOT 系统分析6.2 JOT 系统设计6.2.1 系统结构设计6.2.2 用户接口设计6.3 JOT 的核心算法6.3.1 外形混淆算法6.3.2 类熔合算法6.3.3 类熔分裂算法6.3.4 类型隐藏算法6.4 JOT 性能分析6.5 本章小节第7章 结论与展望7.1 本论文的主要工作7.2 下一步的研究工作参考文献在学期间学术成果情况致谢
相关论文文献
标签:恶意主机论文; 应用安全论文; 逆向工程论文; 形式化论文; 软件保护论文; 代码混淆论文;