1. 程式人生 > >jar 反編譯--Jadclipse

jar 反編譯--Jadclipse

Jar 包(Java Archive)是對 Java 程式的打包,它可能包含原始碼,也可能沒有。

對於有包含原始碼的 Jar 包,在 Eclipse 工程裡設定好 source code 路徑後能直接檢視到遠嗎,對於理解程式碼、除錯的幫助很大。而如果 Jar 包沒有打包原始碼,實際上也可以通過反編譯的方法得到原始碼。道理很簡單,Java 規範中,生成的.class 檔案所包含的資訊完全能逆向的重構出原始碼。

當然,一些程式碼為了防止自身 Jar 包被人反編譯,會做程式碼混淆掩人耳目。其中最簡單的一種方法就是是通過修改類名、變數名、方法名等方法讓反編譯的原始碼難於閱讀理解。不過這個方法在混淆的時候需要特別注意:不能混淆對外提供介面的類。如果混淆了提供給外部的 API 介面的名字,整個工程就無法被正常使用了。

Jadclipse 的安裝使用

Jadclipse 外掛的反編譯功能源於 Java 反編譯工具 Jad。但用裸的 Jad 來命令列執行不太友好,於是就有了 Jadclipse。

1.下載 Jad 反編譯工具

下載好 Jad 工具,解壓後放在合適的路徑下。 Jad 下載連結

2.安裝外掛

按照 Eclipse 版本下載匹配的 Jadclipse 外掛:下載連結。(這個外掛的最近修改是 2007 年,只要不是使用的老掉牙的 Eclipse,都可以下載最新的外掛版本 jadclipse3.3)。

解壓後,將對應版本的.jar 包放入 Eclipse 的外掛目錄(eclipse/plugins)下。

3.配置 Jadclipse

外掛中有兩個一定要配置好的選項:

Jad 執行檔案的路徑
.class 檔案開啟時的關聯工具
以下配置路徑的方式可能 Windows 跟 Mac 版本的 Eclipse 各不相同,不過都比較簡單,可以自行 Google。

3.1 Jad 執行檔案路徑

在 Eclipse 中,依次開啟 Preference -> Java -> JadClipse,修改Path to decompiler的值,定位到 Jad 的執行檔案路徑。

3.2 .class 關聯工具

由於 Eclipse 預設.class 檔案開啟使用的是 Class File Viewer,如果.class 沒有關聯的原始檔,則無法檢視原始碼。需要將.class without source型別的檔案的關聯編輯器首選設定為 JadClipse Class File Viewer。

開啟方式如下: Windows—> Perference—>General->Editors->File Associations

4.測試

配置好後,可能需要重啟 Eclipse(或許是外掛本身不夠 Robust,博主在沒有重啟的情況下嘗試開啟沒有附帶原始碼的.class 檔案時失敗了,重啟後一切 ok)。
將相應的 Jar 包加入到工程中。

點選其中的某個.class 檔案,即可顯示出它的原始碼。檔案的頭部會有 Jad 的相關資訊:

/*jadclipse*/// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) radix(10) lradix(10)