1. 程式人生 > >APK反編譯之APKTOOL的使用

APK反編譯之APKTOOL的使用

APKTool

APKTOOL是解包 APK 檔案最常用的工具,許多 APK 工具箱都集成了 apktool。它可以完整解包 APK,解包後你可以看到 APK 裡面的宣告檔案、佈局檔案、圖片資原始檔、由 dex 解包出來的 smali 檔案、語言檔案等。如果你要漢化、修改介面、修改程式碼的話,apktool 可以幫你一站式完成。

常用命令

需要在 CMD 命令視窗中輸入命令來使用,常用命令如下:

解包 APKjava -jar apktool.jar d *.apk -o out
其中 *.apk 是被解包的 APK 檔名, out 是輸出目錄名稱

重新打包java -jar apktool.jar b out


out 就是上面的輸出目錄

匯入 framework-res.apk 架構檔案java -jar apktool.jar if frameword-res.apk
需要將 framework-res.apk 檔案放在 apktool.jar 的相同目錄下,匯入架構檔案可以解決一些呼叫了系統框架資源的 APK 包解包失敗的問題

操作過程

  1. 下載解壓工具包
    這裡寫圖片描述
  2. 將需要反編譯的APK檔案放到該目錄下,開啟命令列介面(執行-CMD) ,定位到apktool資料夾,輸入以下命令:apktool.bat d -f *.apk out或者用上邊的命令也可以!
    這裡寫圖片描述
  3. 將要反編譯的APK字尾名改為.rar或則 .zip,並解壓,得到其中的額classes.dex檔案(它就是java檔案編譯再通過dx工具打包而成的),將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 資料夾內,在命令列下定位到dex2jar.bat所在目錄,輸入dex2jar.bat classes.dex
    在改目錄下會生成一個classes_dex2jar.jar的檔案,然後開啟工具jd-gui資料夾裡的jd-gui.exe,之後用該工具開啟之前生成的classes_dex2jar.jar檔案,便可以看到原始碼了。

注意:有些APK在打包的時候做過混淆處理,反編譯之後裡邊好多都是以abc之類的命名,但是裡邊的邏輯還是很清晰的,能給我們提供一個實現的思路。

Smali2Java

我在搜尋類似的的這種反編譯的工具時,發現了這個Smali2Java,它不用在命令列輸入命令來進行,直接解壓後開啟Smali2JavaUI.exe執行,將要反編譯的APK檔案直接開啟即可。
這裡寫圖片描述