天天看點

反編譯Android應用 經驗分享JD-GUI的使用JD-Eclipse插件dex2jar的使用android-apktool的使用

轉載請說明出處,本文來自Android菜鳥:http://blog.csdn.net/android_cai_niao/article/details/43151831

如需要更詳細的講解,請看視訊:http://edu.csdn.net/course/detail/405

由于本視訊在上傳後學院會對其進行轉碼,而轉碼後視訊品質嚴重下降,導緻花屏、馬賽克、畫面停滞等等問題,是以在學院解決這個問題之前這裡會提供原視訊下載下傳,視訊不大,每個視訊20M左右,下載下傳位址:http://pan.baidu.com/s/1c0tS8ik

經驗分享

像這些工具類,一般工具的提供者在官網都會提供相應的使用說明,如安裝說明、使用說明等,不要死記硬背這些使用步驟,隻要知道它的官網即可,可以百度官網,然後在官網找到對應的使用說明即可,而且這樣做有一個好處,就是這個工具有可能會更新,你可以下載下傳最新工具來獲得更好的結果,而且這些工具更新後可能連使用方法都改變了,那麼以前記住的那些使用步驟将沒有用,是以一旦遇到不記得使用步驟了,最好到官網檢視。

JD-GUI的使用

* http://jd.benow.ca/

* http://java.decompiler.free.fr(這是官網, 目前貌似已經不提供了)

JD-GUI是一個獨立的圖形工具,用于顯示*.class檔案的Java源代碼

從http://jd.benow.ca/下載下傳:

反編譯Android應用 經驗分享JD-GUI的使用JD-Eclipse插件dex2jar的使用android-apktool的使用

打開這個壓縮包如下:

反編譯Android應用 經驗分享JD-GUI的使用JD-Eclipse插件dex2jar的使用android-apktool的使用

從上圖可看到,内容很簡單,就是一個jd-gui.exe和一個readme.txt,從readme檔案了解到如下内容:

        *  JD即JavaDecompiler的縮寫,JD的首頁是:http://java.decompiler.free.fr

        *  JD不需要安裝也不需要配置

        *  如何使用JD-GUI

              例如,編譯“Object.class”,你可以:

                 -  在指令行執行:jd-gui.exe Object.class

                 -  選擇 "FileàOpen File ...",在檔案中浏覽到 "Object.class"

                 -  把“Object.class”拖到“jd-gui”

       *  解除安裝

                 - Windows:删除 “jd-gui.exe”和“jd-gui.cfg”。

                 - Linux:删除“jd-gui”應用檔案和“jd-gui.cfg”。

                 - OSX:把“JD-GUI”應用拖到trash.

JD-Eclipse插件

JD-Eclipse是Eclipse的一個插件:http://jd.benow.ca/jd-eclipse/update、http://jd.benow.ca/jd-eclipse/downloads/jdeclipse_update_site.zip

在安裝插件的時候會彈如下視窗,問的是“你信任這些證書嗎?”,我們把它勾上,如下:

反編譯Android應用 經驗分享JD-GUI的使用JD-Eclipse插件dex2jar的使用android-apktool的使用

dex2jar的使用

從https://code.google.com/p/dex2jar/下載下傳:

反編譯Android應用 經驗分享JD-GUI的使用JD-Eclipse插件dex2jar的使用android-apktool的使用

這個工具的使用非常簡單,它可以把Android  APK中的classes.dex解碼為jar檔案,使用方法如下:

1、  下載下傳工具

2、  解壓,如解壓到:D:\dex2jar-0.0.9.15

3、  把你需要反編譯的apk複制到這個目錄,如我複制了一個abc.apk過去,則此時在cmd指令行敲如下指令:

cd /d D:\dex2jar-0.0.9.15

dex2jar apk

指令執行結束後,将會在cd/d D:\dex2jar-0.0.9.15目錄下看到生成了abc.jar,用JD-GUI檢視這個jar檔案即可。

android-apktool的使用

android-apktool可以把AndroidManifest.xml檔案和res目錄下的xml檔案和NinePatch圖檔反編譯到接近原始狀态,反編譯後還可以重新編譯回去

從https://code.google.com/p/android-apktool/下載下傳

反編譯Android應用 經驗分享JD-GUI的使用JD-Eclipse插件dex2jar的使用android-apktool的使用

V1.5.2以後的版本的下載下傳網址為:https://bitbucket.org/iBotPeaches/apktool/downloads

也可以好好閱讀首頁的内容,如下:

反編譯Android應用 經驗分享JD-GUI的使用JD-Eclipse插件dex2jar的使用android-apktool的使用

*  ApktoolOptions即apktool指令的一選項功能說明,當然,在安裝好Apktool之後也可以直接在指令行打“apktool”即可顯示指令幫助。常用選項如下:

-f     強制删除目标目錄。如果試圖使用反編譯的檔案夾已經存在

-m   保持盡可能接近原始檔案。防止重建,用于分析

-s     這将防止反編譯java源代碼。這使APK的classes.dex檔案編譯期間簡單地移動它。如果你隻想編輯資源。這是推薦更快反編譯和重建。

指令使用格式為:apktoold [選項]<file.apk>,經典使用如下:

把apk随意放到一個目錄中,如我把abc.apk放在D:\a\b\ 目錄下,則cmd指令如下:

1.        cd /d D:\a\b\

2.        apktool d -f -m -s abc.apk

指令執行完畢後,則會在D:\a\b目錄下看到有一個abc目錄,該目錄下儲存了反編譯的資源檔案

*  FrameworkFiles中的大概意思是,Android應用程式有可能使用Android系統内部的代碼和資源,标準的Android系統你不需要做任何改動,但是一些制作商,比如HTC添加了自己的架構檔案和應用,如你要解碼HTC手機的聯系人應用則需要另外的方法,詳情看網頁。

*  點選“Install”連結(https://code.google.com/p/android-apktool/wiki/Install),将會看到安裝的說明頁面,部分翻譯如下:

快速檢查

       Apktool 2.x (1.5.2以後的版本)

              是否安裝了Java 1.7 ?

              在指令行執行 java -version是否傳回 1.7?

              如果不是,請安裝 Java 7 并讓它成為預設。

       Apktool 1.x (1.5.2之前的版本)

              是否安裝了Java 1.6或更高的 ?

              在指令行執行 java -version是否傳回 1.6或更高?

              如果不是,請安裝 Java 6 或 Java 7 。

安裝 Apktool 2.x

       Windows:

1.        下載下傳Windows包裝器腳本(右擊,儲存連結apktool.bat)

2.        下載下傳apktool-2(在這裡找到最新的)

3.        将下載下傳的jar重命名為apktool.jar

4.        把(apktool.jar & apktool.bat)移到您的Windows目錄(通常是C://Windows)

5.        如果你沒有通路C://windows的權限,你可以把這兩個檔案放在任何目錄,然後将該目錄添加到您的系統環境變量PATH中。

6.        嘗試通過指令提示符運作apktool