在Eclipse中反编译Class文件完全详解

(2008年09月06日)发表于BlogJava-首页技术区
     摘要: Java是开源的,是免费的,我们强烈鄙视所有不公开源代码的东东。比如,对class文件进行加密混淆的类文件,一般情况下,我们是看不到其源代码的。本文将对此进行详细阐述,说明如何随心所欲的反编译看源码,体验一下其中的乐趣。   阅读全文

菠萝大象 2008-09-06 23:05 发表评论
阅读全文...
本站相关内容:

eclipse中集成jad反编译

很早就听说过eclipse可以集成jad,一直没有试过,一直用的小颖和一个叫java decompiler (具体名字记不住了),不过还是没有集成到eclipse中,每次查看源码的时候,还需要找到相应的class文件才可以反编译,比较麻烦,毕竟很多class都是在jar包中,而且路径很深。昨天闲来无聊,随便找了找eclipse集成jad的反编译工具,很简单,过程如下:
需要两个东东
Jadclips插件,网址: http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download
Jad反编译工具,网址: http://www.kpdus.com/jad.html#download
注意下载的时候认准版本。我下载的是 net.sf.jadclipse_3.3.0.jarJad 1.5.8g for Windows 9x/NT/2000 on Intel platform

开始具体的配置

Jad下载后解压,然后将解压后的jad.exe文件复制到%JAVA_HOME%\BIN目录下面(可以将jad.exe随便放到哪,记住路径,下面在eclipse配置中要用到)。

直接将 net.sf.jadclipse_3.3.0.jar 复制到eclipse的plugins目录下。
个人认为这样比较简单,如果大家喜欢把自己的plugins拿出来放到一个单独的文件夹,可以自己google,这里不做过多介绍。

然后启动eclipse,打开:Window->Preferences->Java->JadClipse

1、Path to decompiler,这里设置反编译工具jad的全路径名,比如:%JAVA_HOME%\bin\jad.exe。 就是刚才jad解压的路径,例如在我的电脑中的路径就是C:\Program Files\Java\jdk1.5.0_13\bin\jad.exe。

2、Directory for temporary files,这里设置临时文件路径,无所谓了。

至于Window->Preferences->Java->JadClipse目录下的Debug,Directives,Formatting,Misc目录中的参数设置,自己看一下就能明白什么意思,可以不用管,这里就不罗嗦了。

3、eclipse会自动将JadClipse Class File Viewer设置成class文件的缺省打开方式。如果没有默认,可以在Eclipse的Windows——> Perference——>General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”。设置完成后,双击*.class文件,eclipse将自动反编译。我的是默认了,大家有问题的可以试试。

:对于存在源代码的类,它不会强行反编译,也就是说它还是会用eclipse自带的Class File Viewer查看class文件。这点很重要哦。毕竟反编译的不如人家的源码好。
:把鼠标焦点放到这个如要查看源码的方法上,然后按F3(eclipse查看源码快捷键),呵呵~源代码出现了。

不过还是要说明一下,如果可以的话,还是尽量找官方的源码(在eclipse指定源码位置,就可以按F3查看,怎么指定?自己google),而且一般都带说明文档的,这样的话,不必每次使用的时候都查看源码,只要把她的API文档导入就可以了(跟指定源码一样),开发的时候会方便一些,如果自己学习的话可以没事看看源码。



小虫旺福 2008-06-20 11:13 发表评论

Eclipse下的Java反编译插件:Jode Decompiler

这个工具感觉非常方便 介绍给大家
安装方法:
    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 *.*”,选上安装就可以了。

安装好后可以看到Window => Preferences... => Java => Jode Decompiler选项卡。

配置:Window => Preferences... => General => Editors => File Associations找到"*.class"在"Associated editors"里面可以看到"Jode class file viewer"选中它再单击Default按钮.

在Eclipse中展开jar文件,双击class文件即可看到反编译之后的源代码.


LifeNote 2008-04-24 15:05 发表评论

JAVA反编译

