概述

APK Tools是一款对Android的.apk文件进行逆向工程的工具,包含功能如下:

  • 将资源解码为几乎原始的形式,比如 resources.arsc、classes.dex、9.png以及XML文件
  • 重建解码后的资源,打包进apk
  • Smali 调试功能

使用APK Tools需要对 Android SDK、AAPT 以及 mali 有所了解,涉及到的相关内容在本文中会有讲解



下载与安装

下载的官方文档放在项目github主页上,可以打开以下链接查看

​https://ibotpeaches.github.io/Apktool/install/​

首先我们查看一下java版本,win+R后输入cmd,然后输入以下指令查看java版本

java -version

APK Tools 使用详解_反编译

1.8及以上的jdk版本都可以

如果没有,需要先安装一下,Java 8及以上都可以

接下来打开这个链接:​​https://ibotpeaches.github.io/Apktool/install/​

在链接中找到这个地方

APK Tools 使用详解_apktools_02

然后在这个链接上右键点击一下

APK Tools 使用详解_android_03

选择"链接另存为",然后点击保存

APK Tools 使用详解_android_04

接下来打开链接

​https://bitbucket.org/iBotPeaches/apktool/downloads/​

选择​​apktool_2.4.0.jar​​,点击下载

APK Tools 使用详解_java_05

下载好后,将这个文件重命名一下,把后面的版本号去掉

APK Tools 使用详解_apktools_06

完成后是这样的

APK Tools 使用详解_apktools_07

接下来复制一下刚刚下载好的两个文件

APK Tools 使用详解_apktools_08

放在这个目录下

C:\Windows

APK Tools 使用详解_android_09

需要管理员权限,点击继续

APK Tools 使用详解_java_10

接下来还是win+R,然后输入cmd打开命令行工具,并输入指令apktool

(注意:apktool后面没有s)

APK Tools 使用详解_java_11

输入完成后回车,会出现apktool的使用帮助

APK Tools 使用详解_反编译_12

至此,安装完成



.apk文件反编译

下载一个.apk文件,比如百度地图

APK Tools 使用详解_apktools_13

并将其放到D盘的test目录下(如果没有可以新建一个)

APK Tools 使用详解_java_14

回到cmd,刚刚的使用帮助里说了反编译的指令

APK Tools 使用详解_android_15

因此,我们的指令就这么写

apktool d  d:\test\baiduditu_908.apk -o c:\test

上面指令的意思是,使用apk文件解码D盘test目录下的baiduditu_908.apk文件,输出的东西就放在C盘的test目录下

C盘的test目录不需要事先建好,它会自动创建的

APK Tools 使用详解_android_16

我们可以看一下,刚刚生成的目录

APK Tools 使用详解_apktools_17

 

APK Tools 使用详解_android_18

Android中的assets文件和res文件是不会被编译成二进制文件的,因此反编译后可以很好地复原

比如我们看一下res目录

APK Tools 使用详解_java_19

随便打开几个

APK Tools 使用详解_java_20

APK Tools 使用详解_github_21

Android 中 .Java 文件,在 JVM 编译之后变成 .class 文件,然后再经过Android 的虚拟机 Dalvik,代码编译为 .smali 文件

smali 是另外一种语言,和汇编是有点像的,涉及寄存器操作

APK Tools 使用详解_apktools_22

至此,apk tool 的用法差不多到这里了

apk tool 的主要用法就是可以查看res目录下的资源文件

如果没有学过.smali的语法等相关内容,那么那些smali文件是暂时没有办法使用的