Apktool学习指南

今天使用Apktool反编译一个apk,修改smali字节码后重新构建apk,其中遇到一下问题。相信有不少人也会遇到类似的问题。

0x01. Apktool 安装

在安装Apktool之前必须具备Java运行时环境(JRE)。 然后去Apktool的官方网站下载安装,官方网站有详细的安装教程,不同的平台,根据教程一步步来安装,很简单的。安装完成之后,测试一下Apktool的功能,对于大多数的apk都可以反编译和构建。但是对于最新的android版本(比如android 6.0等),可能会出现如下的提示:

1
/home//Apktooldir/res/values/styles.xml:293: error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCompat.Base'.

** 主要原因是:Framework Files不是最新的,不能解析新版本里面新的资源属性。**

0x02. 更新Framework Files

Apktool需要框架文件(framework file)来反编译和构建apk。其实framework file就是一个名为framework-res.apk的文件。
Apktool会内嵌标准的框架文件,因此一般不需要安装framwework file。但是,有时候framework file文件可能有些过时,需要从官网下载framework file文件。甚至有些制造商(比如:三星)会添加自己的框架文件并且在应用中使用,这时候需要我们自己从设备中导出框架文件然后更新apktool的framework file。
从官方网站搜索下载最新的framework-res.apk文件,然后安装如下方法安装:

1
2
3
4
5
格式: apktool  if [framework location]

C:\Users\...\apktool if E:\downloads\framework-res.apk
I: Framework installed to: C:\Users\...\apktool\framework\1.apk

0x03. 使用Android Killer

Android Killer是一个比较不错的apk反编译工具,其可以看成是Apktool的前端,封装了Apktool的核心功能。并且添加了一些其他有用的功能,比如自动的签名等等。这些功能可以自己去探索。