網頁

2020/11/22

Java 使用javap反組譯class檔 disassemble compiled class files

使用javap指令反組譯class檔的方式如下。

例如HelloWorld.java內容如下,編譯後的檔案為HelloWorld.class

HelloWorld.java

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World");
    }

}

HelloWorld.class反組譯的指令為javap -c HelloWorld。執行後可看到Java虛擬機指令集(Java Virtual Machine Instruction Set)組成的操作命令


$ javap -c HelloWorld
Compiled from "HelloWorld.java"
public class HelloWorld {
  public HelloWorld();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  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
}

沒有留言:

張貼留言