三种混淆器的介绍.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
混淆器retroGuard的介绍: 本节介绍如何使用retroGuard来进行字节混淆来防止反编译和反向工程。 关于RetroGuard RetroGuard是一个字节级的混淆器,一个替换可以识别的变量和属性为无意义的字符串的工具,这使得反向工程和反编译无法正常工作。编译后的代码容量会减小。 RetroGuard是一个免费的软件,使用GNU Lesser General Public License. 特性包括: 降低java代码的容量,(最大可以节省将近50%,一般情况下可以节省20%-30%),这样对于你的applets程序,可以大大加速了下载时间。 设计合理,可以与java工程的自动化编译过程无缝兼容。 允许全部用户定义的混淆过程。 支持多种对java代码的切入点——可以访问应用程序,applets,javaBeans和类库接口。 使用jar 这个标准的java打包方案。 混淆过程可以被灵活的脚本语言来控制。 提供了一个图形化的向导程序来管理脚本文件。 通过对方法和文件名的大量过载来取得高安全性 生成的代码有效,符合java虚拟机规范。 自动更新清单文件,使用混淆后的类名,并且自动生成MD5和SHA-1的消息摘要 (automatically generated MD5 and SHA-1 message digests) 关于混淆(obfuscation) java字节代码(class文件)包含了所有的信息,部分源文件中注释。使用decompiler工具可以很轻易的取得源码。为了对抗这种行为,我们需要再部署软件时混淆你的类文件。 混淆过程剔除了所有不需要的信息,包括行号表,本地变量名和源文件名。同时,类,接口,字段和方法标示被重新命名。运行这些代码的Java虚拟机,并不在意这些变化。然而,这种版本的classes文件反编译之后,难以理解的。 决定哪个类需要被混淆,大多数混淆器提供一个单一的切入点(通常是一个应用程序的main方法,或则是applet),并且从这个切入点引出一个类树出来。不幸的是,该方法是非常有限的仅仅适用于小的cases当中的,如果java代码包含了多个切入点,这个方法就不是很灵活的。 相反的,RetroGuard混淆类和接口是在jar文件内进行的。所有的切入点可以通过描述文件类定义的。 (Corruption of class技术 ,不太理解,主要的意思是这样处理过的代码会挑虚拟机的,只在部分机器上可以运行的) 使用多种技术方案来混淆字节代码,他完全可以使市场上一些简易的编译器失效。 由于以上原因,RetroGuard 混淆器只产生通过验证的字节代码,完全兼容Java虚拟机规范。与Corrupting the bytecode不同,RetroGuard使用标示符得过载技术。 安装使用 RetroGuard的安装很简单,只需要将retroGuard.jar包放到CLASSPATH路径下就可以了。 命令行格式为: java RetroGuard [INPUT-JAR [OUTPUT-JAR [SCRIPT [LOGFILE]]]] 例如: java RetroGuard mytest.jar mytesto.jar 混淆过程的控制 脚本文件可以控制RetroGuard的混淆过程,脚本文件可以定义那种标示符不被改变。 脚本文件可以通过手写的方式,也可以使用图形化工具来生成的: java RGgui 如果一个应用程序的入口程序是 MyApp.class,那么在脚本文件中可以这样写: .class MyApp public method 如果需要访问到一个applet程序MyApplet.class, 那么在脚本文件中可以这样写: .class MyApp ,这样将保留类的文件名不被混淆 如果需要访问一个JavaBean类,MyBean.class, 那么在脚本文件中可以这样写: .class MyBean protected,这样将保留类名,pulic方法,保护方法和可以访问的方法和字段。 脚本文件的例子: # All text in a line following # is treated as a comment, and is ignored. # Preserve the class name MyClass in package COM.widgetco # (note that the package identifiers COM and widgetco are # automatically preserved also, so that MyClass remains fully # accessible): .class COM/wi

文档评论(0)

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

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

1亿VIP精品文档

相关文档