Apktool 反编译 apk
文章目录
- 用 apktool 可以将 apk 反编译获取相应的一些 xml 文件,可以用于学习使用。其实这个工具用法也很简单,参照官网的步骤一步步做基本是没有什么难点的。
- 我看到网上也有其他的教程 ,不过是很多年前了都不能用了,所以最好的办法还是参照官方文档,我这一篇可能以后也不能用了,但是官网的肯定是最新的。
- 下面先介绍官网的步骤并进行实际操作,然后再讲遇到的一点问题。
官网教程地址:https://ibotpeaches.github.io/Apktool/install/
使用
以 Windows 为例(其他系统在上面链接中也有相应步骤):
- 在上图所示的步骤1中,右键 wrapper script 选择链接另存为,将该文件(即apktool.bat)保存在电脑中。
- 点击步骤2末尾的链接,跳转到 apktool.jar 的下载地址,找到一个最新的进行下载(我当前最新为 2.5.0)。
- 将下载完成的 apktool_2.5.0.jar 重命名为apktool.jar,即去掉版本号。
- 将 apktool.jar 和 apktool.bat 移动到 C://Windows
- 如果没有权限移动到上述文件夹中,可以将这两个文件放在任意文件夹,然后配置环境变量即可。
- 开始运行 apktool 相关命令。
-
以上就是截图中的步骤的大概翻译,这几步基本是不会出什么问题的,也非常简单,接下来就开始使用 apktool 进行反编译 apk.
-
打开命令行窗口,执行
apktool d test.apk
,其中 test.apk 参数是你想要反编译的 apk 的路径,为了方便你可以在该 apk 的目录下执行这个命令。 -
下图就是执行成功的结果
-
执行完毕后,会得到一个文件夹。打开文件夹的 res 目录即可找到你想得到的 xml 文件了。
-
以上是最简单的命令,apktool 还有一些其他命令,都可以在最上面的链接中找到,这里就不过多展开了。
遇到的问题
- 一开始我在 C://Windows 目录下执行
apktool d test.apk
,一直报错如下:
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.DirectoryException: file must be a directory: app-debug
at brut.androlib.res.AndrolibResources.decodeManifestWithResources(AndrolibResources.java:221)
at brut.androlib.Androlib.decodeManifestWithResources(Androlib.java:134)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:122)
at brut.apktool.Main.cmdDecode(Main.java:179)
at brut.apktool.Main.main(Main.java:82)
Caused by: brut.directory.DirectoryException: file must be a directory: app-debug
at brut.directory.FileDirectory.<init>(FileDirectory.java:38)
at brut.androlib.res.AndrolibResources.decodeManifestWithResources(AndrolibResources.java:201)
... 4 more
- 遇到这个问题只需要找一个其他的目录,比如到其他盘下新建一个文件夹(如: E://test/),将 apk 放入后执行上面的命令就不会再报这个错误了。
完