如何.class文件反编译成为.java文件

一、工具/材料

jad.exe反编译插件       下载地址:[我的百度网盘-无密码](http://pan.baidu.com/s/1qWmNlww)

二、方法/步骤

1.说明

  • 在众多的JAVA反编译工具中,有几种非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End
    Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java
    Decompiler、NMI’s Java Class
    Viewer和国产的JAVA源代码反编译专家等等。JAD本身是一个命令行工具,没有图形界面,上述的这些工具大多是在JAD内核的基础之上加了一个图形界面而已。这么多种产品的共同选择,足可证明JAD在JAVA反编译领域中的尊贵地位。

2.操作

 1. 将jad.exe和.class文件放置在同一目录下(非必需,可随意,后面会讲解)

如何.class文件反编译成为.java文件_第1张图片

2.开始-运行(或Win+R)-cmd打开系统命令窗口,进入Jad.exe所在目录            
  例如: 1. f:  2. cd F:\Jad 

如何.class文件反编译成为.java文件_第2张图片

3.输入命令Jad -d F:\Jad\test -sjava test\*.class 回车  即可生成Java文件

如何.class文件反编译成为.java文件_第3张图片

 4.示例:
   Jad -d F:\Jad\test -sjava test\*.class

如何.class文件反编译成为.java文件_第4张图片
备注说明: *.class 中*是通配符,默认选中此目录下所有.class文件,如只需要反编译某一个.class文件,可直接写成 文件名+.class

如:Jad -d F:\Jad\test -sjava test\CaseInfoSaveAction.class

5.Jad命令--帮助提示:☟☟☟☟☟☟

-a - 用JVM字节格式来注解输出
-af - 同 -a,但是注解的时候用全名称
-clear - 清除所有的前缀
-b - 输出多余的括号 (e.g., if(a) { b(); }, default: no)
-d < dir >- 指定输出文件的文件目录
-dead -试图反编译代码的dead 部分(default: no)
-disass - 不用用字节码的方式反编译 (no JAVA source generated)
-f - 输出整个的名字,无论是类还是方法
-ff -输出类的成员在方法之前 (default: after methods)
-i - 输出所有的变量的缺省的最初值
-l< num >- 将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)
-pa -用于生成源文件中的所有包的前缀
-pc -带有数字名称的类的前缀(默认值:_cls)
-pe -未使用异常名称的前缀(默认值:_ex)
-pf -带数字名称字段的前缀(默认值:_fld)
-pi -使用。
-pl -带数字名称的局部变量前缀(默认值:_lcl)
-pm -带有数值名称的方法的前缀(默认值:_mth)
-pp -带有数值名称的方法parms前缀(默认值:_prm)
-pv -将具有相同类型的字段打包成一行(packfields)
-r -恢复包目录结构
-s -输出文件扩展名(默认:.jad)
-空格-关键字(if, while等)和表达式之间的输出空格
-stat -显示处理过的类/方法/字段的总数
-t -使用空格进行缩进(默认值:4)
-t -使用制表符代替空格进行缩进
-v -反编译时显示方法名

你可能感兴趣的:(Java)