Java 如何进行反编译生成.java文件(javap、jad下载安装使用)
2021/11/28 17:11:04
本文主要是介绍Java 如何进行反编译生成.java文件(javap、jad下载安装使用),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1. 前言
- 2. javap
- 3. javap的小问题
- 4. javap 与 jad的区别
- 5. jad工具
- 1. 安装
- 2. 具体使用
- 6. 参考文章
1. 前言
- 为什么我们需要进行反编译?
因为有时候需要更加深入了解代码的具体细节,而只是看class字节码文件我们又看不懂,因此则需要反编译。 - 常用的反编译工具:javap、jad
2. javap
-
这是jdk自带的工具,可以对代码反编译,查看java编译器生成的字节码文件。
-
举个例子:
下面这是个枚举代码:public enum TypeEnum { A("1"), B("2"), C("3"); private String name; private TypeEnum(String name) { this.name = name; } public String getName(){ return this.name; } }
经过编译之后生成class文件是TypeEnum.class,我们使用javap命令对其进行反编译:
如上图,似乎我们也就只能看见一些基本的属性,方法定义啥的,看不出什么东西。
因此,使用javap -c TypeEnum.class 命令,让其生成更加详细的内容:
如上图:javap生成的内容其实是让我们可以理解的一些字节码,具体内容都比较详细,可以从这里看得出代码的一些隐藏的细节。
3. javap的小问题
- 当你掌握一小部分字节码有所掌握,确实javap可以看到具体的细节,但是总让人感觉看的不是很舒服,不是很习惯。
- 因此,我们需要额外的工具,进行反编译并生成java文件的。
4. javap 与 jad的区别
- javap生成的并不是java文件,而是可以让我们看得懂的字节码文件。
- jad生成的是java文件,更加一目了然。
5. jad工具
1. 安装
- jad是一个的反编译工具,只要下载一个执行工具,就可以实现对class文件的反编译了。
- 下载地址:https://varaneckas.com/jad/
- 下载好的压缩包,解压出来,我们会看见两个文件:
- 设置环境变量。
- 测试:
2. 具体使用
-
输入jad TypeEnum.class。之后就会在 TypeEnum.class所在路径生成一个TypeEnum.jad文件。
-
之后用记事本方式打开该文件,或者将TypeEnum.jad改为TypeEnum.Java,文件内容不变。
-
或者输入jad -sJava TypeEnum.class,反编译结果以.Java为扩展名。
-
例子:
-
查看反编译生成的TypeEnum.java 文件。也可以具体看见代码隐藏的细节。比如static 代码块执行了什么东西,一目了然。
public final class TypeEnum extends Enum { public static TypeEnum[] values() { return (TypeEnum[])$VALUES.clone(); } public static TypeEnum valueOf(String name) { return (TypeEnum)Enum.valueOf(com/jin/king/TestEnums/TypeEnum, name); } private TypeEnum(String s, int i, String name) { super(s, i); this.name = name; } public String getName() { return name; } public static final TypeEnum A; public static final TypeEnum B; public static final TypeEnum C; private String name; private static final TypeEnum $VALUES[]; static { A = new TypeEnum("A", 0, "1"); B = new TypeEnum("B", 1, "2"); C = new TypeEnum("C", 2, "3"); $VALUES = (new TypeEnum[] { A, B, C }); } }
6. 参考文章
- https://www.cnblogs.com/helloworld2048/p/10916316.html 这个文章写的比较详细,大家可以看看。
这篇关于Java 如何进行反编译生成.java文件(javap、jad下载安装使用)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南