动手搭建linux下的APK反编译环境
动手搭建linux下的APK反编译环境
网上绝大部分APK反编译文章讲的都是windows环境下的,但是本人既然在linux下做android开发了,总不能反编译一个APK,需要打开windows虚拟机,然后再按部就班吧。
于是自己通过网上搜索一些资料,打造了一个linux下的APK反编译环境。本人对于java不熟,所述不详或不对的地方还望指出。
必备工具:
1.apktool apk打包工具
下载地址:http://code.google.com/p/android-apktool/
安装:直接解压即可,是一个apktool.jar文件,通过
$java -jar apktool.jar
来运行,依赖于java运行环境
2.dex2jar dex转化jar工具
下载地址:http://code.google.com/p/dex2jar/
安装:直接解压即可,是一个文件夹,里面包含了很多文件,通过
$./dex2jar.sh
来运行
3.unzip zip解压缩工具,用于解压jar包(jar包是zip压缩的,所以可以用其它工具代替)
下载地址:ubuntu $sudo apt-get install unzip
安装:不解释了,通过
$upzip [src_path] -d [dst_path]
来运行
4.jad .class文件反编译工具
下载地址:http://www.varaneckas.com/jad
安装:直接解压即可,是一个可执行文件,通过
./jar
来运行,我这里运行的时候遇到一个问题,和大家分享一下。运行时会报一个libstdc++-libc6.2-2.so.3 not found 的问题。对于该问题到http://archive.debian.net/etch/i386/libstdc++2.10-glibc2.2/download下载一个,并通过
$dpkg -i libstdc++2.10-glibc2.2_2.95.4-27_i386.deb
来安装即可
-----------------------------------------------------------------------------
接下来,工具准备完毕了,最好设定一下环境变量,我们就可以反编译apk了
一、抽取apk资源,通过
$java -jar apktool.jar d [source.apk]
来实现
二、反编译源码
(1)解压apk
$unzip [source.apk] -d [step_1]
step_1指的是你所需要解压到的目录
(2)进入step_1 目录,找到classes.dex文件,将dex文件转化成jar文件
$dex2jar.sh classes.dex
(3)获得一个classes_dex2jar.jar文件,我们现在要再度解压这个文件
$upzip classes_dex2jar.jar -d [step_3]
step_3指的是你解压到的目录
(4)我们获得一个step_3目录,我们接下来要反编译该目录下所有.class文件
$jad -o -r -sjava -dsrc step_3/**/*.class
(5)我们再度获得一个src目录,该目录下就是反编译好的源码文件了。