怎么将class文件反编译成java文件
方法:1、下载“jad.exe”插件,将其和“.class”文件放置在同一目录下;2、打开cmd命令窗口,使用cd命令进入“Jad.exe”所在目录;3、执行“Jad -d java文件存放路径 -sjava class文件路径”命令即可。
本教程操作环境:windows7系统、java8版、DELL G3电脑。
一、工具/材料
jad.exe反编译插件
下载地址可参考:
https://varaneckas.com/jad/
ttp://pan.baidu.com/s/1qWmNlww
二、方法/步骤
说明
- 在众多的JAVA反编译工具中,有几种非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End
Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java
Decompiler、NMI’s Java Class
Viewer和国产的JAVA源代码反编译专家等等。JAD本身是一个命令行工具,没有图形界面,上述的这些工具大多是在JAD内核的基础之上加了一个图形界面而已。这么多种产品的共同选择,足可证明JAD在JAVA反编译领域中的尊贵地位。
操作
将jad.exe和.class文件放置在同一目录下(非必需,可随意,后面会讲解)
开始-运行(或Win+R)-cmd打开系统命令窗口,进入Jad.exe所在目录
例如:
f: cd F:\Jad
输入命令Jad -d F:\Jad\test -sjava test\*.class
回车 即可生成Java文件
示例:
Jad -d F:\Jad\test -sjava test\*.class
备注说明: *.class 中*是通配符,默认选中此目录下所有.class文件,如只需要反编译某一个.class文件,可直接写成 文件名+.class
如:Jad -d F:\Jad\test -sjava test\CaseInfoSaveAction.class
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视频教程
以上就是怎么将class文件反编译成java文件的详细内容,更多请关注其它相关文章!