自己寫這篇文章的目的在于幫助大家更好地學習android。把一些好的應用通過編譯成可讀檔案。具體步驟:
一、解壓APK生成目錄
apk的目錄結構,如下
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TPRllcGJTYwVzVZZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TMzATNzgTM1EjMxkDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
- assets 這個檔案夾用來放入要使用的檔案,比如XMLor.txt等,這個目錄裡面的檔案不會編譯成二進制代碼。
- lib存放的是 NDK編出來的 so 庫
- META-INF存放的是數字簽名,再釋出一個APK時都要簽上數字簽名,如果翻譯之後然後再打包成APK,千萬要簽上數字簽名。要不然在裝置上是無法安裝你的APP的。
- res存放的是資源檔案比如XML,IMG。
- AndroidManifest.xml是整個應用的配置檔案,比如聲明元件,設定權限,版本等。
- classes.dex是最終生成的 dalvik 位元組碼,java和R檔案都被編譯在這裡面
- 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盤,首先進入工具包所在的盤)
2.把classes.dex編譯成.jar
輸入指令: dex2.bat 絕對路徑\classes.dex,
顯示這個就代表編譯完成,在你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檔案名稱] [想要輸出的目錄]
這樣就完成了,到你輸出的目錄上檢視。所有的布局和資源檔案都可以正常顯示了。
五、重新将反編譯後的檔案打包成APK
還是使用apktool.bat
輸出 apktool.bat b [剛才編譯的輸出目錄] 注意:記得加路徑
完成.檢視apk在輸出目錄的dist目錄下。