[Android] Apktool 反编译 apk

Apktool 反编译 apk

  • 用 apktool 可以将 apk 反编译获取相应的一些 xml 文件,可以用于学习使用。其实这个工具用法也很简单,参照官网的步骤一步步做基本是没有什么难点的。
  • 我看到网上也有其他的教程 ,不过是很多年前了都不能用了,所以最好的办法还是参照官方文档,我这一篇可能以后也不能用了,但是官网的肯定是最新的。
  • 下面先介绍官网的步骤并进行实际操作,然后再讲遇到的一点问题。

官网教程地址:https://ibotpeaches.github.io/Apktool/install/

使用

以 Windows 为例(其他系统在上面链接中也有相应步骤):
在这里插入图片描述

  1. 在上图所示的步骤1中,右键 wrapper script 选择链接另存为,将该文件(即apktool.bat)保存在电脑中。
  2. 点击步骤2末尾的链接,跳转到 apktool.jar 的下载地址,找到一个最新的进行下载(我当前最新为 2.5.0)。
  3. 将下载完成的 apktool_2.5.0.jar 重命名为apktool.jar,即去掉版本号。
  4. 将 apktool.jar 和 apktool.bat 移动到 C://Windows
  5. 如果没有权限移动到上述文件夹中,可以将这两个文件放在任意文件夹,然后配置环境变量即可。
  6. 开始运行 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 放入后执行上面的命令就不会再报这个错误了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值