首页 ZZ游戏攻略 正文

apktool是干什么的?一篇文章带你了解它的用途!

今天心血来潮,想搞搞安卓应用的逆向工程,于是就盯上 Apktool 这款工具。听说这玩意儿很强大,能把 APK 文件给拆解开来,让我看看里面的构造,甚至还能修改后再重新打包回去。想想就觉得挺有意思,于是我就开始动手实践。

下载与安装

我得把 Apktool 这工具给弄到手。过程挺简单的,就是在网上找到下载地址,然后根据提示一步步安装就行。不过要注意的是,这玩意儿需要 Java 环境的支持,所以你得确保你的电脑上已经装好 Java。

初次尝试:反编译 APK

工具准备就绪后,我就迫不及待地找一个 APK 文件来试试手。我随便选一个之前下载的应用,把它放到一个方便操作的文件夹里。

然后,我打开命令行窗口(Windows 下就是 cmd),切换到存放 APK 文件的目录。我输入这条命令:

apktool d 我的应用.apk

这里的“我的应用.apk”就是我要反编译的 APK 文件的名字。敲下回车后,Apktool 就开始卖力地工作。等一会儿,它提示反编译成功!

我赶紧跑到那个文件夹里一看,果然多一个以 APK 文件名命名的文件夹。打开这个文件夹,我看到好多东西:

  • :这个文件就像是应用的“户口本”,记录应用的各种配置信息,比如应用的名字、图标、权限等等。
  • res 文件夹:这里面放着应用的各种资源,比如图片、布局文件、字符串等等。
  • smali 文件夹:这个文件夹里的东西就比较“高深”,是一些以 .smali 为后缀的文件。这些文件就是 APK 里的代码,不过是以一种叫做 Smali 的语言写成的。

修改与重新打包

我就尝试着修改一些东西。比如,我打开 res/values/* 文件,找到应用里显示的某个字符串,把它改成我想要的内容。

修改完成后,我又用 Apktool 把这些文件重新打包成一个新的 APK 文件。我输入这条命令:

apktool b 我的应用

这里的“我的应用”就是刚才反编译生成的那个文件夹的名字。同样地,Apktool 又开始辛勤工作。打包完成后,它会在“我的应用/dist”文件夹里生成一个新的 APK 文件。

安装与测试

我把这个新生成的 APK 文件安装到我的手机上。打开应用一看,果然,我修改的那个字符串已经变成我想要的样子!

这回实践让我对 Apktool 有初步的解。这工具确实挺强大的,能让我窥探到 APK 文件内部的奥秘,甚至还能动手修改。不过我也发现,想要真正玩转 Apktool,还需要学习很多东西,比如 Smali 语言、Android 应用的结构等等。看来,逆向工程这条路,还长着!