JAVA语言是1995年5月由SUN公司发布的,由于其安全性高、代码优化、跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位。
不过,JAVA最突出的跨平台优势使得它不能被编译成本地代码,而要以中间代码的形式运行在虚拟机环境中,这使得JAVA的反编译要比别的高级语言容易实现,并且反编译的代码经过优化后几乎可以与源代码相媲美。
为了更好地保护知识产权,避免本公司的智力成果轻易被人窃取,开发者有必要对反编译工具深入了解,以便有针对性地采取保护措施。
注:安装之前请关闭Eclipse。
1. 下载Jad.exe
地址:http://www.varaneckas.com/sites/default/files/jad/jad158g.win.zip
解压后把jad.exe放在jdk安装目录的bin目录下。比如:G:Program FilesJavajdk1.7.0_01in
2. 下载jadclipse的安装包
得到此jar包后,直接将此jar包复制到Eclipse的安装目录下的plugins文件夹中。
例如:G:Program FilesJavaeclipseplugins
3. 打开Eclipse,配置JadClipse:选择菜单栏的Window--preferences--左侧文本框出输入jad 回车 搜索定位到JadClipse选项,如下图:
注意配置右侧第一个参数 “Path to decompiler”,即jad.exe所在的绝对路径。注意这里是绝对路径,使用系统变量%JAVA_HOME%injad.exe 也是不行的哦(事先已经配置%JAVA_HOME%为jdk路径)。
至于第二个参数“Directory for temporary files” ,可以自由配置。顾名思义,这个路径是用来保存编译的临时文件的。
至于在preferences里面通过Java--JadClipse展开的情况,只需要配置JadClipse目录上的以上两个参数,此目录下的其他目录如Debug、Directives、Formatting、Misc上的参数可以不做配置。
如此配置后,现在打开*.class文件,看反编译后的源代码轻而易举。
注意,这样设置后,你双击某些 .class 文件仍不能反编译,这是因为这些class文件没有附加的源码,要想解析所有 class 文件,还需做如下设置: 在File Type 下选择 *.class without source,然后在 Associated Editors下单击add,添加JadClipse Class File Viewer,然后选择JadClipse Class File Viewer,并点击右侧的default按钮,将 JadClipse Class File Viewer 设置为 *.class without source 的默认编辑器。
上述方式不行试试下面的方式:
1。下载:
(1)jadclipse插件:
到SourceForge.net(http://sourceforge.net/projects/jadclipse/)下载插件:
下载jadclipse_3.1.0.jar版本,支持eclipse3.1M6以上
下载jadclipse_3.2.0.jar版本,支持eclipse3.2M3和eclipse3.2M4.
下载jadclipse_3.2.2.jar版本,支持eclipse3.2M5以上。
(2)jad1.5.8e编译程序
下载地址http://www.kpdus.com/jad.html#download
下载后解压。解压缩后将jad.exe拷贝到JRE的bin目录下,如Javajre1.5.0_06in
2。加载插件:
若插件包为:net.sf.jadclipse_3.2.4.jar
(1)直接放入eclipseplugins下;(2)插件统一管理:建立如下目录树:IDEeclipsePluginjadclipseeclipseplugins,
然后将net.sf.jadclipse_3.2.4.jar放入这个路径的plugins下。
启动eclipse,在Help->About Eclipse SDK->Plug-in Details下就可以看到JadClipse插件信息了。
3。设置:
启动eclipse,打开:Window->Preferences->Java->JadClipse,假如没有找到JadClipse,检查插件安装的版本是否与你安装的eclipse版本
对应。
在这里可以很清楚地进行设置了。
可以在Eclipse的Windows—> Perference—>General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”,一般插件会自动关联。
(1)Path to decompiler,这里设置反编译工具jad的全路径名,比如:%JAVA_HOME%injad.exe.
若你在环境变量中设置了path指向Java安装路径的bin下就不用改了,默认是jad。
(2)Directory for temporary files,这里设置临时文件路径。
至于Window->Preferences->Java->JadClipse目录下的Debug,Directives,Formatting,Misc目录中的参数设置,默认就够了。
4.一切自动化 ,查看.class在eclipse中双击就OK了。
用上这个后jad那个程序好像就可以放兜里了,不过还是附上它的命令使用说明:
反编译单个JAVA语言的CLASS文件,在命令行输入:jad example.class回车.
让后在你当前目录会生成一个Example.jad的文件!把它的后缀改为java就可以阅读了!(你可以忽略.class后缀)
选项 -s<后缀>允许你更改输出文件的后缀.
jad -sjava example.class
这条命令生成文件'example.java'.当你同时使用选项-o和-sjava时要小心了,因为Jad会意外的覆盖掉你的源文件.
jad使用JAVA的CLASS文件名作为默认的输出文件名.举个例子,如果CLASS文件'example.class'包含了JAVA的CLASS'test'那么jad会优先生
成'test.jad'.如果你想要指定一自己的输出文件名,请使用重定向:
jad -p example.class >myexm.java
选项-d允许你指定输出文件到另外一个文件夹,这个文件夹将默认创建在当前目录.举个例子:
jad -o -dtest -sjava *.class
(或者jad -o -d test -s java *.class,两者是一样的)
这条命令反编译所有.class文件在当前目录并且放置所有输出文件在目录'test'以.java为后缀名.
如果你想反编译整个java类树,用如下命令:
jad -o -r -sjava -dsrc tree/**/*.class
这条命令反编译所有.class文件位于'tree'以及子目录并且建立输出文件在'src'目录的相对子目录中依照类的包名.举个例子,如果文
件'tree/a/b/c.class'包含类'c'来自包'a.b',那么数车文件的名字是'src/a/b/c.java'.
万一你想要检查输出文件的精确度或者就是仅仅是好奇,这儿有个选项-a,它让jad使用JAVA虚拟机字节码作为注释添加在输出文件中.
jad支持内部类和匿名类,当jad把通配符搭配到输入的文件名时,它自动的跳过匹配的内部类.
下面介绍各种反编译器:
-
Java反编译器 Java Decompiler
这款反编译器叫 "Java Decompiler", 由 Pavel Kouznetsov开发,目前最新版本为0.2.5. 它由 C++开发,并且官方可以下载 windows、linux和苹果Mac Os三个平台的可执行程序。 其有下面几个功能: 1. 支持对整个Jar文件进行反编译,并本源代码可直接点击进行...更多Java Decompiler信息
最近更新: jd gui 0.3.4发布, java 反编译工具 发布于 1年前
-
Java反编译工具 jad
jad 是一个使用非常广泛的 Java 反编译工具。更多jad信息
-
APK反编译工具 Gapktool
强大的APK反编译工具 本软件集成 jd-gui、jad、dex2jar、apktool 请吧Gapktool放到英文路径下 1.运行Gapktool.bat 2.apk文件和输出目录使用英文路径 默认使用jad反编译,如果编译出来的java代码难以阅读,请选择使用jd-gui反编译。 保留smali文件删除gen、...更多Gapktool信息
-
dex2jar
dex2jar 是一个用来将 Android 的 Dalvik Executable (.dex) format 文件转成 Java 类文件的工具。更多dex2jar信息
-
Java反编译插件 Jadclipse
Jadclipse 是一个集成Eclipse 的Java反编译插件更多Jadclipse信息
最近更新: Eclipse的反编译插件 JadClipse 3.4.0 发布于 4年前
-
Java 反编译器 JD-GUI
JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse平台下的插件JD-Eclipse更多JD-GUI信息
-
Java反编译器 jdec
jdec是一个Java反编译器。它能够把出现在一个.class文件中的字节码还原成Java源代码,反编译的结果几乎与原始Java文件相同。它还自带一个利用swing开发的用户操作界面。更多jdec信息
-
Java Class文件的反编译工具 uuDeJava
uuDeJava是Java Class文件的反编译工具。反编译的Java源程序被输出到Class的相同目录。内部使用jad.exe。 反编译Class文件时,可以直接点击Class文件(关联后),或者选中文件或目录发送到uuDeJava的快捷方式。还可以拖动文件或目录到uuDeJava的主窗口。 通过...更多uuDeJava信息
-
swf反编译工具 swfparser
swfparser 是一个 Java 编写的简单的用来反编译 swf 的工具,只支持 Flash 8 和 Flash MX 2004,Flash 9 不支持。更多swfparser信息
-
dex文件反编译工具 Dedexer
Dedexer是目前在网上能找到的唯一一个反编译dex文件的开源工具[ ]。Dedexer下载后需要编译才能使用。如果你用过ant编译java程序,那么编译Dedexer是一件非常简单的工作。更多Dedexer信息
-
【商业】Java反编译器 DJ Java Decompiler
使用DJ Java Decompiler你可以反编译class文件并且可以保存为文本文件或其它格式,它很容易使用。DJ Java Decompiler是Windows 2000,Windows XP,Windows 2003,Windows Vista,Windows 7环境下的反编译器,它可以从已经编译的二进制class文件重新创建最初...更多DJ Java Decompiler信息
-
Java 反向工程软件 Minjava
Minjava 是一个 Java 反向工程软件,可帮助理解已存在一些 Java 软件的架构和行为。更多Minjava信息