一、Jad與jd-gui的關係
在解析jd-gui的使用方法之前,需要先了解一下Jad與jd-gui的關係。
Jad是一款經典的Java反編譯器,可以將class文件反編譯成java源碼。
而jd-gui是基於Jad的一款圖形化界面工具,它可以直接打開jar包、class文件等,將class位元組碼文件反編譯成Java源代碼,能夠輕鬆查看代碼並了解代碼邏輯。
因此,使用jd-gui需要先下載Jad,並將其加入jd-gui。
二、jd-gui使用方法
1、基本操作
首先打開jd-gui,點擊「文件」菜單,選擇「打開」,選擇需要反編譯查看的jar包或class文件,然後就可以直接瀏覽源代碼了。
在頂部的工具欄上,有一組常用的操作按鈕:打開文件、保存文件、複製、查找、前進、後退等。在瀏覽代碼的過程中,可以按住Ctrl鍵並滾動滑鼠滾輪來調整字體大小,方便查看。
2、反編譯配置
在菜單欄中選擇「選項」,彈出選項窗口。這裡可以設置Java反編譯器(即Jad)的選項,如設置JVM參數、自動保存反編譯結果等。
在選項窗口的「文件類型」選項中可以設置可以打開的文件類型,例如class、jar、zip等。設置好文件類型之後,在打開文件時就只會顯示符合類型的文件了。
3、查看位元組碼
在查看反編譯的源代碼時,可以點擊頂部菜單中的「位元組碼」按鈕,查看該類文件的位元組碼信息。
通過查看位元組碼可以更深入地了解類的實現細節,可以看到類的各種成員變數、方法以及其他屬性的位元組碼信息。可以通過位元組碼知道這個類在Java虛擬機中是怎麼實現的。
4、查找關鍵詞
在頂部工具欄中,有一個放大鏡的圖標,點擊後可以輸入需要查找的關鍵詞。jd-gui會自動在源代碼中查找這個關鍵詞並高亮顯示。
同時,可以在選項中設置「統計信息」選項,可以讓jd-gui為我們生成代碼中包含特定關鍵詞的統計信息報告。
5、導出源代碼
在頂部菜單中選擇「文件」和「全部另存為」選項,可以將整個jar包或class文件導出成一個壓縮包或者單獨的文件夾,裡面包含了反編譯後的所有Java源代碼。
這個功能非常實用,可以用於備份源代碼或者直接進行修改、編譯等操作。
三、使用示例
最後,我們來看一個使用jd-gui反編譯jar包的示例:
import java.util.stream.Collectors; public class Main { public static void main(String[] args) { System.out.println("Hello, world!"); System.out.println(getNumbers(10)); } private static String getNumbers(int max) { return java.util.stream.IntStream.rangeClosed(1, max) .filter(num -> num % 2 == 0) .mapToObj(Integer::toString) .collect(Collectors.joining(", ")); } }
假設我們有一個包含這個類的jar包文件「test.jar」,可以通過jd-gui打開,反編譯出源代碼。
結果如下:
import java.util.stream.Collectors; public class Main { public static void main(final String[] args) { System.out.println("Hello, world!"); System.out.println(getNumbers(10)); } private static String getNumbers(final int max) { return (String)java.util.stream.IntStream.rangeClosed(1, max).filter(num -> num % 2 == 0).mapToObj(Integer::toString).collect(Collectors.joining(", ")); } }
可以發現,jd-gui反編譯出的代碼非常清晰易讀,可以輕鬆理解代碼邏輯,從而進行對源碼的學習、修改或者擴展。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/186114.html