如何快速反編譯一個java項目

前言

這個事情的應用場景是可能進入公司你接手的項目僅僅有jar包或者war包,你想看報錯提示或者平臺遷移的時候因爲看不到代碼無法定位問題,git和svn又無法找到源碼,那麼就需要手動反編譯整個項目,這個工程比較龐大而且很浪費時間。
還有就是你獲得了一份執行程序,想要逆向分析瞭解程序是如何實現的,就需要反編譯這個項目。
那麼如何快速的反編譯一個項目呢。
版權聲明:本文爲CSDN博主「_William_Cheung」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq496013218/article/details/83414813

步驟

工具下載地址:https://varaneckas.com/jad/

這裏我們選取jad工具反編譯項目。(工具方法很多,避免選擇困難我選這一種)
將jad解壓後放到%JAVA_HOME%/bin目錄下即可,通過命令去執行反編譯。
將需要反編譯的多個文件放在指定路徑下,例如(當前分佈式項目都包含多個modules)。爲了方便操作,我將文件放在D盤根目錄下的classes文件夾中。打開運行—>輸入cmd—>輸入D:,將路徑指到D盤根路徑下。
(翻譯一下就是d盤根目錄建立classes文件夾放.class的文件,再建一個src文件夾放反編譯過來的源代碼)

輸入編譯命令,命令:jad -o -r -s java -d src classes/**/*.class

src文件夾裏面都是反編譯後的java源文件。

jad命令的參數含義如下:
-o:覆蓋舊文件,而且不用提示確認。
-r:重新加載生成包結構。
-s (java):定義輸出文件的擴展名。jad爲默認擴展名,我們反編譯後當然是要.java源文件了。
-d:輸出文件的目錄。src表示反編譯後的所有文件都放在src目錄下。
classes//*.class:classes是需要反編譯的文件夾的名字,整個表示classes目錄下的所有class文件。也可以寫成這樣/*.class,這表示當前目錄及其子目錄下所有的class文件(包含所有的子目錄)。

注意

另外補充幾點,一般這種項目都會引用到jar包,將這些引用的jar都反編譯顯然是沒有必要的,反編譯的時候就選取那些之前開發自己寫的那一部分代碼進行反編譯即可,自己在開發工具中新建項目,然後把共有jar包自己引入(maven還是導包buildpath)把編譯後的源碼src文件夾替換空項目的src目錄,反編譯過程就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章