【Android】Android如何對APK反編譯

來源:互聯網
上載者:User

標籤:獲得   img   分享圖片   圖片   lan   aapt   擷取   作用   dex   

本文筆者粗略的介紹如何利用一些工具,對Android進行反編譯,從而得到源碼,希望對你有所協助,筆者的android環境為4.4.2。

1.準備資源.

在開始之前,需要準備三項工具:
apktool 
     作用:資源檔擷取,可以提取出圖片檔案和布局檔案進行使用查看

dex2jar
     作用:將apk反編譯成java源碼(classes.dex轉化成jar檔案)

jd-gui
     作用:查看APK中classes.dex轉化成出的jar檔案,即源碼檔案

 

2.擷取資源檔

使用apktool這個工具擷取資源檔,下載apktool 會獲得三個檔案:aapt.exe、apktool.bat、apktool.jar 、

接下來將需要反編譯的APK檔案放到該目錄下,
開啟命令列介面(運行-CMD) ,定位到apktool檔案夾,輸入以下命令: apktool.bat d -f test.apk test   

(命令中test.apk指的是要反編譯的APK檔案全名,test為反編譯後資源檔存放的目錄名稱,即為:apktool.bat   d  -f    [apk檔案 ]   [輸出檔案夾])

說明擷取成功,之後發現在檔案夾下多了個test檔案,點擊便可以查看該應用的所有資源檔了。

開啟資源檔後,可以看到裡面有res和smali檔案夾,res檔案夾中放的是圖片和XML等一些檔案資源,smali裡面放的是代碼,檔案都是.smali格式的,不方便閱讀。

如果你想將反編譯完的檔案重新打包成apk,那你可以:輸入 apktool.bat b test(你編譯出來檔案夾) 便可,效果如下:

之後在之前的test檔案下便可以發現多了2個檔案夾:

dist(裡面存放著打包出來的APK檔案)

3.擷取Java源碼檔案

第二步獲得的smali檔案不方便閱讀,接下來擷取源碼。

下載好dex2jar和jd-gui後 ,解壓

將要反編譯的APK尾碼名改為.rar或則 .zip,並解壓,得到其中的額classes.dex檔案(它就是java檔案編譯再通過dx工具打包而成的),

將擷取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 檔案夾內,


在命令列下定位到dex2jar.bat所在目錄,輸入 dex2jar.bat classes.dex ,效果如下:


被混淆過的(類檔案名稱以及裡面的方法名稱都會以a,b,c....之類的樣式命名):

 

這種方式可以反編譯,但是經過筆者的測試,發現反編譯後的源碼檔案,或多或少都有一些錯誤。

 

原文連結:Android APK反編譯

 

【Android】Android如何對APK反編譯

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.