apktool 是一种用于第三方逆向工程,封闭,二进制的 Android 应用程序工具。它可以将 apk 资源解码为近乎原始的形式,并在进行一些修改后重建它们。它还使得使用应用程序更容易,因为项目像文件结构和一些重复性任务的自动化,如构建 apk 等。但是它不适用于盗版和其他非法律用途。它可用于本地化,添加一些功能或支持自定义平台,分析应用程序等等。
将资源分解为近乎原始的形式(包括 resources.arsc,classes.dex,9.png 和 XML)
将解码后的资源重建为二进制 APK/JAR
组织和处理依赖于框架资源的 APK
Smali 调试(在 2.1.0 中删除,取而代之的是 IdeaSmali)
帮助重复性任务
等等
Java 7(JRE 1.7)
Android SDK,AAPT 和 smali 的基础知识
快速检查
至少安装了 Java 1.8 吗?
在命令行/命令提示符下执行 java -version 是否返回 1.8 或更高?
如果没有,请安装 Java 8+ 并将其设为默认值。(Java 7 也将在此时工作)
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。
https://connortumbleson.com/2019/11/29/apktool-v2-4-1-released/
$ 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的版本太低,如果使用高版本不会出现异常;