JAVA反编译工具精选

=====================================================================
JAVA 语言是 1995 5 月由 SUN 公司发布的,由于其安全性高、代码优化、跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位。
不过, JAVA 最突出的跨平台优势使得它不能被编译成本地代码,而要以中间代码的形式运行在虚拟机环境中,这使得 JAVA 的反编译要比别的高级语言容易实现,并且反编译的代码经过优化后几乎可以与源代码相媲美。
为了更好地保护知识产权,避免本公司的智力成果轻易被人窃取,开发者有必要对反编译工具深入了解,以便有针对性地采取保护措施。
目前,比较流行的 JAVA 反编译工具超过 30 种,其中有三款堪称精品:
一、         应用广泛的 JAD
在众多的 JAVA 反编译工具中,有几种非常著名的工具使用了相同的核心引擎—— JAD ,其中主要包括: Front End Plus mDeJava Decafe Pro Cavaj Java Decompiler DJ Java Decompiler NMI’s Java Class Viewer 和国产的 JAVA 源代码反编译专家等等。
JAD 本身是一个命令行工具,没有图形界面,上述的这些工具大多是在 JAD 内核的基础之上加了一个图形界面而已。这么多种产品的共同选择,足可证明 JAD JAVA 反编译领域中的尊贵地位。
笔者用来测试的 JAD 版本是 1.5.8 f。
JAD 是使用 Microsoft Visual C++ 开发的,运行速度非常快,可以处理很复杂的 JAVA 编译文件。众多的参数使 JAD 可以灵活应付多种加密手段,令反编译的代码更加优化和易读。由于 JAD 参数太多,没必要一一解释,其中有几个最常用的如下:

         -d 用于指定输出文件的目录

         -s - 输出文件扩展名 ( 默认为 : .jad) ,通常都会把输出文件扩展名直接指定为 .java ,以方便修改的重新编译。
         -8       - Unicode 字符转换为 ANSI 字符串,如果输出字符串是中文的话一定要加上这个参数才能正确显示。
最常用的反编译指令如下所示:
Jad –d c:/javasource –s .java -8 javatest.class
这条指令将当前目录下的 javatest.class 反编译为 javatest.java 并保存在 c:/javasource 目录里,其中的提示输出为中文,而不是 Unicode 代码。
二、         源码开放的 JODE
JODE 是全球最大的开源项目网站 Sourceforge.net 的成员,不要以为源码开放就小瞧它,在所有的 JAVA 反编译器中, JODE 的反编译效果是最好的,尤其是对付一些常见的加密手段,例如混淆技术等,更是出类拔粹。
JODE 本身也是纯 JAVA 开发的,最近越来越多的 JAVA 反编译软件也选择 JODE 来做它们的核心引擎,例如 JCavaj Java Decompiler BTJ (Back To Java) jEdit's JavaInsight plugin 等。
JODE 是一个可运行的 JAR 文件,在 windows 环境下双击即可运行。
需要特别说明的是, JODE 不是通过常规的 Open->File 的方式来加载 JAVA 编译后的类文件( *.class )或是类包( *.jar )的,而是通过在 Options 菜单中的 Set Classpath 来实现的,单独的类文件可以将它的上一级目录作为 Classpath 输入,然后再选择 Reload Classpath 即可。
  
新加入的类包或是类的名字会在左侧窗口出现,双击类包名可以展开目录树结构,双击需要反编译的类名则在右上角的窗口中直接显示反编译后的源代码。
 
三、         独树一帜的 DAVA
DAVA 不是一个独立的 JAVA 反编译器,而是 JAVA 代码优化工具 Soot 的一部分。 Soot JODE 一样是纯 JAVA 开发的,也是一个独立的 JAR 包,但却不能通过双击直接运行,而是象 JAD 一样在命令行状态运行。
Soot 对环境变量的配置要求非常严格,通常情况下要对 CLASSPATH 做如下设置:
Set CLASSPATH=%CLASSPATH%;c:/sootdir/sootclasses-2.1.0.jar;.;
其中的 c:/sootdir/ 是下载的 soot 类包放置的路径, CLASSPATH 末尾的 .; 代表了当前目录,如果不加上这个的话 Soot 经常会报一个找不到类的错误。
      DAVA 是作为 Soot 的一个参数使用的,通常的用法如下:
Java soot.Main –f dava –d c:/javasource javatest
注意最后的类名不用带 .class 后缀,因为它默认是处理 class 文件,这个操作与前述的 JAD 的参数效果相同。
DAVA 采取了流程优化的方式进行反编译,与传统反编译思路不尽相同,但却对改变流程类的加密方法有独特的反编译效果。
 
上述的三种工具各有千秋,但效果都非常不错。经测试,它们基本上都可以把 JDK 自带的一些例程完全反编译,然后不加任何修改可再编译成功,并能正常运行!
(文中工具均经过本人亲手测试,当时用的是jdk1.4.2_03,现在离写文章的时候过了一年多了,jdk都出到1.5了,怕是有些程序也不太好反编了)

转自:http://home.donews.com/donews/article/9/93121.html

看了这个资料之后,比较了一下,决定选jode,觉得界面很简洁干净,而且比较小,不用安装,只要一个jar文件,并且发现还带有eclipse插件。

 

Jode 是一个十分突出的反编译专家,特别是同Eclipse一起使用时尤为方便,下面介绍一下安装方法:

help => Software Updates => Find and Install... => Search for new features to install,单击"New Remote Site..." 在URL栏输入 http://www.technoetic.com/eclipse/update 然后下一步,就可以看到“jode decompiler plugin *.*”了,选上安装就可以了,由于Jode Decompiler是纯Java编写的所以也不需要其他的什么组件来支持了,安装好了可以看到Window => Preferences... => Java => Jode Decompiler选项卡。安装好了再设置一下文件关联就可以了,Window => Preferences... => General => Editors => File Associations找到"*.class"在"Associated editors"里面可以看到"Jode class file viewer"选中它再单击Default按钮就OK了.

现在就可以使用Jode查看包括Jar包内.class文件的源代码了。

当然,首先必须保证你打开的.class文件中所引用的包全部都在项目中!!!
转自: http://www.blogjava.net/hengheng123456789/articles/100939.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值