2024年4月17日发(作者:)

Uubuntu 14.04 LTS反编译apk

一、

使用apktool反编译apk

1、安装apktool

apktool是Google提供的APK编译工具,能够反编译及回编译apk,需要Java环境

的支持(在此不再赘述Java的安装与配置,详见《Ubuntu14.04 LTS安装JDK及其环境

变量配置和Eclipse的安装》)。

下载2、2两个包,并将这两个包里

面的文件解压到同一个目录下(例如,我就解压到自己使用的账户目录下的apktool文件夹,

绝对路径是/home/geek/apktool)。解压后得到aapt、apktool、三个文件。如图1所

示:

图1

2、apktool命令详解

为了方便演示,反编译apk的时候把要反编译的apk文件放到apktool安装目录下,并

切换到apktool目录下,以下为命令详解:

decode

该命令用于进行反编译apk文件,一般用法为:apktool d <>

<>代表要反编译的apk文件的路径,一定要绝对路径;

代表反编译后的文

件的存储位置,同样也要绝对路径。示例如下:

geek@GEEK:~$ cd apktool/

geek@GEEK:~/apktool$ ./apktool d CM_ /home/geek/apktool/CM_WiFi

I:

I: Loading

I: Loaded.

I: Decoding

I: Loading resource table from file: /home/geek/apktool/framework/

I: Loaded.

I: Regular

I:

I: Decoding values */*

I: Done.

I: Copying assets

geek@GEEK:~/apktool$

切换到CM_WiFi目录下,可以看到这里有apk的源码(smali)、图片、xml配置和语言

配置等等信息。整个反编译解包过程如图2所示。

图2

build

该命令用于编译修改好的文件,一般用法为apktool b

这里的

就是刚才你反编译时输入的,输入这行命令后,如果一切正常,你会

发现多了2个文件夹build和dist,其中build里面存储着编译过程中逐个编译的文件,而

dist里面则存储着最终打包的apk文件。示例如下:

geek@GEEK:~$ cd apktool

geek@GEEK:~/apktool$ ./apktool b /home/geek/apktool/CM_WiFi

I: Checking whether sources

I:

I: Checking whether resources

I:

I:

I: Building