用于软件保护的代码混淆技术研究

用于软件保护的代码混淆技术研究

论文摘要

近年来,移动代码技术得到了极大的发展,并有着广泛的应用前景,但代码移动性所引发的安全问题阻碍了该技术在现实商业应用中的大规模使用。在这些安全问题中,如何保护移动代码不受主机的损害是传统安全技术无法处理的新需求。在恶意主机环境下,软件系统可以被逆向工程或被篡改,其机密性、完整性与可用性受到威胁。业界迫切要求简便和行之有效的保护软件与软件知识产权的方法。代码混淆作为一种防止逆向工程的技术应运而生。尤其随着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 下一步的研究工作
  • 参考文献
  • 在学期间学术成果情况
  • 致谢
  • 相关论文文献

    标签:;  ;  ;  ;  ;  ;  

    用于软件保护的代码混淆技术研究
    下载Doc文档

    猜你喜欢