Java代码加密与反编译(一):利用混淆器工具proGuard对jar包加密

文章来自:http://m.blog.csdn.net/blog/DianaCody/38585047

Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译。通常情况下,反编译可以利用现有的工具jd-gui.exe或者jad.exe。

(这两个反编译工具在我的资源里有下载:

jd-gui.exe: http://download.csdn.net/detail/dianacody/7760019

jad.exe: http://download.csdn.net/detail/dianacody/7760093

       有些情况下,为了保护java源码不被别人看到,通常会使用加密手段对java源码进行加密,加密的方式可以利用加密工具(比如java代码混淆工具)、使用加密算法(如DES算法)修改classloader对编译好的.class文件进行加密。

(注:这里推荐一款java代码混淆器,可以混淆函数变量、类、方法名以实现代码加密:proGuard: http://download.csdn.net/detail/dianacody/7760089

一、用java混淆器工具proGuard实现加密

这里使用proGuard对jar包进行加密。

1. 解压下载的proguard,解压后进入lib文件把proguard.jar拷贝到自己新建的文件夹里如图:

2. 把需要混淆的jar和jar所依赖的包也放到新建的文件夹,都放在一起,如下图。

3. 写一个配置文件,名称自己定,例如”a”文件,举个简单配置文件例子(那个proguard.map是过后自己生成的),内容如下,其中-injars: 是你需要混淆的jar,-outjars:是你混淆后输出的jar,-libraryjars:是你混淆的jar需要所依赖的jar包,后面的不在一一说 明,可以参考proguard文档,配置文件可以参考文档来对自己混淆的需求来写配置文件。

-injars       TheFirstDesktopApplication1.jar

-outjars      TheFirstDesktopApplication1_out.jar

-libraryjars  <java.home>/lib/rt.jar

-libraryjars appframework-1.0.3.jar

-libraryjarsswing-worker-1.1.jar

-printmappingproguard.map

-overloadaggressively

-defaultpackage ''

-allowaccessmodification

-dontoptimize

-keep public class*

{

 public protected *;

}

-keep public classorg.**

-keep public classit.**

4.   把配置文件保存到你建的文件夹下,如下图。

5.点击开始,运行,输入cmd,进入你建的文件夹下,如下图。

6.   然后输入命令语句:java   -jarproguard.Jar  @a 然后回车,如下图。

7.   混淆成功,在产生TheFirstDesktopApplication1_out.jar如下图。

8.      混淆器后,利用反编译器jad对没TheFirstDesktopApplication1_out.jar反编译,多了好多a,b,c之类的类文件,对反编译的java文件是很难编译的,即说明混淆成功。

        用上面方法试了一下,发现其实混淆效果并不好,使用jd-gui反编译工具就可以轻易看到源码。总结一下,网上找了几个代码混淆工具效果都不好,其实现成工具看来也并不是那么好用。

        然后想想,就换了一种方式,直接使用加密算法对java代码进行解密。在下篇文章里再写。

猜你喜欢

转载自ximeng1234.iteye.com/blog/2213395