ava代码很容易被反编译,以下使用proguard来保护我们的代码
proguard选项很多,容易迷糊,现在就把我的配置写下来(实际使用中),以供参考
如图1
注意输出的jar包,要自己手工填写.
至些图形化的设置部分已经完成.
-injars test.jar
-outjars test_out.jar
-libraryjars lib\ant.jar
-libraryjars lib\aopalliance-1.0.jar
.....设置的支持库包,略
-dontskipnonpubliclibraryclassmembers
-dontshrink
-useuniqueclassmembernames
-keeppackagenames
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-keepparameternames
-ignorewarnings
....我们今天这一节加入要保持的类和方法,写法如下,红色部分是我们加的
-keep class org.bl.soa.components.constant.* {
public fields;
public methods;
*** set*(***);
*** get*();
}
-keep class org.bl.hibernate.* {
.....继续加其他的要保留的类和方法,有多少写多少.我是把test.jar里的所有类都加进来.
....后面还一些自动生成的配置,不用管它们.
....略
重新打开progrard,执行 bin目录下的proguardgui.bat.
如下图
附上出处链接:
Enable Jocky多选框选中
Jocky build file是在项目创建一个xml文件,根据里面的配置进行混淆
Scramble level是进行混淆的代码等级,有none、private、package、protected、public、all,将根据设置对java文件中的相应修饰符修饰的方法代码进行混淆
Output directory是输出文件夹,在项目根目录下
src path="src"/ 设定源文件的目录,因为有时候我们只想输出src目录下的部分包而不是全部.
混淆的工具很多,最常用的为retroguard.
Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候.所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译.反编译工具有很多种,其中非常强大的一种是 jad.
为了避免出现这种情况,保护开发者的劳动,又有一种叫做 Java 混淆器的工具被开发出来.Java 混淆器的作用是对编译好的代码进行混淆,使得其无法被反编译或者反编译后的代码混乱难懂.Java 混淆器也有很多种,其中比较强大的一种是 RetroGuard(只说比较强大是因为我对其功效还是有些怀疑的).
这里我介绍一下 RetroGuard 的使用方法.
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.
在生成配置文件时需要注意的是:
①.、所有 public 的类名、方法名、变量名应该全部保留.因为所有设置为 public 的内容代表了整个包对外表现的接口.若某个内容不想为外界访问,就不应该设置为 public 的.
以上就是土嘎嘎小编为大家整理的java混淆代码怎么做相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!