JD-GUI
這個JD-GUI可以反編譯jar包,用法就是打開jar包直接瀏覽。
JD-Eclipse
JD-Eclipse是個Eclipse插件,安裝方法是打開Eclipse,菜單 Help – > Install new software… 輸入 http://java.decompiler.free.fr/jd-eclipse/update,然后一路安裝即可。然后行會亂掉,需要安裝另外一個插件:Realignment for JD-Eclipse, 下載了以后復制到Eclipse的plugin目錄下,重啟。然后配置默認打開方式:Eclipse,菜單 Window – > Preference – General – Editors – File Association – *.class,設置Realignment for JD Class File Editor為Default。保存即可。
在Eclipse新建一個項目,新加一個目錄叫lib,然后從機器上拷貝所有需要反編譯的jar包,點那個目錄右鍵:粘貼。設置項目的compile path把那些jar加到libraries里面,這樣就可以打開每個jar包了。還能跳轉。
JAD Command
首先下載Jad.exe,這個是個批處理命令行工具,沒有界面的,而且只能處理.class文件。你可以把所有的jar包用winrar或者7z先解壓到一個目錄叫classes,然后寫個bat批處理文件內容如下:
jad.exe -r -ff -d src -s java classes/**/*.class
這樣就會反編譯為*.java文件了。當然,壞處就是目錄沒了。
1. 全選jars目錄下面所有jar包,然后右鍵選擇7z解壓:解壓到*\
2. 這樣就可以把所有jar包解壓到以jar包文件同名的目錄里面
3. 然后在系統環境變量注冊path:把當前jad路徑注冊進去
4. 然后cmd運行腳本:jad -r -sjava jars/**/*.class
運行之前chdir /d 到 jars目錄平級目錄
5. 這樣就可以全部批量反編譯為*.java並原有目錄結構不會破壞。
6. 這樣可以在Notepad++里面可以用文件查找對文件進行搜索
Android APK的反編譯
第一步是把apk重命名為zip並解壓,然后用dex2jar處理其中的classes.dex。方法是將classes.dex復制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄,運行dex2jar.bat classes.dex,生成classes.dex.dex2jar.jar,運行JD-GUI(jd-gui.exe),打開上面生成的jar包,即可看到源代碼了。如果要處理里面的資源文件、配置文件、圖片等,可以用apktool這個工具。
反編譯以后的編譯
即使你得到了所有的*.java文件,可能還是不能正常編譯,因為不清楚各個項目之間的依賴關系,而且還有資源文件、配置文件等。總之,越大的項目,越混淆的項目,越難搞定。