天天看點

android開發之反編譯Android應用

如今,寫得贊的android項目太多了,這就不得不勾起我們的好奇心了,都說:“好奇心,害死貓!”,但是這些人賊精了,他們把項目都簽名了,搞我們這行的都知道,一旦apk簽了名,我反正就沒有辦法了,但是總有辦法的,哈哈!!

JD-GUI的使用

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

JD-GUI是一個獨立的圖形工具,用于将*.class檔案解碼成.java源代碼的檔案。

1、從http://jd.benow.ca/下載下傳JD-GUI工具:

android開發之反編譯Android應用

2、将壓縮包進行解壓如下:

android開發之反編譯Android應用

從上圖可看到,内容很簡單,就是一個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。

附英文解釋:

android開發之反編譯Android應用

JD-Eclipse插件

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

1、點選Eclipse開發工具菜單欄:“Help”–> “Install New Software…”

android開發之反編譯Android應用

2、下載下傳JD-Eclipse插件

android開發之反編譯Android應用

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

android開發之反編譯Android應用
android開發之反編譯Android應用

dex2jar的使用

1、從https://code.google.com/p/dex2jar/下載下傳dex2jar工具:

android開發之反編譯Android應用

這個工具的使用非常簡單,它可以把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

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

android-apktool的使用

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

1、從https://code.google.com/p/android-apktool/下載下傳android-apktool工具:

android開發之反編譯Android應用

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

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

android開發之反編譯Android應用

1、安裝Apktool工具:

android開發之反編譯Android應用

2、使用指令解碼:

android開發之反編譯Android應用
  • ApktoolOptions即apktool指令的一選項功能說明,當然,在安裝好Apktool之後也可以直接在指令行打“apktool”即可顯示指令幫助。常用選項如下:
    • -f 強制删除目标目錄。如果試圖使用反編譯的檔案夾已經存在
    • -m 保持盡可能接近原始檔案。防止重建,用于分析
    • -s 這将防止反編譯java源代碼。這使APK的classes.dex檔案編譯期間簡單地移動它。如果你隻想編輯資源。這是推薦更快反編譯和重建。

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

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

  • cd /d D:\a\b\
  • 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:

    • 下載下傳Windows包裝器腳本(右擊,儲存連結apktool.bat)
    • 下載下傳apktool-2(在這裡找到最新的)
    • 将下載下傳的jar重命名為apktool.jar
    • 把(apktool.jar & apktool.bat)移到您的Windows目錄(通常是C://Windows)
    • 如果你沒有通路C://windows的權限,你可以把這兩個檔案放在任何目錄,然後将該目錄添加到您的系統環境變量PATH中。
    • 嘗試通過指令提示符運作apktool

詳細請觀看視訊:http://edu.csdn.net/course/detail/405

百度雲下載下傳位址:http://pan.baidu.com/s/1c0tS8ik

特免責聲明參考:http://blog.csdn.net/android_cai_niao/article/details/43151831

您還可以參考這:http://blog.csdn.net/ithomer/article/details/6727581