java怎么反编译_java如何进行反编译

  • Post author:
  • Post category:java


d85fc7965f2b7780d1b832a9ed6c7654.png

反编译的过程与编译刚好相反,就是将已编译好的编程语言还原到未编译的状态,也就是找出程序语言的源代码。就是将机器看得懂的语言转换成程序员可以看得懂的语言。Java语言中的反编译一般指将class文件转换成java文件。

Java常用反编译工具

本文主要介绍4个Java的反编译工具:javap、jad和cfr以及可视化反编译工具JD-GUI

JAVAP

javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码。javap和其他两个反编译工具最大的区别是他生成的文件并不是java文件,也不像其他两个工具生成代码那样更容易理解。拿一段简单的代码举例,如我们想分析Java 7中的switch是如何支持String的,我们先有以下可以编译通过的源代码:public class switchDemoString {

public static void main(String[] args) {

String str = “world”;

switch (str) {

case “hello”:

System.out.println(“hello”);

break;

case “world”:

System.out.println(“world”);

break;

default:

break;

}

}

}

执行以下两个命令:javac Decompilation.java

javap -c Decompilation.class

生成代码如下:Compiled from “Decompilation.java”

public class Decompilation {

public Decompilation();

Code:

0: aload_0

1: invokespecial #8 // Method java/lang/Object.””:()V

4: return

public static void main(java.lang.String[]);

Code:

0: ldc #16



版权声明:本文为weixin_36371053原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。