为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 使用混淆器RetroGuard保护你的java程序

使用混淆器RetroGuard保护你的java程序

2018-03-26 5页 doc 18KB 135阅读

用户头像

is_682974

暂无简介

举报
使用混淆器RetroGuard保护你的java程序使用混淆器RetroGuard保护你的java程序 使用混淆器RetroGuard保护你的 java程序 使用混淆器RetroGuard保护你的java程序2010-04-01 11:58RetroGuard的使用方法:官网下载RetroGuard是一个很不错的Java混淆器,而且在JBuilder7的企业版中也带了这个混淆器。RetroGuard本身是一个Java程序(一个Jar包),所以要使用的话必须先安装JDK。运行前需要设置一些环境变量,除了要在PATH中包含java的执行路径以外,还要在CLASSPATH中加入D...
使用混淆器RetroGuard保护你的java程序
使用混淆器RetroGuard保护你的java程序 使用混淆器RetroGuard保护你的 java程序 使用混淆器RetroGuard保护你的java程序2010-04-01 11:58RetroGuard的使用方法:官网下载RetroGuard是一个很不错的Java混淆器,而且在JBuilder7的企业版中也带了这个混淆器。RetroGuard本身是一个Java程序(一个Jar包),所以要使用的话必须先安装JDK。运行前需要设置一些环境变量,除了要在PATH中包含java的执行路径以外,还要在CLASSPATH中加入D:\retroguard\RetroGuard.jar(假设你的RetroGuard.jar在D:\retroguard下)。如果没有设置CLASSPATH的话也不要紧,只不过每次运行时就要通过-classpath加上路径。设置好运行环境以后还要准备好你要混淆的.jar文件包,至于如何把编译好的类打包成.jar文件就不在这里多说了。RetroGuard的执行格式是:java RetroGuard[输入JAR文件[输出JAR文件["保留脚本文件"[日志文件]] 其中"保留脚本文件"描述了那些类、函数、变量名必须保留,不能被混淆;日志文件是执行后生成的记录文件,记录的错误、混淆情况等信息。对于"保留脚本文件"可以通过一个图形界面RGgui来设置,执行命令是:java RGgui运行后,可以根据提示选择输入Jar文件,选择要保留的类、函数、变量,完成后会自动生成"保留脚本文件"。其实通常情况下只要保留运行的起始类名称就可以了。如果你的Jar包用到了第三方的函数库,比如Siemens的API,那么就要在-classpath参数中指定。例如:java-classpath c: \siemens\smtk88i1_b8\lib\api.jar RetroGuard in.jar out.jar script.txt log.txt 如果RetroGuard混淆失败,可以查看日志文件取得错误信息。这里我发现一个问题,就是遇到有类似.$.class这样的文件,RetroGuard会提示出错,后来我修改了他的源代码,直接跳过了对这种文件的处理。 JBuilder7中RetroGuard的设置和用法:JBuilder7的企业版中带了RetroGuard v1.1,再JBuilder7安装路径下的retroguard-v1.1目录中。在 JBuilder7中可以直接调用RetroGuard。设置的方法如下:点菜单Tools-Configure Obfuscators配置混淆器,点左下角的New.新建一个混淆器,选择RetroGuard的路径,完成配置。使用起来要通过Archive Builder,点菜单 Archive Builder.,Archive type选择MIDlet(这里仅仅介绍针对Wizards- J2ME应用),然后根据提示一步一步往下设置,到达第9步也就是混淆器设置的时候,选中obfuscate the contents of the archive,Obfuscator选择混淆器,Use the classes specified blow下面添加要保留的类(默认保留起始执行类),结束设置。这样当每次编译的时候,就会自动生成混淆过的Jar文件包了。 sun的jade运行java setup.class按装在F:\jade\lib下运行java Jade+g出现图形界面,可以进行混淆了.===另一篇===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、 4.0)混淆以来发生的变化,这样两个主要版本间的patch jar会越来越大。3.0、 但是CLASSPATH只需做很小的变化。以上的两种方式我都不喜欢,感觉都不够优雅。评论:01 RetroGuard会把包名也混淆了。还有类,方法。显然如果使用spring的话,好像不行哦。能不能只混淆类中的方法体?包名和类名都不改变?02注意RetroGuard的License其实是要收费的。我使用Proguard,完全免费,配合ant来做混淆。只要注意不混淆一些类名或方法名(比如所有继承xwork的Action接口的类都需要保留类名、getter和setter方法),即使我的页面都是使用JSTL编写,也没有什么问题。03在网上看到proguard都是集成在J2ME当中,所以我们作的app应用怎么弄,能给个例子说明一下么?04通过java-jar proguardgui.jar在这个页面上不知怎么配置,原本我有一个1234kb的test.jar通过处理输出后自由101kb的outtest.jar,我直接把里面的语法之类的混淆,使用发编译出来很难看懂就ok了。而不想删除些东西。我发现outtest.jar自由实体类之类的,很多都被删除了。请问怎么配置?05要注意Proguard支持对Java Class进行三种类型的处理:shrinker,optimizer和obfuscator,我只用obfuscator,即只将类名、方法名、字段名修改成无意义的名字。如果你看不懂文档,最好不要用这些工具,不然到最后自己都被混淆了。06哎,没有绝对的安全,能增加一些复杂度,这样又给自己造成了不便,比如base.jar这是给其他任用的。更安全一点的是将核心的一些class加密(字节码加密),用自己的classloader装载解密。如果破解着找到这个classloader,拿到密钥。07独狼写道楼上应该没做过相关工作吧,你说的方法却是最弱的一种方法。混淆的主要目的就是:代码都摆你眼前了,你也要花 上开发的两三倍时间才能理解,这样目的就达到了。08我们的项目也是混淆的,不过不是我搞的,但了解它的原理。这样混淆是破解是花费些时间,但还是能破解和反编译。我见过最牛的混淆是把所有的方法和属性都混淆成了Oo0等方式,当然这些public的方法都是自己用的,如果使用spring就不行了。但即使这样还是能破解它,我看不懂,我直接用行把。不仅要保护代码,还的保护 我觉得这是相对最安全的方式了,软件不被别人滥用。你试过我说的这种方法么? 也可以先把类混淆,然后在加密,将classloader也混淆,但是要是找到这个classload就还是不行了找不到最好的办法。
/
本文档为【使用混淆器RetroGuard保护你的java程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索