Java代码的安全性一直都是问题,JVM机制导致,Java很容易被反编译。使对方很容易得到你的原程序,即使反编译后有一点区别,但基本不会影响对方获取你的代码,和构思。
最近做项目,程序需要部署到对方服务器,但公司不希望核心代码外泄。但程序又是Java编写的,所以想到了,代码扰乱器,免费的Java扰乱器不是很多。最后找到了proguard,试用了一下,发现还不错。现在简单介绍一下。
proguard现在是sourceforge的项目,官方首页是http://proguard.sourceforge.net/ ,上面有详尽的使用说明。
proguard会将包名,类名,参数名称全部改写,如将Server.java改成A.java。将变量名称等全部改写成没有意义的名称。这样即使反编译后,对方也不能很轻松的获得你的源码,想在上面继续开发基本不太可能,除非话足够长的时间,在无意义的程序上看懂,并将名称全部命名回来。这样话的时间,绝对不会比重写简单。
除非你的程序重要到了,必须花大精力破译的地步,不会有人愿意干这种事情。如果是到了那种地步,即使是汇编,也有人可以反编译出来。
以下简单记录以下使用过程:
1.直接使用proguard,需要写一个简单配置文件命名为proguard.pro ,如下方所示:
-injars xxx.jar
-outjars xxx_out.jar
-libraryjars /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar:
/Users/xxx/xxxxx/xxxx/lib
-optimizationpasses 3
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-keep public class xxx.xxxx.xx.Server {
public static void main(java.lang.String[]);
}
-injars 是需要扰乱的jar包
-outjars 是输出的jar包
-libraryjars 指向程序所引用的jar包,其中需要引用JDK的rt.jar(笔者引用的是MacOS上的rt.jar),可以引用目录,中间用“:”分开。
-keep 是声明Main类,避免该类被重命名。
写完上面的配置文件就可以直接运行
java -jar proguard.jar @proguard.pro
等一回,完成所有操作。就生成了扰乱后的jar包
2.除了直接运行java方式,可以使用ant方式运行proguard, 这样运行起来就比较方便了。
<target name="proguard" depends="jar">
<taskdef resource="proguard/ant/task.properties" classpath="/Users/xxx/tools/proguard/lib/proguard.jar" />
<proguard>
-injars xxx.jar
-outjars xxx_out.jar
-libraryjars /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar:
/Users/xxx/xxxxx/xxxx/lib
-optimizationpasses 3
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-keep public class xxx.xxxx.xx.Server {
public static void main(java.lang.String[]);
}
</proguard>
</target>
将proguard声明为ANT的一个Task,这样直接调用proguard任务,就会生成需要的扰乱后的jar。
后记:支持ANT使得Proguard易用性大大提高。根据笔者目前找到的扰乱工具,Proguard应该是最好的免费扰乱工具。
分享到:
相关推荐
java代码很容易被反编译,以下使用proguard来保护我们的代码
一步步教你使用Proguard混淆Java源代码 .docx
java代码混淆器proGuard,可以混淆函数变量、类、方法名以实现代码加密
java代码很容易被反编译,可通过混淆技术来保护源码,此处我们应用开源项目proguard来进行混淆。操作使用详见:http://blog.csdn.net/odian1/article/details/8282799
看了好多博客论坛对proguard混淆android/java代码的介绍,自己用起来总出错。现总结具体用法步骤,并亲测无误,其中不乏参考之处还请见谅!
proguard是一个java代码混淆工具,并提供了图形化用户界面,它也可以结合Ant或J2ME Wireless Toolkit使用。通过ProGuard得到的更精简的jar文件意味着只需要更小的存储空间混淆环节会用无意义的短变量去重命名类、...
ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。 1. 压缩(Shrink):在压缩处理这一步中,用于检测和删除没有使用的类,字段,方法和属性。 2. 优化...
ProGuard是最受欢迎的Java字节码优化器。它使您的Java和Android应用程序缩小了90%,速度提高了20%。ProGuard还通过模糊类,字段和方法的名称来提供对逆向工程的最小保护。 ProGuard可以免费使用,以处理您的应用...
java代码混淆工具 简单使用docx 字典文件 生成的配置示例
java混淆工具,防止反编译,启动项在bin\proguardgui.bat ,可以在代码打包的时候使用,进行代码混淆
springboot工程(单个maven工程)利用proguard实现代码混淆 java demo案例
Java 代码 混淆 工具 proguard 4.5.1
实现maven管理的Javaweb项目的proguard代码混淆功能、工具包下载及错误解决
This ProGuard used to obfuscate Java source code.
Java混淆技术,保护我们的源代码的安全性与技术保密性!
java代码混淆器------------proguard 很好的混淆工具
Android Java代码混淆工具:ProGuard简介及使用.docx
java代码混淆器之proguard详解及测试工程
proguard5.2.1java代码混淆工具,混淆文档参照 http://download.csdn.net/detail/zysap/9684388
经典的Java代码混淆工具,可以混淆class,jar类型的文件,防止被反编译,对需要进行源码保护的代码很有用。