`
zjx2388
  • 浏览: 1304664 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA混淆 RetroGuard (转)

    博客分类:
  • J2SE
阅读更多

1、        下载并将retroguard.jar拷贝 到工程目录下;
2、        用命令 jar –xf retrogurad.jar ,在该目录下生成retroguard.class,RGgui.class 等一些class文件;
3、        将我们自己编写的java 源代码编译并打成一个JAR的包,做成批处理命令如下:
     javac xxx.java –encoding gb2312
     jar –cf  xxx*.class xxx.jar
4、        用命令 java  RetroGuard [输入JAR文件 [输出JAR文件 [“保留脚本文件” [日志文件>; 来进行混淆,具体命令如下:
java RetroGuard  xxx.jar xxx1.jar  script.rgs
其中script.rgs是混淆的配置文件,由图形化向导生成,命令如下:
java RGgui ,根据根据向导保留类名不变,即在混淆的时候不混淆类名,这个配置文件必须在上述混淆命令执行前完成;
5、        如果是小应用程序,可以在网页中如下写
;  ;
6、        当然,如果你不想用JAR文件,可以用class文件,如下:
jar –xf  xxx1.jar          它将生成一系列的xxx*.class文件,在网页中可以如下包含:

 

*********************************************************************************************

 

Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译。反编译工具有很多种,其中非常强大的一种是 jad。
为了避免出现这种情况,保护开发者的劳动,又有一种叫做 Java 混淆器的工具被开发出来。Java 混淆器的作用是对编译好的代码进行混淆,使得其无法被反编译或者反编译后的代码混乱难懂。Java 混淆器也有很多种,其中比较强大的一种是 RetroGuard(只说比较强大是因为我对其功效还是有些怀疑的)。

这里我介绍一下 RetroGuard 的使用方法。
将下载的 .tar.gz 或者 .zip 文件解压。有用的只有 retroguard.jar 一个文件,其它的是源代码和文档。
RetroGuard 是针对 jar 文件做混淆的。使用之前需要先配置一下。可以手工编辑配置文件,更好的方法是使用 RetroGuard 提供的 GUI 工具来生成配置文件。使用方法如下:
java -classpath retroguard.jar;xxx.jar;yyy.zip;... RGgui
然后在 GUI 的 Wizard 中设置各个参数。上面的 -classpath 中应该列出要混淆的 jar 所依赖的所有的包。
RGgui 的详细使用方法可以看 RetroGuard 的文档 docs.html。
配置文件生成后,就可以运行 RetroGuard 进行混淆了。使用方法如下:
java -classpath xxx.jar;yyy.zip;... RetroGuard vvv-unofb.jar vvv.jar vvv.rgs vvv.log
其中 vvv-unofb.jar 是未混淆的 jar 文件,vvv.jar 是混淆后生成的 jar 文件,vvv.rgs 是配置文件,vvv.log 是日志文件。缺省的配置文件名称为 script.rgs,缺省的日志文件名称为 retroguard.log。

在生成配置文件时需要注意的是:
1、所有 public 的类名、方法名、变量名应该全部保留。因为所有设置为 public 的内容代表了整个包对外表现的接口。若某个内容不想为外界访问,就不应该设置为 public 的。
2、若包中某个类使用了 java.lang.Class 或者 java.lang.ClassLoader 中的某个方法加载了一个类,若这个类在包外,不需要特别处理;若这个类在包内,则需要保留这个类的类名,否则混淆后会找不到这个类。
3、在包中的所有调试信息(源文件名、行号、变量/参数信息等等)应全部删除。

RetroGuard 还有一种打 patch 的所谓“增量式混淆”的使用方法。方法的要点是把上一次混淆生成的 log 文件作为下一次混淆的配置文件,这样就可以生成一个仅包含修改的 patch jar。在使用的时候把这个 path jar 放在 CLASSPATH 的上一次混淆 jar 之前。这种增量式混淆有两种方法:
1、每个 patch jar 仅包含上一个版本混淆以来发生的变化,这样每个 patch jar 会很小,但是 CLASSPATH 会越来越长。
2、每个 patch jar 包含上一个主要版本(2.0、3.0、4.0)混淆以来发生的变化,这样两个主要版本间的 patch jar 会越来越大。但是 CLASSPATH 只需做很小的变化。

 

 

引用:http://fulong258.blog.163.com/blog/static/178950442007112011926192/

分享到:
评论

相关推荐

    java混淆器 RetroGuard

    java混淆器 RetroGuard 免费提供源码 可运行jar文件 Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件...

    混淆工具 retroguard

    retroguard

    java混淆器jocky和retroguard-v2.3.1.zip

    防止class文件被反编译,保护知识产权

    java混淆器

    java混淆器以及使用方法retroguard-v2.3.1

    retroguard.jar

    Java代码混淆器retroguard.jar

    Java 代码生成工具

    由系统提供数据库结构信息,包括字段名称、类型、长度等,源代码模板中可以直接使用这些字段属性,使用Javascript语言,通过模板生成源代码。

    出色的混淆器ProGuard

    除了通常的混淆外,它还能自动删除不用的类、方法和属性,而且去掉package的层次关系,混淆后的jar包的体积比retroguard的平均还要小10%左右!详细介绍及使用方法请参见:<BR>...

    软件开发中的一个重要环节―――混淆 (2004年)

    详细阐述了混淆在软件开发中的重要作用,并讨论了4种需要混淆代码的情形以及常见的混淆方法。在此基础上着重分析了Java字节码的特点,并列举了几种典型的Java字节码混淆器,具体介绍了RetroGuard混淆器的特点和用法。

    jive.chm

    1 Sun公司的混淆器JADE 2 RetroGuard的使用方法 <br> JVM 1 JVM之class文件结构 2 JVM 內的資料處理 <br> MVC Framework 1 应用Struts的网站建设 <br> Java基础...

    Jive资料集

    4 WebLogic中文问题配置文件 5 JSP系统信息配置探针 <br> 反编译与混淆 1 編譯、反編譯、反反編譯 <br> 反编译 1 反编译常用工具 <br> 混淆 1 Sun公司的混淆器JADE ...

    yguard-2.3.0.1

    yGuard 是RetroGuard的一个升级版本自带一个ANT任务

    jar包压缩技术.zip

    android mail、JarProtector、javaguard-1.0beta4-bin、JMangle-master、proguard6.0.1、Retroguard-master、

Global site tag (gtag.js) - Google Analytics