Android APK反編譯查看源碼及資源檔

來源:互聯網
上載者:User

本文主要介紹如何反編譯Android應用程式查看原始碼、資源檔和xml檔案以及修改後重新打包成APK。鼓勵大家反編譯去學習他人的設計而不是將應用換殼後混亂市場。也可以直接使用網友整理的 anti-droid.

 

Android APK實際就是個Zip檔案,可以解壓縮後反編譯查看原始碼和資源檔。以下以為例:

我們可以右擊APK檔案,”開啟檔案”選擇Winrar壓縮檔管理器,如下:

是不是跟程式的目錄結構很像,源碼已經被壓縮在了classes.dex檔案中。這裡我們可以直接查看res下面的圖片檔案,但對於原始碼無法查看,AndroidManifest.xml清單等xml檔案開啟也是亂碼。

 

需要用到的工具包(截止2013-03-14最新),包括dex2jar、jd-gui、apktool。也可以在下面需要時分別下載最新。
1、 查看源碼
(1) 修改待反編譯檔案尾碼.apk為.zip後用winrar解壓,記錄classes.dex的路徑。
(2)使用工具包中的android-reverse-trinea\dex2jar-0.0.9.13或下載最新的dex2jar後解壓,在命令列運行

dex2jar classes.dex的路徑
1 dex2jar
classes.dex的路徑

如下:

如下:


結果會在classes.dex所在目錄下產生classes_dex2jar.jar,用jd-gui.exe(使用工具包中jd-gui或下載最新)開啟此檔案,如下:

從中我們可以大致瞭解代碼結構,雖然源碼經過proguard混淆後可讀性很差,但還是可以通過關鍵字(不可混淆的類名等)尋找擷取到一定的資訊。不過jd-gui無法通過源碼尋找,只支援尋找類型、建構函式、常量、屬性、方法。

 

2、查看資源檔和xml檔案
(1)使用工具包中的android-reverse-trinea\apktool-1.5.2-windows或下載最新的apktool(需同時下載apktool及對應平台的依賴包,解壓後將平台依賴包中的apktool.jar複製到apktool目錄下),在命令列運行

apktool.bat d -f xxx.apk xxx
1 apktool.bat
d -f
xxx.apk
xxx

其中d表示解包,xxx.apk為待反編譯apk路徑,xxx為目標檔案夾名,(apktool不支援中文目錄),如下:

結果會再apktool.bat所在目錄下產生weixin檔案夾,現在就可以正確的查看xml資源(包括res下的所有資源,如點9圖片、drawable、layout、value、menu等等)了,比如AndroidManifest.xml

 

3、修改後重新打包成APK

依然使用步驟2中的apktool,命令如下

apktool.bat b xxx
1 apktool.bat
b xxx

其中b表示build,xxx表示步驟2中解包出來的檔案夾,我們可以對某一檔案進行修改,重新打包
打包完成後會在xxx目錄下產生build和dist兩個檔案夾,dist存放重建的APK,build存放該APK的具體組成資訊。
這裡我們可以簡單的替換資源也可以通過修改smali完成代碼的修改,別做壞事哦^_*。

原文:http://www.trinea.cn/android/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.