转自:http://blog.csdn.net/superbeck/article/details/5189231

对于长年使用Java的程序员,大部分应该都会或多或少的使用到反编译软件。毕竟,不可能你所使用到的每一个包都会提供完善的javadoc,而且,有时候代码比javadoc更容易理解。这里将讲述笔者所了解的一些反编译软件以及它们各自的IDE插件版。

简介


现在业内的反编译软件据说有几十种。其中有jad,以及基于jad而开发的其他反编译软件(Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和国产的小颖JAVA源代码反编译专家);还有jode,以及以jode为核心开发的JCavaj Java Decompiler、BTJ (Back To Java)、jEdit’s JavaInsight plugin);还有DAVA等,以及当前笔者最推崇的Java Decompiler。

在这些反编译软件中,笔者使用过jad,jode,Java Decompiler以及基于这些软件开发的其他软件如Cavaj,小颖等,还有这些软件的eclipse插件版。

其中,jad是一个使用VC++开发的著名反编译引擎,性能非常快;jode是一个使用java开发的开源的反编译引擎,而Java Decompiler似乎也是java开发的反编译软件,并且这三款软件都有相应的eclipse插件版。

使用效果对比


笔者在eclipse中使用了以上三款软件。

使用环境为:eclipse Galileo,jad 1.5.8g + jadclipse 3.3.0,jodeEclipse 1.0.6,JD-Eclipse 0.1.3。

试用结果如下:

反编译性能: jad == jode > Java Decompiler

反编译品质:Java Decompiler > jode >= jad

从速度方面来看,你会明显的感觉到Java Decompiler比较的慢,总是以慢一拍的速度展示反编译后的代码;而jode和jad都表现的非常高速,接近于打开源代码的速度。

从反编译的品质来看,无疑是Java Decompiler最好。最根本的原因就是,jad和jode的最新版都是在JDK 5.0出来以前发布的,所以对JDK 5.0及以上版本的特性基本上不支持。之所以认为jode的反编译效果比jad好,是因为jad的eclipse插件不怎么好用,自己添加的jar包有时候不能反编译出来。

插件的使用


插件的使用方面,需要稍微的注意一下。

jode和JD-Eclipse都是直接安装好就可以使用;而jad则需要另外指定jad.exe的路径,可以把jad.exe文件放到“%JAVA_HOME%/bin”目录下,然后在eclipse中按照以下顺序找到jad的设置窗口,Window -> Preferences, 打开Preferences窗口,然后依次选择 Java -> JadClipse,确保"Path to decompiler:"的值为"jad.exe"。

其中,jad和jode还有一些别的IDE的插件版,有需要的话,可以到sourceforge上去搜索。

总结


如果使用的是JDK 5.0及以上,请使用Java Decompiler,毕竟效果才是最重要的。如果使用的是JDK 1.4的话,还是建议使用jode,如果不在eclipse中使用的话,可以选择jad,加以复杂的命令,可以实现很多的功能。

本文主要是稍微介绍一下三款反编译软件的对比结果,所以具体的使用方法等可以见参考资料中的文章。

参考资料


Jad官网:http://www.kpdus.com/jad .html (好久没有更新了,下载请使用下面网址)

jad下载:http://www.varaneckas.com/jad

jadclipse:http://sourceforge.net/projects/jadclipse/

jode:http://sourceforge.net/projects/jode/

jodeeclipse:http://sourceforge.net/projects/jodeeclipse/

Java Decompiler: http://java.decompiler.free.fr/

java 反编译插件的介绍总结:http://zhidao.baidu.com/question/79760697.html

http://hi.baidu.com/darmn/blog/item/56678e7f14f81a0129388af7.html

http://hi.baidu.com/zhangge9477/blog/item/adeced08c9663a3ae8248849.html

