网站大量收购独家精品文档,联系QQ:2885784924

Java字节码混淆算法研究汇.pdf

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java字节码混淆算法研究汇

摘要 随着计算机网络和分布式系统的发展,对软件的平台无关性、可移植性提出 了更高、更迫切的要求。在这种情况下,Java平台产生了,提出了一种解决软件 的可移植性和平台无关性的方案。但是由于Java虚拟机指令系统过于简单,且 反编译。这样一来软件开发者的知识产权得不到保障。为解决这一问题,许多专 家、学者提出对Java字节码进行混淆的方案,并且进行了大量的研究。这些研究 呈现以下特点:1.对程序的控制流研究较多,而对程序的数据流研究较少;2.很 多控制流混淆算法或者是利用不透明谓词进行混淆或者是利用Java语言和Jw在 设计上的间隙进行混淆。这些混淆方法难抵挡动态攻击和模式匹配的反混淆攻击。 针对以上倩况,本文对以前的控制流分析算法、Java虚拟机指令系统的特点 和Java字节码验证过程进行了分析和比较,并且结合对Java字节码进行混淆这 一目标,把类型模拟引入控制流分析过程中。这样一来不仅得到Java方法的控制 流图,而且得到大量基本块的执行环境的信息,如:栈、局部变量等。这些信息 对混淆十分有用,为Java控制流混淆奠定了坚实的基础。本文在对控制流图的可 归约性、等价性、结点分裂变换等的研究基础上,运用可归约流图的性质和判定, 提出了基于不透明谓词的大三角形构造、圈交叉、if和switch交叉、循环和switch 交叉等控制流混淆算法。这些算法破坏了原Java方法控制流图的可归约性。同时 本文也给出了部分已有的控制流混淆算法是否破坏原Java方法控制流图的可归约 性的判定。针对不透明谓词难抵挡动态攻击这一弱点,本文提出了利用“垃圾代 码”进行控制流混淆的思路,并且在这一思路的基础上给出“分支垃圾代码”和 “循环垃圾代码”两个具体应用。 针对数据流混淆中判定某个局部变量在程序的某个基本块中是否可引用或者 可被赋值的问题,本文结合已有的求控制流图的必经结点算法,提出了下列两个 算法:1.求任意图的两个结点之间的所有路径的必经结点的算法。2.图中任意两 个结点之间的所有路径是否必须经过它的顶点集的某个子集中至少一个结点的判 定算法。并且,本文给出一系列定理证明来保证算法的正确性和有效性。运用这 些算法和定理,本文解决了在新插入的代码或者用于替换的代码中,引用原程序 的某些局部变量,和对原程序的某些局部变量进行重新赋值的问题。混淆后的程 序能够通过字节码验证,且不改变程序的运行结果。 同时本文对结构混淆、数据变换混淆等进行了简要的介绍。 关键词 混淆 控制流分析 类型模拟 数据流混淆 Java II Abstraot the mtemetand it with ofthe distributed Along development systems,reqllir龆that runtime canbe tllesoftwareisirrelativeⅥdthtlle and Under platform, transplantcd· Java fo】nⅣ盯da wIlichcfinsolvethis thiscondifion,tlle appear,衄dput way question。 JVMinstructionistoo i协d鹤s旬衄a士mclud鼯a10tof Becauselhe syStemsimple,and ismefulfor ofJavaiseasi盯than mformationw

文档评论(0)

liwenhua11 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档