Java是开源的,是免费的,我们强烈鄙视所有不公开源代码的东东。比如,对class文件进行加密混淆的类文件,一般情况下,我们是看不到其源代码的。本文将对此进行详细阐述,说明如何随心所欲的反编译看源码,体验一下其中的乐趣。(本文最后面有相关资源下载)
目前在Java开发工具中,Eclipse可谓是占据着绝对的优势,在平常使用中,大家都会有意无意的查看一下所调用JAR包的源代码,这时如果没有引入源文件的话,将会看不到结果。大象以dom4j-1.6.1.jar为例来进行说明,打开demo项目(请在dom4j分类中查找),找到com.demo.database.DataBaseConnect类,按住Ctrl键,再用鼠标点击Element,如图:
dom4j是开源的,可以在sourceforge.net下载到它的完整版,里面当然包含源代码。大象想说的是,在做开发的时候,需要用到大量的JAR包,你不可能每个都去down一个源码下来,而且我们用不到这么多的源码,只是在需要的时候,看下其中的代码,解决一时的问题。
大象通过查看网上其他人的研究成果再结合自己的分析,总结了一些经验,现在整合起来和大家分享一下。
[b]1、安装jadclipse插件
[/b] 选择插件时,本人曾经使用过网上评论非常好的Jode开发的Eclipse插件,不过效果不是很好,对有些加密的类不能反编译,后来发现很多人用jadclipse,结果试验了一下,很不错的说。
使用jadclipse插件一定要注意Eclipse版本。jadclipse_3.2.4,它对应的是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,将它设置为默认的类查看器。如图:
另外在用jadclipse的时候,一定要加入jad.exe这个程序,如果只有插件而没有jad,那么还是不能反编译成功,会显示如下所示的错误,因此我们还要安装jad。
[b]2、安装
jad
[/b]
可以在 http://www.kpdus.com/jad.html#download
这个地址下载到最新的jad,而且有不同平台的版本,本文后面也有相关下载。将下载的压缩包解压后复制jad.exe至你的%JAVA_HOME%\bin目录下,这样做的好处是使用方便。然后在Eclipse中设置一下,选择”窗口”-“首选项”-“Java”-“JadClipse”,在path to decompiler中输入jad.exe的绝对路径。这样做是为了保证反编译的效果。大象做过测试,只要将jad.exe放入%JAVA_HOME%\bin目录下,就没问题了,这个地方不设置也没关系,不过本人还是建议大家设置一下,其它地方不用管。其实大象也不知道该怎么弄,就让它保持默认值好了。^_^
到这里,我们的工作就做完了,现在再来按住Ctrl,用鼠标点击Element,怎么样?看到源代码了吗?贴上部分反编译代码,如图:
使用jad对绝大部分的加密混淆class文件都能很好的做到反编译,目前大象还没遇到失败的情况,大家也可以多测试一下。jadclipse插件体积很小(只有40几K),和jad完美结合。大象强烈推荐!
现在有人会说了,这样一个一个的看太麻烦了,我需要一次把一个JAR包下的所有class文件反编译成java源文件。这样的想法是可行的,还是使用jad工具。
3、批量反编译[/b]
因为之前我们已经将jad加入到了%JAVA_HOME%\bin中,只要配置了环境变量,我们就可以在命令行中方便的使用。在这里,大象还是以dom4j-1.6.1.jar为例来说明具体的操作步骤。
解压dom4j-1.6.1.jar和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文件(包含所有的子目录)。
反编译dom4j-1.6.1.jar必须得有jaxen-1.1-beta-7.jar,因为dom4j里面有对xpath的调用,而这些东西都是引用jaxen里的API,如果不加则会有这样的错误:
到此,关于反编译的内容全部说完了,不过我还想补充一点,有可能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中的文件进行反编码,那么可以这样改写:src="${basedir}/com" dest="${basedir}/${build}/com"
其它的都不变。在cmd中进入到src路径下,输入ant,回车。可以看到如下结果:
通过上面这些操作,class文件已经对我们完全公开,想怎么看就怎么看,呵呵~~~~写这些,是觉得对开发工作可能会有一定的帮助,如果看后能够对你工作或是学习起到哪怕一点点的作用,大象就感到很满足了;如果你早就了解这些,或是认为写得不好,还请不要扔砖头,扔蕃茄,更不要对大象口诛笔伐,人身攻击,就当看了一篇白话文好了。大家如果有什么好的建议或是意见,欢迎提出来一起讨论,一起学习。
本文为菠萝大象原创,如要转载请注明出处。
分享到:
相关推荐
本文详细介绍了如何在Eclipse环境中反编译Class文件,以便查看对应的源码。 首先,反编译Class文件是为了能理解那些无法直接获取源代码的二进制文件的运行逻辑。尽管Java是开源的,但有些库或组件可能出于安全或...
本文将详细讲解如何在Eclipse环境中进行class文件的反编译,以及所需的jar包和exe文件。 首先,我们要明白的是,Eclipse本身并不内置反编译功能,但我们可以借助第三方插件或者外部工具实现这一目的。在这个主题中...
标题和描述提到的"MyEclipse、Eclipse反编译Class文件工具"正是为了解决这一需求。下面我们将详细介绍这个主题,并探讨如何在MyEclipse和Eclipse这两个流行的Java集成开发环境中进行反编译。 首先,让我们了解什么...
本文将详细介绍如何在Eclipse集成开发环境中利用反编译工具实现这一目标,特别是针对Eclipse3.3及以上版本。我们将讨论JAD和JadClipse这两个关键组件,以及它们的安装和使用方法。 首先,JAD(Java Decompiler)是...
标题中的“eclipse反编译class文件jad工具”指的是在Eclipse环境中使用JAD来反编译Java类文件。这通常是因为开发者想要理解第三方库的工作原理,或者在没有源代码的情况下进行问题排查。JAD不仅可以在命令行中使用,...
本主题主要涉及jad和Eclipse插件两种工具进行_class文件的反编译,并提及了一款名为“小颖反编译工具”的辅助软件。 首先,jad是一款历史悠久的Java反编译器,它能够将_class文件转换为接近原始Java源代码的文本...
在这个场景下,"eclipse、myeclipse中class反编译工具"是一个关键的话题。本文将详细介绍如何在Eclipse和MyEclipse集成开发环境中使用这些工具来反编译.class文件。 首先,我们关注的是JAD,这是一个流行的Java反...
本文旨在介绍如何通过反编译工具将`.class`文件转换为`.java`文件,以便在Eclipse中能够正常查看源代码。 #### 反编译工具的选择与安装 为了解决“Source not found”的问题,首先需要选择一个可靠的反编译工具。...
本文将详细介绍如何在Eclipse中进行Class文件的反编译。 首先,我们需要一个反编译工具。jad.exe是Java的反编译器,它可以将字节码转换回接近原生Java源代码的形式。JAD有很多版本,包括命令行版和图形用户界面版,...
在IT行业中,开发人员经常需要对已编译的.jar文件进行反编译,以便查看其中的源代码。这是因为有时我们可能需要理解别人的代码实现,或者查找某个类或方法的实现细节。Eclipse作为一款强大的Java集成开发环境,提供...
本文将详细介绍如何在Eclipse中使用反编译工具jadclipse来查看这些类文件。 首先,反编译是将已编译的字节码文件(.class)转换回可读的源代码(.java)的过程。在Java领域,这通常用于研究第三方库或处理混淆过的...
总的来说,"eclipse反编译工具"是一个增强Eclipse功能的插件,它整合了jad等反编译器,使得开发者能够在Eclipse环境中直接对.class文件进行反编译,查看源代码。安装该工具需要将下载的压缩包解压到Eclipse的`...
在这个"eclipse反编译class文件配置"的主题中,我们将深入探讨如何在Eclipse中进行配置以实现这一目标。 首先,我们需要知道反编译的概念。反编译是将已编译的机器码转换回接近原始源代码的过程。在Java中,由于...
Eclipse反编译工具是开发过程中非常实用的插件,尤其对于Java开发者而言,它能够帮助我们查看已编译的`.class`文件源代码,这对于理解已有的库或框架内部工作原理,或是调试黑盒代码时非常有帮助。Eclipse本身并不...
在反编译.class 文件时,需要使用专门的反编译工具。目前有多种反编译工具可供选择,如 JAD、JD-GUI、CFR 等。其中,JAD 是一个流行的反编译工具,它可以将.class 文件反编译成.java 文件。 二、JAD 反编译工具的...
1. 在Eclipse的Package Explorer或Navigator视图中,找到需要反编译的`.class`文件,右键点击并选择“Open With” > “Jadclipse”。 2. JADclipse将会显示反编译后的源代码。请注意,由于反编译过程的不确定性,...
6. **指定Jad路径**:在配置界面中,指定`jad.exe`的完整路径以及`Jadtemp`文件夹的路径,使得Eclipse能够调用Jad进行反编译操作。 7. **设置默认打开方式**:接下来,你需要设定Eclipse在遇到无源代码的`.class`...
安装完成后,重启Eclipse,就可以使用Fernflower对.class文件进行反编译。只需右键点击class文件,选择相应的反编译选项,就可以查看源代码形式的反编译结果,从而提高开发效率和理解代码的能力。 总的来说,...