Java反编译利器-Jad, Jode, Java Decompiler等及其IDE插件的更多相关文章

  1. Java 反编译工具 —— JAD 的下载地址(Windows版/Linux版/Mac OS 版)

    Java 反编译工具 —— JAD 的下载地址. 各种版本哦! Windows版,Linux版,Mac OS 版,等等 下载地址: http://varaneckas.com/jad/

  2. Java反编译工具Jad详解

    做项目过程中需要反编译一个jar包,于是作了一些学习,记录下来. Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使 ...

  3. java反编译工具jad

    下好以后解压就可以用了,软件就只有一个exe文件和一个帮助文件.在众多的JAVA反编译工具中,有几种非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:FrontEnd Plus.mDeJav ...

  4. Java反编译工具Jad及插件JadClipse配置教程

    Jad是一个Java的一个反编译工具,和eclipse的插件JadClipse,二者结合可以方便的在eclipse中查看class文件的源代码. 下面介绍一下配置: 下载JadClipse,http: ...

  5. java反编译工具jad使用

    参考:http://blog.csdn.net/u014472711/article/details/53713269 http://lijingshou.iteye.com/blog/2005717 ...

  6. java 反编译利器JD-JUI

    下载地址: http://download.csdn.net/download/suixingbugai/4145221

  7. 【原创】Java批量反编译利器(jd-gui)介绍

    Java反编译利器(jd-gui)介绍 当要做白盒测试或安全测试时,我们需要借助工具扫描被测代码,相信大家都遇到过没有源代码,而需要反编译的情形吧,也可能大家用过jad工具,我这里介绍下方便的工具jd ...

  8. 【转】Eclipse Class Decompiler——Java反编译插件

    闲暇之余,写了一个Eclipse下的Java反编译插件:Eclipse Class Decompiler,整合了目前最好的2个Java反编译工具Jad和JD-Core,并且和Eclipse Class ...

  9. Eclipse4.4 安装java反编译插件Eclipse Class Decompiler

    一.在线安装方式: Eclipse Class Decompiler整合了眼下最好的2个Java反编译工具Jad和JD-Core,而且和Eclipse Class Viewer无缝集成.可以非常方便的 ...

随机推荐

  1. svn代码回滚命令

    代码回滚提交: 比如要把73回滚到68 svn merge -r 73:68 http://my.repository.com/my/project/trunk 然后commit就行了 svn com ...

  2. sqlplus 配置方法及相关命令

    sqlplus 配置方法及相关命令 1.配置文件 1.1 全局模式什么叫全局模式呢:当我们配置完sqlplus工具加载配置文件后,无论在哪个目录下登陆数据库,您设置[sqlplus提示符样子,在任何目 ...

  3. 使用node.js制作简易爬虫

    最近看了些node.js方面的知识,就像拿它来做些什么.因为自己喜欢摄影,经常上蜂鸟网,所以寻思了一下,干脆做个简单的爬虫来扒论坛的帖子. 直接上代码吧. var sys = require(&quo ...

  4. jsp include page指令标记

    include指令标记 <jsp:include page=""> 父页面和包含进来的页面单独编译,单独翻译成servlet后,在前台拼成一个HTML页面. 动态编译& ...

  5. cocos基础教程(2)Window环境下搭建(补充)

    一.环境搭建 1.JDK.Eclipse与SDK 我用的JDK是1.7 Eclipse用的是Luna版的 这些之前都已经设好了,相关下载自己网上找吧 2. 下载最新的Cocos2d-x,我下的是3.5 ...

  6. 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  7. android 利用View自身的setAnimation来实现动画

    最近,在做一个程序要实现切换到下一项时要有动画的效果.使用ViewFlipper .TextSwitcher都没有办法达到效果,无意中发现TextView中有一个setAnimation的函数.调试了 ...

  8. NGUI无限滑动

    http://www.unity蛮牛.com/blog-9383-1391.html 最近由于工作需要,就开始研究NGUI滑动.刚开始参考NGUI自带的循环滑动,利用隐藏和显示,提高GPU的渲染,但是 ...

  9. Hessian原理分析

    一.      远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . tcp . udp 等等, ...

  10. CentOS6.5以runlevel 3开机时自动连接某无线设置示例

    [参考]http://blog.csdn.net/simeone18/article/details/8580592 [方法一] 假设无线网卡代号为wlan0,无线AP的essid为:TheWiFi, ...