在Eclipse中反编译Class⽂件的⽅法
学习中,需要反编译Java的class⽂件。我的开发⼯具是windows xp+Eclipse3.2.2+MyEclipse。我到了jad反编译⼯具,在互联⽹上到了⼀些很有⽤的安装步骤。下⾯记录了我的安装过程。
  ⼀、下载
  1。下载 jad ⼯具,在官⽅⽹站没有下载到,在CSDN上可以下载。
  2。下载插件 net.sf.jadclipse_3.3.0.jar。
  ⼆、安装
  1。安装jad⼯具。下载后解压,然后将解压后的⽂件复制到%JAVA_HOME%\bin⽬录下⾯(可以将放到任意位置,只要记住其存放路径就好,下⾯要⽤到)。
  2。安装插件。Eclipse中的插件安装可以参考:Eclipse使⽤技巧(三)Eclipse中插件的安装。
  我⽤复制的⽅法:直接把net.sf.jadclipse_3.3.0.jar拷贝到%ECLIPSE_HOME%\plugins⽬录下。
  把使⽤link的⽅法拷贝到下⾯:建⽴D:\Myplugins\net.sf.jadclipse_3.3.0\eclipse\plugins的⽬录结构,
将jadclipse_3.2.4.jar放到plugins ⽬录下⾯(注:其中D:\Myplugins为你⾃⼰定义的⼀个专门放置插件的⽬录)。再在%ECLIPSE_HOME%\links⽬录下⾯建⽴⼀个
net.sf.jadclipse_3.3.0.link⽂件(该⽂件名随便取)。⽂件⾥⾯内容为:path=D:/Myplugins/net.sf.jadclipse_3.3.0。
  三、配置
  1。启动Eclipse,打开Window->Preferences->Java->JadClipse,如果到了JadClipse,即JadClipse插件被激活了。设置jad路径:
  2。在Eclipse的Windows—> Perference—>General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”。
  四、使⽤jad反编译
  1。在DOS窗⼝中,到class所在⽬录,直接运⾏ >jad DB.class,将在该⽬录中⽣成DB.jad⽂件。运⾏ >jad -sjava DB.class,将在该⽬录中⽣成DB.java⽂件
  2。在Eclipse ⼯作台使⽤:
  1)把class⽬录加⼊项⽬:(这⼀步许多⽂档都没有写到,花了我很多时间)
  1.1)项⽬--〉属性--〉java buildpath--〉add class folder (如 a)--〉OK
  1.2)a--〉import--〉General-->File system-->Browse-->OK
  2)双击class ⽂件,出现可爱的java⽂件,编译成功。
  五、批量反编译
  以下部分转载 菠萝⼤象的⽂章:
  现在有⼈会说了,这样⼀个⼀个的看太⿇烦了,我需要⼀次把⼀个JAR包下的所有class⽂件反编译成java源⽂件。这样的想法是可⾏的,还是使⽤jad⼯具。
  3、批量反编译
  因为之前我们已经将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脚本来完成这个⼯作,内容⽐较简单,加了注释,应该很好明⽩,脚本⽂件名为l,它放在src⽬录下,和反编译所得的包处在同⼀层。
<?xml version="1.0" encoding="GBK"?>
<project name="decompile" basedir="." default="native2ascii">
<!-- 定义输出⽬录 -->
<property name="build" value="build"/>
eclipse怎么打开已有的java文件<!-- 清除输出⽬录 -->
<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,回车。可以看到如下结果:
反编译的内容基本结束。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。