`
442136713
  • 浏览: 51693 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

阅读更多

Java是开源的,是免费的,我们强烈鄙视所有不公开源代码的东东。比如,对class文件进行加密混淆的类文件,一般情况下,我们是看不到其源代码的。本文将对此进行详细阐述,说明如何随心所欲的反编译看源码,体验一下其中的乐趣。(本文最后面有相关资源下载)
    目前在Java开发工具中,Eclipse可谓是占据着绝对的优势,在平常使用中,大家都会有意无意的查看一下所调用JAR包的源代码,这时如果没有引入源文件的话,将会看不到结果。大象以为例来进行说明,打开demo项目(请在dom4j分类中查找),找到com.demo.database.DataBaseConnect类,按住Ctrl键,再用鼠标点击Element,如图:
在Eclipse中反编译Class文件完全详解 - 菠萝大象 - BlogJava - 该用户已删除 - 挨踢人士
dom4j是开源的,可以在sourceforge.net下载到它的完整版,里面当然包含源代码。大象想说的是,在做开发的时候,需要用到大量的JAR包,你不可能每个都去down一个源码下来,而且我们用不到这么多的源码,只是在需要的时候,看下其中的代码,解决一时的问题。
大象通过查看网上其他人的研究成果再结合自己的分析,总结了一些经验,现在整合起来和大家分享一下。

选择插件时,本人曾经使用过网上评论非常好的Jode开发的Eclipse插件,不过效果不是很好,对有些加密的类不能反编译,后来发现很多人用jadclipse,结果试验了一下,很不错的说。
       使用jadclipse插件一定要注意Eclipse版本。,它对应的是Eclipse3.2版,jadclipse_3.3.0可以用于Eclipse3.3M6以上版。大家千万不要把jadclipse_3.3.0放到Eclipse3.2中,也不要把jadclipse_3.2.4放到Eclipse3.3中,这样做是没什么任何效果滴!大象全部都测试过!
       下面来说下安装过程,其实很简单,网上也有相关的资料。将jadclipse插件(版本自己选择)直接copy到Eclipse目录中的plugins文件夹下,然后打开Eclipse,选择"窗口"-"首选项"-"常规"-"编辑器"-"文件关联",点击文件关联中的*.class,下面就会看到"JadClipse Class File Viewer",选中它,点击缺省值,点击OK,将它设置为默认的类查看器。如图:
在Eclipse中反编译Class文件完全详解 - 菠萝大象 - BlogJava - 该用户已删除 - 挨踢人士
另外在用jadclipse的时候,一定要加入jad.exe这个程序,如果只有插件而没有jad,那么还是不能反编译成功,会显示如下所示的错误,因此我们还要安装jad。
在Eclipse中反编译Class文件完全详解 - 菠萝大象 - BlogJava - 该用户已删除 - 挨踢人士

可以在 这个地址下载到最新的jad,而且有不同平台的版本,本文后面也有相关下载。将下载的压缩包解压后复制jad.exe至你的%JAVA_HOME%\bin目录下,这样做的好处是使用方便。然后在Eclipse中设置一下,选择”窗口”-“首选项”-“Java”-“JadClipse”,在path to decompiler中输入jad.exe的绝对路径。这样做是为了保证反编译的效果。大象做过测试,只要将jad.exe放入%JAVA_HOME%\bin目录下,就没问题了,这个地方不设置也没关系,不过本人还是建议大家设置一下,其它地方不用管。其实大象也不知道该怎么弄,就让它保持默认值好了。^_^
在Eclipse中反编译Class文件完全详解 - 菠萝大象 - BlogJava - 该用户已删除 - 挨踢人士
到这里,我们的工作就做完了,现在再来按住Ctrl,用鼠标点击Element,怎么样?看到源代码了吗?贴上部分反编译代码,如图:
在Eclipse中反编译Class文件完全详解 - 菠萝大象 - BlogJava - 该用户已删除 - 挨踢人士
使用jad对绝大部分的加密混淆class文件都能很好的做到反编译,目前大象还没遇到失败的情况,大家也可以多测试一下。jadclipse插件体积很小(只有40几K),和jad完美结合。大象强烈推荐!
       现在有人会说了,这样一个一个的看太麻烦了,我需要一次把一个JAR包下的所有class文件反编译成java源文件。这样的想法是可行的,还是使用jad工具。
因为之前我们已经将jad加入到了%JAVA_HOME%\bin中,只要配置了环境变量,我们就可以在命令行中方便的使用。在这里,大象还是以为例来说明具体的操作步骤。
       解压和jaxen-1.1-beta-7.jar。为了方便,我将JAR包解压放到F盘根目录,在cmd中,进入到F盘根路径下,输入命令:jad -o -r -s java -d src org/**/*.class
       我解释一下这些参数的含义:
-o:覆盖旧文件,而且不用提示确认。
-r:重新加载生成包结构。
-s:定义输出文件的扩展名。jad为默认扩展名,我们反编译后当然是要.java源文件了。
-d:输出文件的目录。src表示反编译后的所有文件都放在src目录下。
org/**/*.class:org是解压后的文件夹的名字,整个表示org目录下的所有class文件。你也可以写成这样**/*.class,这表示当前目录及其子目录下所有的class文件(包含所有的子目录)。
反编译必须得有jaxen-1.1-beta-7.jar,因为dom4j里面有对xpath的调用,而这些东西都是引用jaxen里的API,如果不加则会有这样的错误:
在Eclipse中反编译Class文件完全详解 - 菠萝大象 - BlogJava - 该用户已删除 - 挨踢人士
到此,关于反编译的内容全部说完了,不过我还想补充一点,有可能JAR包中的class文件不是老外的,而是我们自己写的,里面可能会有中文的情况,这时,虽然反编译通过了,但里面却是gb2312形式的unicode编码,因此我们还得做一个工作,将这些编码转换成中文。
    大象使用ant脚本来完成这个工作,内容比较简单,加了注释,应该很好明白,脚本文件名为build.xml,它放在src目录下,和反编译所得的包处在同一层。

<?xml version="1.0" encoding="GBK"?>
<project name="decompile" basedir="." default="native2ascii">
<!-- 定义输出目录 -->
<property name="build" value="build"/>
<!-- 清除输出目录 -->
<target name="clean">
<delete dir="${build}"/>
</target>
<!-- 创建输出目录 -->
<target name="init" depends="clean">
<mkdir dir="${build}"/>
</target>
<!-- 编码转换 reverse="true"为反向转换 --><target name="native2ascii" depends="init">
<native2ascii reverse="true" src="${basedir}" encoding="gb2312" dest="${basedir}/${build}"/>
</target>
</project>

    有一个地方需要补充一下,在native2ascii元素中,src和dest这两个属性表示着路径。如果反编译后,src目录下,有多个不同的文件夹,这时使用ant来转换编码,请先想好要对哪些文件进行反编码;如果按上面的写法,将会把src目录下的所有文件夹中的所有文件进行反编码。假设,现在有com和org两个文件夹(其实是两个包),我只需要对com中的文件进行反编码,那么可以这样改写:"${basedir}/${build}/com"
    其它的都不变。在cmd中进入到src路径下,输入ant,回车。可以看到如下结果:
在Eclipse中反编译Class文件完全详解 - 菠萝大象 - BlogJava - 该用户已删除 - 挨踢人士
    通过上面这些操作,class文件已经对我们完全公开,想怎么看就怎么看,呵呵~~~~写这些,是觉得对开发工作可能会有一定的帮助,如果看后能够对你工作或是学习起到哪怕一点点的作用,大象就感到很满足了;如果你早就了解这些,或是认为写得不好,还请不要扔砖头,扔蕃茄,更不要对大象口诛笔伐,人身攻击,就当看了一篇白话文好了。大家如果有什么好的建议或是意见,欢迎提出来一起讨论,一起学习。
    本文为菠萝大象原创,如要转载请注明出处。

分享到:
评论

相关推荐

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

    其次,JadClipse是一个Eclipse插件,它将JAD的功能集成到Eclipse IDE中,使得开发者可以直接在Eclipse中反编译并查看Class文件。这对于调试和理解第三方库或无法获取源代码的项目特别有用。 以下是使用JAD和...

    Eclipse中反编译Class文件详解

    【Eclipse中反编译Class文件详解】 在Java开发中,有时我们需要查看或理解某些库的内部实现,尤其是当我们遇到不公开源代码的类文件时。Eclipse作为主流的Java集成开发环境,提供了多种方式来查看编译后的Class文件...

    么把.class文件反编译成.java 经修改后再编译成.class

    在实际开发中,我们可能需要反编译.class 文件以便于修改或 debugging。下面将详细介绍.class 文件反编译到.java 文件的过程,包括反编译工具的使用和反编译后的修改、再编译等步骤。 一、反编译工具的选择 在反...

    eclipse反编译

    通过Jadclipse,用户可以直接在Eclipse环境中对.class文件进行反编译操作,极大地提高了开发效率。 1. **方法1:直接复制jar文件** - 将`jadclipse_x.x.x.jar`文件(x.x.x代表版本号)复制到您的Eclipse安装目录下...

    jadeclipse【Eclipse下查看class文件源码】附配制详解

    Jadeclipse就是这样一款插件,它允许我们在Eclipse集成开发环境中直接查看`.class`文件的源码。本文将详细介绍如何配置和使用Jadeclipse。 首先,Jadeclipse的安装过程是相当简单的。你可以通过Eclipse的内置软件...

    Myeclipse8.6直接反编译class文件工具

    《Myeclipse8.6直接反编译class文件工具详解》 在软件开发过程中,有时我们需要查看或理解已有的Java字节码(class文件),这时就需要用到反编译工具。Myeclipse作为一款功能强大的Java集成开发环境,提供了集成反...

    在MyEclipse中反编译.class详解

    ### 在MyEclipse中反编译.class文件的详细步骤与原理 #### 一、引言 在进行Java开发的过程中,经常需要对第三方库或者未知源码的类进行探索以了解其内部实现机制。然而,如果没有对应的源代码,我们通常无法直接...

    eclipse反编译工具

    **Eclipse反编译工具详解** 在Java开发中,有时候我们可能会遇到无法获取源码的情况,比如处理一些遗留系统或第三方库。此时,反编译工具就显得尤为重要,它们可以帮助我们理解并分析字节码,进而实现对无源码程序...

    JadClipse Eclipse反编译插件

    ** JadClipse Eclipse反编译插件详解 ** 在软件开发过程中,有时我们需要查看或理解已编译的Java类文件的源代码,特别是在分析开源项目或者处理无源码的库时。这时,反编译工具就显得尤为重要。JadClipse是一款集成...

    eclipse反编译插件

    ### Eclipse 反编译插件知识点详解 #### 一、Eclipse 反编译插件概述 **Eclipse** 是一款流行的开源、基于 Java 的可扩展开发平台。它不仅仅局限于 Java 开发,还支持多种其他编程语言如 C/C++、COBOL 和 PHP 等。...

    myeclipse或者eclipse打开.class文件

    ### 使用MyEclipse或Eclipse打开.class文件的知识点详解 #### 一、概述 在进行Java开发时,经常需要查看编译后的`.class`文件内容。对于MyEclipse或Eclipse用户来说,可以通过安装特定插件来实现这一功能。本文将...

    myeclipse 反编译插件

    在Java中,常用的反编译工具有jad、FernFlower、Procyon等,它们都能帮助开发者解析.class文件。 “myeclipse”是一款强大的Java EE集成开发环境,由Genuitec公司开发,它是Eclipse IDE的商业扩展,提供了更多的...

    eclipse安裝jad反編譯插件方法

    通过以上步骤,我们成功地在Eclipse中安装并配置了JadClipse插件,可以方便地对class文件进行反编译并查看源代码。这对于理解现有项目的工作原理、调试和学习都有很大的帮助。希望这篇指南对你有所帮助!

    Java反编译工具详解(4款主流反编译工具).pdf

    Java反编译是软件开发过程中一项重要的技术,主要用于分析和理解已编译的Java字节码文件(.class文件)。由于Java的可移植性和安全性,源代码通常不会随可执行文件一起发布,这时就需要反编译工具来查看并理解代码...

    jad反编译工具详解

    通过上述步骤,用户可以在Eclipse环境中方便地使用jad进行反编译操作,极大地提高了开发和研究的效率。 #### 结论 jad作为一款强大的Java反编译工具,不仅能够帮助开发者理解和分析已有的Java字节码,还能在逆向...

    MyEclipes/Eclipes的jadclipse反编译插件

    【描述】:jadclipse是一款在MyEclipse和Eclipse集成开发环境中使用的反编译插件,它允许开发者查看Java字节码(.class文件)的源代码。jadclipse通过jad.exe工具与Eclipse或MyEclipse进行集成,jad.exe是jad反...

    反编译工具jad

    2. **集成到 Eclipse**:通过安装插件,如 JD-Eclipse,用户可以在 Eclipse 的源代码视图中直接查看反编译结果。设置路径并启用插件后,选择一个类,Eclipse 就会自动展示对应的源代码。 ### 三、反编译的注意事项 ...

Global site tag (gtag.js) - Google Analytics