详解JDK自带javap命令反编译class文件和Jad反编译class文件
什么是javap命令和Jad反编译?
- javap命令是JDK自带的反编译工具,用于反编译class文件。
- Jad是一款免费的Java反编译器,可以将class文件反编译为Java源代码。
使用javap命令反编译class文件
- 打开命令行工具,进入.class文件所在的目录。
- 键入
javap -c -p classfile
,其中classfile为需要反编译的.class文件名。 -c
表示反编译代码时显示代码中的所有指令。-p
表示反编译代码时显示代码中的所有类和成员变量名以及修饰符。- 查看输出结果,即为反编译后的代码。
示例:
$ javap -c -p MyClass.class
Compiled from "MyClass.java"
public class MyClass {
public static void main(java.lang.String[]);
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String Hello World!
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
使用Jad反编译class文件
- 下载Jad,并放在合适的位置(比如
C:\jad
下)。 - 将.class文件复制到Jad所在的目录下(比如
C:\jad
)。 - 打开命令行工具,进入Jad所在目录。
- 键入
jad -sjava classfile
,其中classfile为需要反编译的.class文件名。 -sjava
表示将反编译结果输出到一个.java文件中。- 查看输出结果,即为反编译后的代码。
示例:
$ jad -sjava MyClass.class
Parsing MyClass.class...Generating MyClass.java
反编译后的文件MyClass.java内容:
public class MyClass
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
总结
Javap和Jad都是Java反编译的利器,使用简单方便,并且效果好。其中,Jad还支持反编译多个class文件,并可以将整个目录下的.class文件全部反编译。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad) - Python技术站