概述
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
1.8及以上的jdk版本都可以
如果没有,需要先安装一下,Java 8及以上都可以
接下来打开这个链接:https://ibotpeaches.github.io/Apktool/install/
在链接中找到这个地方
然后在这个链接上右键点击一下
选择"链接另存为",然后点击保存
接下来打开链接
https://bitbucket.org/iBotPeaches/apktool/downloads/
选择apktool_2.4.0.jar,点击下载
下载好后,将这个文件重命名一下,把后面的版本号去掉
完成后是这样的
接下来复制一下刚刚下载好的两个文件
放在这个目录下
C:\Windows
需要管理员权限,点击继续
接下来还是win+R,然后输入cmd打开命令行工具,并输入指令apktool
(注意:apktool后面没有s)
输入完成后回车,会出现apktool的使用帮助
至此,安装完成
.apk文件反编译
下载一个.apk文件,比如百度地图
并将其放到D盘的test目录下(如果没有可以新建一个)
回到cmd,刚刚的使用帮助里说了反编译的指令
因此,我们的指令就这么写
apktool d d:\test\baiduditu_908.apk -o c:\test
上面指令的意思是,使用apk文件解码D盘test目录下的baiduditu_908.apk文件,输出的东西就放在C盘的test目录下
C盘的test目录不需要事先建好,它会自动创建的
我们可以看一下,刚刚生成的目录
Android中的assets文件和res文件是不会被编译成二进制文件的,因此反编译后可以很好地复原
比如我们看一下res目录
随便打开几个
Android 中 .Java 文件,在 JVM 编译之后变成 .class 文件,然后再经过Android 的虚拟机 Dalvik,代码编译为 .smali 文件
smali 是另外一种语言,和汇编是有点像的,涉及寄存器操作
至此,apk tool 的用法差不多到这里了
apk tool 的主要用法就是可以查看res目录下的资源文件
如果没有学过.smali的语法等相关内容,那么那些smali文件是暂时没有办法使用的