软件名称:MOCHA 软件类型:自由软件(SHAREWARE) 下载地址:http://www.inter.nl.net/users/H.P.van.Vliet/mocha.htm 用WINZIP等将mocha-b1.zip解开得到mocha.zip文件,mocha.zip不须再解开,这个包内包括了反编译的类文件,只需将其拷贝到JDK所在的目录下,如:c:\\jdk\\bin\\此外,须设置路径:SETCLASSPATH=c:\\myclasses;c:\\jdk\\bin\\mocha.zip   MOCHA用法:   java mocha.Decompiler -v -o Class1.class Class2.class ...   java 调用Java虚拟机   mocha.Decompiler 指示要进行JAVA反编译   -v 选择详细输出    -o 选写入已有的.mocha 文件

JAVA反编译工具


网站: JavaEye  作者: nolan022  链接: http://nolan022.javaeye.com/blog/192307  发表时间: 2008年05月12日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

所使用的软件是 DJ Java Decompiler 3.7。

下面是一个有用的参考文档,说明如何批量编译

http://www.udl.es/usuaris/jordim/Progs/Readme.txt

安装好之后,找到它的安装路径,我的是:E:\Program Files\decomp

底下有一个jad.exe文件,将它设置到环境变量path,或者拷到其他已经了环境变量path的地方,或者在cmd中转到此文件目录下。

 

简单的方法是

jad -o -r -dF:\src -s java F:\classes\**\*.class

-o  - overwrite output files without confirmation (default: no) 无需确定覆写文件

-r  - restore package directory structrure 恢复包目录结构

-s - output file extension (by default '.jad') 如果不设置为-s java,则默认扩展名为.jad

其他的,F:\classes\**\*.class 中的两颗接连的星,表示任意层次的子目录。

OK,这么多就够完成我们的任务了。

本文的讨论也很精彩,浏览讨论>>


JavaEye推荐



反编译工具jad简单用法

反编译工具jad简单用法
以下假设jad.exe在c:\java目录下
一、基本用法
Usage:    jad [option(s)] <filename(s)>
直接输入类文件名,且支持通配符,如下所示。
c:\java\>jad example1.class
c:\java\>jad *.class
结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源文件。

二、Option -o
不提示,覆盖源文件
三、Option -s
c:\java\>jad -sjava example1.class
反编译结果以.java为扩展名。

四、Option -p
将反编译结果输出到屏幕
c:\java\>jad -p example1.class
将反编译结果重定向到文件
c:\java\>jad -p example1.class>example1.java

五、Option -d
指定反编译的输出文件目录
c:\java\>jad -o -dtest -sjava *.class

命令行选择的列表

      -a        - 用JVM字节格式来注解输出
      -af       - 同 -a,但是注解的时候用全名称
      -clear    - 清除所有的前缀
      -b        - 输出多于的括号 (e.g., if(a) { b(); }, default: no)
      -d <dir> - 指定输出文件的文件目录
      -dead      -试图反编译代码的dead 部分(default: no)
      -disass   - 不用用字节码的方式反编译 (no JAVA source generated)
      -f        - 输出整个的名字,无论是类还是方法
      -ff        -输出类的成员在方法之前 (default: after methods)
      -i        - 输出所有的变量的缺省的最初值
      -l<num>    - 将strings分割成指定数目的块的字符 (default: no)
      -lnc      - 将输出文件用行号来注解 (default: no)
      -nl       - 分割strings用新行字符 newline character (default: no)
      -nodos    -不要去检查class文件是否以dos方式写 (CR before NL, default: check)
      -nocast   - 不要生成辅助文件
      -nocode    -不要生成方法的源代码
      -noconv    - 不要转换java的定义符 (default: do)
      -noctor   - 不允许空的构造器存在
      -noinner   -关掉对内部类的支持 (default: turn on)
      -nolvt    - 忽略局部变量的表信息
      -nonlb     - 不要输出一个新行在打开一个括号之前 (default: do)
      -o        - 无需确认直接覆盖输出 (default: no)
      -p        - 发送反编译代码到标准输出 STDOUT (e.g., for piping)

冷面阎罗 2007-09-26 13:32 发表评论

互联网相关内容:
eclipse中集成jad反编译 (2008年06月20日)
Eclipse下的Java反编译插件:Jode Decompiler (2008年04月24日)
JAVA反编译 (2008年01月14日)
JAVA反编译工具 (2008年05月12日)
反编译工具jad简单用法 (2007年09月26日)
谈谈JAVA程序的反编译 (2007年10月15日)
反编译Silverlight 2应用程序 (2008年03月14日)
反编译工具jad的使用 (2008年04月07日)
JAVA反编译探讨-类型转换 (2008年07月06日)