基于JAVA的代码混淆研究

基于JAVA的代码混淆研究

论文摘要

由于计算机软件是一种极易复制篡改的特殊商品,因此,过去的几年,许多关注于软件数据的机密性、完整性和可用性的研究得以展开。特别是随着多媒体的应用和网络的普及,多媒体数据的安全也成为了保护的焦点。同时,软件产品的唯一性也给软件的保护提出了一个巨大的挑战,这主要是基于:首先,由于软件可以被逆向工程破解,从而导致机密算法等的流失;其次,软件可以被有目的性的修改,从而使软件做出超出预期和准许的行为。目前,商业软件越来越普遍的采取非二进制的代码形式发行,比如JAVA的字节码,但这些形式的代码包含了大部分的源码结构等信息,使得对它们的逆向工程变得更加容易,源代码也更易于被提取。同时由于各种政治经济和文化的原因,使得目前对软件的知识产权保护十分薄弱。本文首先描述了针对软件安全的攻击模型,特别提到了恶意主机的威胁,以及多种软件保护技术手段,比如:网络验证保护、硬件辅助保护、软件水印保护和防篡改保护等。但本文的主要内容是代码混淆的软件保护技术,代码混淆技术是在保持原程序语义功能一致的前提下,通过混淆原程序的代码信息使得恶意用户即使得到了混淆之后的代码也无法得知相关机密数据信息,以此来达到软件保护的目的。针对目前混淆技术主要局限于名称混淆等情况,本文采用基于JAVA字节码的面向对象的控制流混淆和设计混淆算法实现混淆转换。文中的类聚合和类分裂是两种面向对象编程的设计混淆方法,其中类聚合就是将两个或两个以上的类用一个类代替的方法,类分裂则是将一个类用两个或两个以上的类替代的方法,控制流混淆则是对程序执行流程的混淆方法。除此以外,JAVA的体系架构、JAVA虚拟机、混淆的定义和分类以及评测标准都将在本文中进行说明。本文最后设计和实现一个基于对JAVA字节码进行保护的代码混淆工具,并采用了控制流混淆、类聚合和类分裂的算法原则,同时从理论和实际两方面分析混淆转换的有效性和性能过载等方面的实验结果。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 引言
  • 1.1.研究的背景和意义
  • 1.2.主要研究内容
  • 1.3.本文结构及章节安排
  • 第二章 软件保护的现状
  • 2.1.软件安全的威胁
  • 2.2.软件保护技术
  • 2.2.1.网络验证保护
  • 2.2.2.硬件辅助保护
  • 2.2.3.防篡改技术
  • 2.2.4.软件水印
  • 2.2.5.序列号保护机制
  • 2.2.6.代码混淆技术
  • 2.3.本章小结
  • 第三章 Java虚拟机
  • 3.1.Java体系架构
  • 3.1.1.架构概述
  • 3.1.2.架构特点
  • 3.2.Java虚拟机结构
  • 3.2.1.运行期数据区
  • 3.2.2.帧结构
  • 3.2.3.指令集
  • 3.3.Java虚拟机特性
  • 3.4.Java class文件格式
  • 3.5.本章小结
  • 第四章 代码混淆技术
  • 4.1.代码混淆定义
  • 4.2.代码混淆分类
  • 4.3.代码混淆研究现状
  • 4.3.1.Collberg的混淆算法
  • 4.3.2.ChenxiWang的混淆算法
  • 4.3.3.理论工作
  • 4.4.本章小结
  • 第五章 逆向工程与混淆设计
  • 5.1.逆向工程
  • 5.1.1.概述
  • 5.1.2.基本概念
  • 5.1.3.类别
  • 5.2.混淆设计与实现
  • 5.2.1.设计
  • 5.2.2.结构组成
  • 5.2.3.算法
  • 5.3.本章小结
  • 第六章 系统实验分析和评价
  • 6.1.理论分析
  • 6.1.1.强度
  • 6.1.2.耐受性
  • 6.1.3.开销
  • 6.1.4.通用测量标准
  • 6.2.经验性分析
  • 6.3.本章小结
  • 第七章 总结和展望
  • 致谢
  • 参考文献
  • 攻读硕士期间的研究成果及发表的论文
  • 相关论文文献

    标签:;  ;  ;  

    基于JAVA的代码混淆研究
    下载Doc文档

    猜你喜欢