Uubuntu 14.04 LTS反编译apk

  1. 使用apktool反编译apk

1、安装apktool

apktool是Google提供的APK编译工具,能够反编译及回编译apk,需要Java环境的支持(在此不再赘述Java的安装与配置,详见《Ubuntu14.04 LTS安装JDK及其环境变量配置和Eclipse的安装》)。

下载apktool1.5.2.tar.bz2、apktool-install-linux-r05-ibot.tar.bz2两个包,并将这两个包里面的文件解压到同一个目录下(例如,我就解压到自己使用的账户目录下的apktool文件夹,绝对路径是/home/geek/apktool)。解压后得到aapt、apktool、apktool.jar三个文件。如图1所示:

 

 

1

  1. apktool命令详解

为了方便演示,反编译apk的时候把要反编译的apk文件放到apktool安装目录下,并切换到apktool目录下,以下为命令详解:

decode

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

<file.apk>代表要反编译的apk文件的路径,一定要绝对路径;<dir>代表反编译后的文件的存储位置,同样也要绝对路径。示例如下:

geek@GEEK:~$ cd apktool/

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

I: Baksmaling...

I: Loading resource table...

I: Loaded.

I: Decoding AndroidManifest.xml with resources...

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

I: Loaded.

I: Regular manifest package...

I: Decoding file-resources...

I: Decoding values */* XMLs...

I: Done.

I: Copying assets and libs...

geek@GEEK:~/apktool$

切换到CM_WiFi目录下,可以看到这里有apk的源码(smali)、图片、xml配置和语言配置等等信息。整个反编译解包过程如图2所示。

 

2

build

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

这里的<dir>就是刚才你反编译时输入的<dir>,输入这行命令后,如果一切正常,你会发现多了2个文件夹build和dist,其中build里面存储着编译过程中逐个编译的文件,而dist里面则存储着最终打包的apk文件。示例如下:

geek@GEEK:~$ cd apktool

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

I: Checking whether sources has changed...

I: Smaling...

I: Checking whether resources has changed...

I: Building resources...

I: Copying libs...

I: Building apk file...

geek@GEEK:~/apktool$

切换到CM_WiFi目录下,可以看到里面多了2个文件夹build和dist,整个编译打包过程如图3所示

 

3

3install-framework

该命令用于为apktool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。

 

  1. 使用dex2jar和JD-GUI两个工具查看Java源码

下载dex2jar和jd-gui两个包,解压(我是解压到当前用户根目录下)。将apk文件解压或者直接提取classes.dex文件,将其放到dex2jar目录下。打开终端切换到dex2jar目录下,输入【./dex2jar.sh classes.dex 】命令得到.jar文件。

 

4

进入jd-gui解压安装的目录,双击jd-gui这个文件打开jd-gui,然后我们就可以打开这个.jar文件查看源码了。

 

5

Ubuntu 14.04 LTS下的jd-gui跑不起来怎么办?不要慌,这时我们只要在终端执行如下命令即可。

sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6

注:本android反编译教程,是在Ubuntu 14.04 LTS 64bit环境下测试通过

上述反编译工具包下载

 



原文地址:https://www.cnblogs.com/lr393993507/p/5310379.html