如果是開源的最好下載源代碼,在jar右鍵指定對應的源代碼可以直接查看
jad是java的反編譯工具,反編譯出來的源文件可讀性不高。可惜用起來還算方便。
找到eclipse下的插件,叫jadclipse,
安裝好之後,只要雙擊.class文件,就能直接看源文件,
包括jar包中的class文件,也可以直接反編譯。
1.下載 jad
http://www.kps.com/jad.html#download
下載後解壓。裡面是個jad.exe的程序,我一般把他放在jdk的bin下面
2.下載 jadclipse2.06beta
http://sourceforge.net/projects/jadclipse/
按 eclipse的plguin進行安裝,將jadclipse目錄解壓到eclipse/plugin目錄下。
3.配置 jadclipse:
window>preferences>java>JadClipse中,
設置path to decompiler為jad.exe的全路徑,如:d:/jdk/bin/jadjad.exe
在Directory for temporary files中指定臨時文件的路徑,這個默認就好。
在workbench>file associations中,
將*.class的編輯器,設為JacClipse。
4.反編譯
找到一個class文件,雙擊打開,能看到編譯後的源文件。
⑵ 如何反編譯android 的apk/dex/odex,獲得源碼
關於APK,DEX的介紹
當我們編譯一個安卓項目的時候,整個項目會被打包成一個 .apk文件。這個文件其實是一個標準的zip文件,因此可以用解壓縮工具打開。這個apk文件一般都包含程序的代碼(在classes.dex文件中), 資源文件, 證書, manifest 文件等。 其中對我們最重要的是classes.dex文件,因為編譯後的位元組碼(bytecode)都是放在這個文件中。我們後面講的反編譯就是針對這個dex文件來的。
反編譯普通的APK文件:
對於普通的APK/DEX文件的反編譯,其實工具有很多, 包括:
ByteCode Viewer: 一個可視化的集成工具,說實話,不太好用,不夠穩定,生成代碼質量中等。
dex2jar + jd_gui: 這兩個工具組合還可以, 用起來比ByteCode Viewer麻煩一些,但比較穩定,生成代碼質量中等。
在線反編譯工具JADX: http://www.javadecompilers.com/apk , 這是基於SourceForge上的JADX的開源工具來實現的。本來以為在線反編譯質量不會好,但出人意料的是:JADX是我發現的最好的反編譯工具, 不但使用簡單(直接上傳,轉換,下載就ok),而且反編譯出來的代碼質量很高,特別是變數命名方面,可讀性很不錯。
反編譯ODEX文件:
Android 5.0 Lollipop以後,Google用ART代替了以前的Dalvik,對於普通的app來說我們仍然可以用上面的方法來把dex文件反編譯成Java源代碼。但對於系統預裝的App,特別是類似應用商店,播放器等, 你會發現這些應用的apk文件中找不到對應的classes.dex文件,而是會發現在其子目錄下有個.odex文件。 那如何反編譯這個odex文件呢?我通過google查了查,知道應該用baksmali,但從github上下載了幾個版本都不行,報各種不同錯誤。經過反復搜索和嘗試,終於找到了這篇文章
: http://www.naldotech.com/how-to-deodex-applications-on-android-5-0-lollipop/ 。 具體方法如下:
1. 從這里下載工具包, 解壓縮到本地。 這里的baksmali的版本是2.0.3. 不同版本的baksmali針對的Android內核不同。有時候高版本反倒不好用。
2. 打開工具所在目錄, 按住shift鍵, 點擊滑鼠右鍵,打開windows命令窗口
3. 把 odex文件拷貝到該目錄
4. 在命令窗口運行: oat2dex.bat *.odex. 正常情況下,應該顯示OK等信息。如果報錯的話,說明這個文件無法轉換,後面的也不用試了。
5. 運行 oat2dex.bat *.odex temp.dex . 運行後會創建一個temp.dex文件。
6. 運行 java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o source . 運行後會創建一個source的文件夾,並將temp.dex反編譯到該文件夾。-a 21 表明的是Android內核的版本21
7. 運行 java -jar small-2.0.3.jar -a 21 source -o classes.dex, 反編譯為classes.dex文件。
需要注意的是:由這種方式反編譯成的classes.dex 文件相比原生的classes.dex 還是缺少了些信息,因此反編譯這種classes.dex 文件後生成的java代碼可讀性會更差些。
8. 用在線工具JADX 來把 classes.dex 最終反編譯為java代碼。
⑶ eclipse怎麼集成反編譯工具
方法/步驟
下載jadClipse反編譯插件,然後將net.sf.jadclipse_3.3.0.jar拷貝到eclipse的plugins目錄下
其次要刪除configuration目錄下org.eclipse.update文件,重新啟動eclipse;
重啟後要設置jad的可執行文件路徑以及生成的臨時文件路徑,如圖所示: