apktool 是一種用於第三方逆向工程,封閉,二進制的 Android 應用程序工具。它可以將 apk 資源解碼為近乎原始的形式,並在進行一些修改后重建它們。它還使得使用應用程序更容易,因為項目像文件結構和一些重復性任務的自動化,如構建 apk 等。但是它不適用於盜版和其他非法律用途。它可用於本地化,添加一些功能或支持自定義平台,分析應用程序等等。
apktool 特點
將資源分解為近乎原始的形式(包括 resources.arsc,classes.dex,9.png 和 XML)
將解碼后的資源重建為二進制 APK/JAR
組織和處理依賴於框架資源的 APK
Smali 調試(在 2.1.0 中刪除,取而代之的是 IdeaSmali)
幫助重復性任務
等等
安裝 Apktool
Windows:
下載 Windows wrapper 腳本(右鍵單擊,將鏈接另存為 apktool.bat)
下載 apktool-2(在這里找到最新的)
將下載的 jar 重命名為 apktool.jar
將兩個文件(apktool.jar 和 apktool.bat)移動到 Windows 目錄(通常為C://Windows)
如果您無權訪問 C:// Windows,則可以將這兩個文件放在任何位置,然后將該目錄添加到系統環境 PATH 變量中。
嘗試通過命令提示符運行 apktool
Linux:
下載 Linux wrapper 腳本(右鍵單擊,將鏈接另存為 apktool)
下載 apktool-2(在這里找到最新的)
將下載的 jar 重命名為 apktool.jar
將兩個文件(apktool.jar 和 apktool)移動到/usr/local/bin(需要 root)
確保兩個文件都是可執行的(chmod + x)
嘗試通過 cli 運行 apktool
Mac OS X:
下載 Mac wrapper 腳本(右鍵單擊,將鏈接另存為 apktool)
下載 apktool-2(在這里找到最新的)
將下載的 jar 重命名為 apktool.jar
將兩個文件(apktool.jar 和 apktool)移動到/usr/local/bin(需要 root)
確保兩個文件都是可執行的(chmod + x)
嘗試通過 cli 運行 apktool
注意 – 不需要 wrapper 腳本,但有用,因此您不必反復鍵入 java -jar apktool.jar。
CMD 命令窗口反編譯及打包示例:
$ apktool d test.apk (反編譯)
I: Using Apktool 2.3.4 on test.apk
I: Loading resource table…
I: Decoding AndroidManifest.xml with resources…
I: Loading resource table from file: 1.apk
I: Regular manifest package…
I: Decoding file-resources…
I: Decoding values */* XMLs…
I: Baksmaling classes.dex…
I: Copying assets and libs…
I: Copying unknown files…
I: Copying original files…
$ apktool b test (重新打包)
I: Using Apktool 2.3.4 on test
I: Checking whether sources has changed…
I: Smaling smali folder into classes.dex…
I: Checking whether resources has changed…
I: Building resources…
I: Building apk file…
I: Copying unknown files/dir…
使用過程中可能會出現如下問題:
問題 1:WARNING:Could not write to (C:\Users\****\AppData\Local\apktool\framework), using C:\Users\WBB53E~1.WAN\AppData\Local\Temp\ instead…
解決辦法:在C:\Users\****\AppData\Local自己創建\apktool\framework這個文件夾即可;
問題 2:Exception in thread “main” java.lang.NullPointerException
解決辦法:刪除C:\Users\Administrator\apktool\framework\1.apk的apk文件即可;
問題 3:Exception in thread “main” brut.androlib.AndrolibException: Could not decode arsc file
解決辦法:apktool.jar的版本太低,如果使用高版本不會出現異常;