JAD反编译器下载 Java反编译工具 JAD V1.5.8g 免费绿色版

Jad(JAva Decompiler)是一款Java的反编译器,知识兔可以通过命令行把Java的class文件反编译成源代码。需要的朋友可下载试试!

JAD是什么

JAD 是一款老牌的、经典的、使用起来简单的 Java 反编译工具。大家都知道,将源代码转换成二进制执行代码的过程叫“编译”,比如将 Java 源代码编译成 .class 字节码文件;那么把字节码文件转换成代码的过程就叫“反编译”。

如果知识兔你在使用编写代码的时候遇到找不到源代码的第三方库,而且知识兔你又需要看看这个库的具体实现,那么你就需要使用这个东西。而且知识兔如果知识兔你是使用Eclipse的话,还有一个Eclipse插件JadClipse,JadClipse分享一个class文件查看器可以直接打开class文件查看其反编译后的源代码。

JAD 环境变量配置

下载好 JAD 并解压后(镜像),将看到:

jad.exe (无法直接运行)
Readme.txt (使用说明)

为了更便捷的使用 jad,知识兔可以将其加入到环境变量中。

新建 JAD_HOME 环境变量。

JAD反编译器下载 Java反编译工具 JAD V1.5.8g 免费绿色版

加入到系统 PATH 变量中。

使用说明

[1] 反编译一个class文件:jad example.class,会生成example.jad,用文本编辑器打开就是java源代码

[2] 指定生成源代码的后缀名:jad -sjava example.class,生成example.java

[3] 改变生成的源代码的名称,知识兔可以先使用-p将反编译后的源代码输出到控制台窗口,然后知识兔使用重定向,输出到文件:jad -p example.class > myexample.java

[4] 把源代码文件输出到指定的目录:jad -dnewdir -sjava example.class,在newdir目录下生成example.java

[5] 把packages目录下的class文件全部反编译:jad -sjava packages/*.class

[6] 把packages目录以及子目录下的文件全部反编译:jad -sjava packages/**/*.class,不过你仍然会发现所有的源代码文件被放到了同一个文件中,没有按照class文件的包路径建立起路径

[7] 把packages目录以及子目录下的文件全部反编译并建立和java包一致的文件夹路径,知识兔可以使用-r命令:jad -r -sjava packages/**/*.class

[8] 当重复使用命令反编译时,Jad会提示“whether you want to overwrite it or not”,知识兔使用-o可以强制覆盖旧文件

[9] 还有其他的参数可以设置生成的源代码的格式,知识兔可以输入jad命令查看帮助,详见下文。

[10] 当然,你会发现有些源文件头部有些注释信息,不用找了,jad没有参数可以去掉它,用别的办法吧。

最后,jad不能直接反编译jar包,直接解压了再反编译吧

jad 命令

首先,看一下jad的帮助提示

-a – 用JVM字节格式来注解输出
-af – 同 -a,但是注解的时候用全名称
-clear – 清除所有的前缀
-b – 输出多于的括号 (e.g., if(a) { b(); }, default: no)
-d

– 指定输出文件的文件目录
-dead -试图反编译代码的dead 部分(default: no)
-disass – 不用用字节码的方式反编译 (no JAVA source generated)
-f – 输出整个的名字,无论是类还是方法
-ff -输出类的成员在方法之前 (default: after methods)
-i – 输出所有的变量的缺省的最初值
-l – 将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)

其次.常用命令

jad -o -r -sjava -dsrc test.class

tree目录下的所有*.class文件
jad -o -r -sjava -dsrc tree/**/*.class

unix可以表示为:jad -o -r -sjava -dsrc ‘tree/**/*.class’

指定输出文件的名字的话,用以下的转移命令

jad -p example1.class > myexm1.java

输出带字节码注释和源码的(最常用)

jad -o -a Test.class > ss.java

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看下载!

如何免费获取密码?

点击下载

评论