Apktool 使用教程

Apktool 是一个反编译 Android Apk 的第三方工具。它可以反编译资源,并在进行修改之后重新打包 Apk。

官网:Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.

1、安装 apktool

注意:apktool 依赖 Java1.8。请使用 java -version 查看,是否为 1.8 或更高版本。

主要的安装流程:

  1. 下载运行脚本,根据不同平台保存为不同的名字。— 运行脚本非必须,但可以避免一次次的重复敲 java -jar … 来执行操作

  2. 下载最新版本的 apktool.jar — 下载后可能不叫这个名字,但是通过脚本运行的话,要求为这个名字,修改为这个就行

  3. 将脚本和 jar 放到同一个目录下 — 官方建议放到指定目录,我试过 Windows 和 Mac,并不是一定要放到指定目录,也可以正常使用

  4. 进入命令行,cd 到相应目录,执行命令

官网安装教程

apktool 目录

2、手动 build 源码生成 apktool

apktool 的官网上详细介绍了如何 build 源码生成 apktool:Apktool - Build Guide

apktool 集合了几个子工程和依赖到一个工程中。其中包括:
  • brut.apktool.lib - 主工程,主要逻辑代码

  • brut.apktool.cli - 命令行接口工程

  • brut.j.dir - 工具工程

  • brut.j.util -工具工程

  • brut.j.common -工具工程

要求 JDK8,git(不从 github 上 clone 代码则不需要 git)

build 的步骤:
  1. clone 或者下载代码

git clone git://github.com/iBotPeaches/Apktool.git

  1. 在命令行中,进行到项目根目录下,执行 gradlew.bat 脚本,其他基于 unix 的系统执行./gradlew

  2. 打包 shadowJar,此 jar 包会将依赖都打包进去。

gradlew.bat build shadowJar

  1. 打包混淆过的 jar

gradlew.bat build shadowJar proguard

输出目录:./brut.apktool/apktool-cli/build/libs/apktool-xxxxx.jar

特别注意:Windows 平台下,目录深度不能超过 255 个字符。目前 apktool 项目最深目录达到 218 个字符!所以 apktool 根目录的存放路径不能超过 37 个字符!!!

3、反编译 apk

反编译命令:apktool d apk 路径

执行过程中会输出主要步骤 log

反编译 apk

4、反编译结束后,反编译的内容均在目录下的 相应文件夹下 – 文件夹名字与 apk 同名

反编译成功

5、重新打包

假如你进行了修改,现在进行重新打包

命令:apktool b 项目目录

我们使用的就是上一步反编译后,生成的目录

重新打包工程中,同样会输出主要步骤的 log

重新打包

重新生成的 apk 位于目录中的 dist 目录下,如图

重新生成的 apk

需要注意的是,重新生成的 apk,是没有经过签名的,不能直接进行安装。关于 apk 的签名,这里不再赘述,自行百度,非常多。

下一篇,详细聊聊,apktool 的各种参数作用。最终会有 apktool 的源码解析。

Apktool 参数详解