java中jar包反編譯以及遇到轉換失敗時的對策

jar包反編譯工具:

1. jd-gui

2. XJad2.2

 

以上兩個都能反編譯jar包

jd-gui的好處是界面友好,能夠直接查看jar包中的源代碼,目錄結構等等;

通過選擇  File -> Save All Source, 能把整個jar包保存成zip包,而且裏面的所有.class文件自動轉換成了.java文件,從而達到了反編譯的目的;

弊端是,萬一轉換過程中碰到包中的某個文件無法轉換時,會導致整個抓換過程失敗,又因爲jd-gui是將jar包轉換成一個zip包,所以,期間的任何一個失敗,將導致整個轉換出來的zip包都無法打開;

 

 

而XJad2.2最大的好處,就是即使轉換過程中失敗了,失敗前已經成功轉換的java文件,都能看到,從而你能發現是哪幾個文件,或哪幾個文件夾沒轉換成功,從而能夠猜得是哪幾個文件或文件夾導致了轉換失敗;

 

 

例如,我們要反編譯的jar包叫做a.jar, 而a中有一個文件夾,叫b,通過以上方法無法成功反編譯,通過XJad2.2發現,停在a.jar中b文件夾中了,從而猜測是文件夾b下的某幾個源文件導致的無法反編譯,可以通過以下方法解決:

先通過windows系統裏的WinRAR,將整個a.jar解壓縮,此時裏面的所有源文件都是.class格式的,沒有關係,把文件夾b刪除,然後進入命令行方式下,用jar命令把文件夾重新打包成jar格式的壓縮包

例如:  jar cvf a.jar a  (其中a是要壓縮的文件夾,即源文件,而a.jar就是目標文件,cvf是參數)

 

然後再用jd-gui,將修改過的jar包,通過 File -> Save All Source,反編譯,保存爲a' ,並在下面相應的位置,建一個文件夾,叫作b

然後手動反編譯,具體過程入下:

用jd-gui打開原始的a.jar,找到文件夾b,選擇File -> Save Source, 然後選擇路勁,讓其保存到a'下的文件夾b中,從而實現是對a.jar的反編譯!

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