*转载 ^_^ 同时请注明原文出处:http://www.cnblogs.com/wangvsa/archive/2012/10/09/2717089.html
一、apktool
1.介绍
其主页是http://code.google.com/p/android-apktool/,这个工具可以反编译apk程序并得到
原始资源文件。我们可以利用这个工具来查看apk中的图片等资源、修改源代码并重新编译。
由这个工具反编译后并没有得到java文件,而是得到了smali文件,在smali目录中是所有java文件
所对应的smali文件,smali相当于java的汇编语言(个人理解)。
2.使用
到项目主页下载文件,以linux系统为例(新建一个目录~/android/apk_crack),
下载apktool-install-linux-*和apktool-*,将两个压缩包解压得到三个文件:aapt、apktool、
apktool.jar。其中aapt是android-sdk中也带的一个工具,而我们要使用的只是apktool。
命令行中执行下面语句:
1 cd ~/android/apk_crack 2 ./apktool
可以看到apktool的用法选项。其中常用的是d选项。举例说明,要破解demo.apk,先将demo.apk
拷贝到apktool所在目录,并执行:
1 ./apktool d demo.apk demo
其中demo是要反编译到的目录。命令执行完后进入demo目录就会看到res目录、AndroidMainfest.xml文件等。
由上面的工具得到smali文件,但是不方便阅读,我们可以利用下面的工具来破解得到java文件。
二、dex2jar及JD-GUI
1.介绍
dex2jar用来将.dex文件转换为.jar文件,主页为http://code.google.com/p/dex2jar/
JD-GUI用来浏览.jar文件包含的java源文件,主页为http://java.decompiler.free.fr/?q=jdgui
2.使用
到两个工具主页下载相应压缩包。如我下的为:dex2jar-0.0.9.9.tar.gz和jd-gui-0.3.4.linux.i686.tar.gz。
先解压两个压缩包到~/android/apk_crack目录:
(1)解压dex2jar-0.0.9.9.tar.gz得到dex2jar-0.0.99目录,该目录下的dex2jar.sh即为转换工具。
(2)解压jd-gui-0.3.4.linux.i686.tar.gz中的jd-gui,这是个二进制程序可直接运行,还可以集成到Nautilus文件
管理器。
还是以demo.apk为例,直接将其打开,解压出其中的classes.dex,或者可以先重命名为demo.zip再解压
出classes.dex。然后执行命令:
1 cd ~/android/apk_crack/dex2jar-0.0.99 2 ./dex2jar.sh ../classes.dex
可以得到classes_dex2jar.jar,这个文件就可以用jd-gui来打开并浏览了。界面如下: