Java程序混淆技术综述3000字符.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java程序混淆技术综述 摘要:随着计算机网络的普及,大量计算机软件被开发出来,给人们的生活带来了很大的便利。同时,软件数据的机密性、可用性也成为了人们关注的焦点,其中主要的挑战就是软件的逆向工程及重组工程。本文主要针对基于Java的程序混淆技术在软件保护上的应用做了简单了论述。 关键词:Java程序;混淆技术;软件保护 当今社会人们对于计算机及其软件的依赖越来越大,软件的安全问题也日益凸显,已经开始影响到人们的正常使用。其主要表现在:软件被逆向工程破解,造成机密信息的泄露,这也是市面上盗版商或破解软件横行的原因;软件信息被重组修改,一些应用软件的密钥或其它机密信息被篡改会给销售商带来巨大经济损失。本文主要对Java程序混淆技术的分类、原理、应用做了一些简单的阐述。 一、Java程序混淆技术原理 (一)混淆技术定义 所谓程序混淆,就是在保持程序功能基本不变的前提下通过代码变换T将原始程序P混淆后变成新程序P1,混淆后的程序很难被反编码,这样就达到了保护软件的目的。其中要满足的条件有两个:P和P1在经过正常混淆转换终止后必须具有相同的输出;P输入出错终止或终止失败时,P1不一定终止。程序混淆的保护机制不是在于保护P1不受攻击,而是加大从P1恢复成P的时间,使攻击者攻击的代价超过其利益,恢复后的P可读性也非常差,以此来达到保护软件的作用。 (二)混淆技术分类 按混淆针对的对象不同,可以将混淆技术分为类内混淆和类间混淆两种。 类内混淆 类内混淆针对的对象是类文件的内部,如基于字节码的类内混淆主要的作用对象就是上述结构中的code字段。类内混淆的方式主要包括数据混淆、控制混淆、切片混淆及针对特定工具的混淆等。 数据混淆 数据混淆是将程序中的常量、变量、数据这些基本组成元素修改或重新组合以增大逆向工程的难度和改变程序的可读性。如分列变量混淆就是数据混淆中的一种常见形式,它是将程序中必要的数据类型或结构拆分成变量组合来隐藏原始数据达到保护程序的效果。数据混淆主要包括有变量存储、编码混淆,变量聚合混淆,顺序混淆,词法混淆等。 控制混淆 控制混淆的对象是程序传输的信息,对信息采取跟踪定位的实时监测,改变程序控制的复杂化从而抵御黑客袭击,保护程序。要注意的是,控制混淆并没有改变程序代码的计算方法。其类别主要有不可化简控制、并行化代码控制、聚合控制、顺序控制等技几种方式。 切片混淆 程序切片指的是对程序语句、判断表达式造成影响的程序集合。切片混淆技术就是使这些程序切片包含更多的变量值,变得更难被理解,从而达到程序保护的目的。 针对特定工具的混淆 这类混淆方式与前三种方式不同,其针对的对象是自动化的反混淆、反编译工具。其主要作用机制是在程序中形成数据依赖,增加反混淆、反编译工具的自动化分析难度,使反编译动作不能自动完成。伪造数据越复杂,反编译效果越好。4种方式可以综合使用提高鲁棒性,提高软件安全性。 (2)类间混淆 类间混淆针对的对象是多种类文件的综合体,主要分为合并、拆分、隐藏三种方式。 1、类合并 类合并是将类文件中包含的变量或函数进行合并,根据程序功能需要重命名这些合并后的变量或函数标识符。其合并原则有:?对标识符相同的变量或非构造函数,其新标识符不能重复?对类文件中标识符及参数都相同的构造函数,其标识符不能更改,但合并后需伪造一个参数加入其中函数中?对有顺序的类文件,合并中要增加一个布尔型的私有变量来区分标识符相同的函数。 2、类拆分 类拆分首先要判断类文件中程序的可拆分性,了解清楚类内部待拆分函数之间的继承和调用关系。确定拆分对象后,要保证拆分后的其中一个子类中完整继承了原始类的每个方法和变量,以使拆分前类的要素都能够实现。 3、类隐藏 类型隐藏的主要功能部位是接口,通过Java中的这些接口混淆类文件中的变量和方法,原来类的功能没有发生改变但是已经实现了这些接口,每个接口只随机含有一个待隐藏类中公开的方法的子集。为了加大自动反编译、混淆的困难,引入的接口可以设置同时为几个类运行。和类拆分一样,类隐藏的混淆方式对程序运行时间的影响都较小。 混淆技术的算法及其攻击模式 (一)混淆技术的算法 下面是几种典型的混淆技术算法: 标识符重命名混淆算法 这种算法的基本原理是利用一些简单无意义的名字代替字节码文件中的类名、接口名、字段名和方法名。这些无意义、随意性的标识符会打乱攻击者的反混淆、反编译动作。因为原始标识符的信息在重命名后已经完全消失,攻击者无法还原原始标识符。这样即使经过反编译,程序文件也不可读了。 重载无关联方法算法 这种混淆算法的依据是扩展转换和方法重载。扩展转换指的是经过编译转换后的新类型T中变量的范围比原来的类型S范围大,但二者具有相同处理方法。因此可以通过对相同的标识符重命名或是采用同一名字命名不同的参数类型、

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档