- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 三亚现代雅绅特自驾.doc
- 三位领导人感动世人的经典语录.doc
- 三八游戏MicrosoftWord文档.doc
- 三副职务行为标准.doc
- 三合一管理体系内部审核报告范例.doc
- 三国志12pk版全剧情触发攻略.doc
- 三国演义基本情节梳理.doc
- 三基检验与输血的自测题及答案第4版.doc
- 三大气体实验室制法比较.doc
- 三峡大学2013级本科电气工程及其自动化(输电线路工程)(一本)培养方案.doc
- 2022年大学海洋工程专业大学物理二期末考试试题D卷.doc
- 2022年护士工作总结和计划.doc
- XX妇幼保健院创建平安医院检查考核方案.doc
- 2022年教导处秋季工作总结范文.doc
- 2022年早教老师个人工作总结.doc
- 2022年大学环境生态专业大学物理下册开学考试试卷A卷-含答案.doc
- 母亲节活动策划方案9篇.docx
- 施工管理模板专项工程施工组织设计方案.doc
- 2024_2025学年新教材高中英语Unit4Meetingthemuse二Usinglanguage课时作业含解析外研版选择性必修第一册.doc
- 2024_2025学年新教材高中地理第一章自然环境与人类社会第一节自然环境的服务功能学案新人教版选择性必修第三册.doc
文档评论(0)