天天看點

Android-APK反編譯學習

自己寫這篇文章的目的在于幫助大家更好地學習android。把一些好的應用通過編譯成可讀檔案。具體步驟:

一、解壓APK生成目錄

apk的目錄結構,如下

Android-APK反編譯學習
  1. assets 這個檔案夾用來放入要使用的檔案,比如XMLor.txt等,這個目錄裡面的檔案不會編譯成二進制代碼。
  2. lib存放的是 NDK編出來的 so 庫
  3. META-INF存放的是數字簽名,再釋出一個APK時都要簽上數字簽名,如果翻譯之後然後再打包成APK,千萬要簽上數字簽名。要不然在裝置上是無法安裝你的APP的。
  4. res存放的是資源檔案比如XML,IMG。
  5. AndroidManifest.xml是整個應用的配置檔案,比如聲明元件,設定權限,版本等。
  6. classes.dex是最終生成的 dalvik 位元組碼,java和R檔案都被編譯在這裡面
  7. resources.arsc編譯後的二進制資源代碼

二、介紹反編譯工具

這裡主要運用了三個工具,可到官方下載下傳最新版本:

1.dex2jar(把classes.dex編譯成.jar檔案,主要看java代碼)

2.apktool(這個用來反編譯classes.dex和資源檔案比如圖檔,音頻等)

3.jd-gui(這用來檢視.jar檔案),注意如果反編譯之後重新打包成APKjava代碼是不可以修改的,隻能檢視,檢視編譯後的jar包代碼和源代碼有一些差别。

三、下載下傳反編譯工具

以上下載下傳三個工具檔案還是不夠的,需要特殊配置檔案才能反編譯,一下提供工具包:

Android反編譯工具包 免費下載下傳

tools裡面有三個目錄

1.dex2目錄用來反編譯classes.dex檔案

2.apk-tool反編譯資源檔案

3.jd-gui檢視編譯後的jar檔案(java源代碼)注意和源代碼有差别

四、如何使用反編譯工具

下載下傳工具包之後解壓出來,進入cmd(指令終端),在周末開始的搜尋框輸入cmd指令

1用cd進入剛才解壓的包中的dex2根目錄(比如我的在E盤,首先進入工具包所在的盤)

Android-APK反編譯學習

2.把classes.dex編譯成.jar

輸入指令: dex2.bat   絕對路徑\classes.dex,

Android-APK反編譯學習

顯示這個就代表編譯完成,在你classes.dex檔案所在的目錄中有classes_dex2jar.jar這個檔案,然後你進入jd-gui包中輕按兩下打開

jd-gui.exe檔案,然後在工具欄選擇File-Open File-classes_dex2jar.jar這是你可以看到java代碼了。

3.編譯資源檔案,這時用apktool目錄下的apktool.bat,用指令進入到apktool檔案夾,

輸入指令 apktool.bat d  [絕對路徑\apk檔案名稱]    [想要輸出的目錄]

Android-APK反編譯學習

這樣就完成了,到你輸出的目錄上檢視。所有的布局和資源檔案都可以正常顯示了。

五、重新将反編譯後的檔案打包成APK

還是使用apktool.bat

輸出 apktool.bat b [剛才編譯的輸出目錄] 注意:記得加路徑

Android-APK反編譯學習

完成.檢視apk在輸出目錄的dist目錄下。