本文介绍了在ubuntu中进行APK反编译。 其中包括反编译工具的下载和环境构建以及反编译的详细步骤。
资源下载和环境建设
使用以下命令解压缩资源包
$ unzip Android _ decompile _ tools _ for Ubuntu _ 201309.zip
如果未安装zip解压缩工具,则可以使用以下命令进行安装:
$ sudo apt-get install unzip
解压缩后得到4个文件:
apktool1.5.2.tar.bz2
dex2jar-0.0.9.15.zip
jad158e.linux.intel.zip
libstdc 2.10-glibc 2.2 _2. 95.4-27 _ i386.deb
解压缩apktool1.5.2.tar.bz2
apktool1.5.2.tar.bz2是“反编译apk资源”工具,用于反编译apk的manifest和res目录。 使用以下命令将文件解压缩到当前目录:
$ tar -xvf apktool1.5.2.tar.bz2
解压缩后,将得到名为“apktool1.5.2/apktool.jar”的文件。
补充说明:此处使用的是1.5.2版的apk工具。 要下载最新版本的apk工具,请链接: http://code.Google.com/p/Android-apk tool /
解压缩dex2jar-0.0.9.15.zip
dex2jar-0.0.9.15.zip是一个“将dex转换为jar”工具。 使用以下命令将文件解压缩到当前目录:
$ unzip dex2jar-0.0.9.15.zip
解压后,获取目录“dex2jar-0.0.9.15”。
补充说明:此处使用的是dex2jar工具0.0.9.15版。 要下载最新版本的dex2jar工具,请链接: http://code.Google.com/p/de x2 jar /
解压缩jad158e.linux.intel.zip
jad158e.linux.intel.zip是一个“将jar恢复为java源文件”工具。 使用以下命令将文件解压缩到当前目录:
$ unzip jad158e.linux.intel.zip
解压缩后,得到文件“jad”。
补:这里使用的是jad158e版本的工具。 要下载最新版本的jad工具,请单击http://www.varaneckas.com/jad链接
6安装libstdc 2.10-glibc 2.2 _2. 95.4-27 _ i386.deb
$ dpkg-I libstdc 2.10-glibc 2.2 _2. 95.4-27 _ i386.deb
补充说明:如果不执行此步骤。 运行命令“$ ./jad”时,将报告libstdc -libc6.2-2.so.3 not found错误。
将反编译工具添加到ubuntu环境变量中
a )假设步骤3中获得的“apktool.jar”目录的路径为/home/skywang/Android/decompile/apk tool1.5.2/apk tool.jar
b )假设步骤4中得到的“dex2jar-0.0.9.15”目录的路径为/home/skywang/Android/decompile/de x2 jar-0.0.9.15
c )假设步骤5中得到的“jad”文件的路径为/home/skywang/Android/decompile/jad
编辑~/.bashrc并添加以下内容:
安卓编写工具
exportapktool _ path=/home/skywang/Android/decompile/apk tool1.5.2/apk tool.jar
导出jad _ path=/home/skywang/Android/decompile
导出de x2 jar _ path=/home/skywang/Android/decompile/de x2 jar-0.0.9.15
导出路径=$ path : $ jad _ path : $ de x2 jar _ path
其中APKTOOL_PATH是“apktool.jar文件”的路径,JAD_PATH是“jad文件”所在的目录,DEX2JAR_PATH是“de x2 jar-0.0.9”
设置完成后,重新导入环境变量。
$ source ~/.bashrc
如果重新打开“终端”窗口,则无需运行$ source ~/.bashrc。
补充:您可以通过以下命令检查环境变量是否正确设置:
$ echo $APKTOOL_PATH
$ echo $PATH
如果的内容中包含您添加的路径,则表示环境变量的设定成功。
工具和环境设定ok后,接下来介绍逆编译步骤。 反编译有两个部分。 反编译资源和反编译源代码。
反编译步骤
1 .反编译“apk资源”
反向编译“apk资源”时,将得到“管理文件”和“res目录”。
1.1apk资源准备
可以在eclipse中新建并编译和运行简单的Android项目。 此时,apk文件将自动生成在项目好玩的服饰目录下。
1.2资源反编译
运行以下命令:
$ Java-jar $ apk tool _ pathd [ apk _ path.apk ]
说明:
(01 ) APKTOOL_PATH是与“apktool.jar路径”对应的环境变量。 之前设置在~/.bashrc上了。
) 02 ) apk_path.apk是“apk文件所在的路径”。
上诉命令的作用是反编译apk,得到的“manfiest”和“res目录”是原始资源文件。 “smali”不是必需的代码,必须按照以下步骤反向编译代码:
2 .反向编译“apk源”
2.1解压缩apk文件
使用以下命令将apk文件解压缩到当前目录:
$ unzip [apk_path.apk]
说明:
(01 ) apk_path.apk是“apk文件所在的路径”。
) 02 ) apk本质上是zip格式的压缩文件,可以使用unzip命令进行解压缩。 也可以在“$ file [apk_path.apk]”中查看apk的文件格式。
上诉命令的作用是解压缩apk,获得“classes.dex”文件。 可以删除“classes.dex”以外的文件。
2.2将dex转换为jar文件
运行以下命令:
$ d2j-dex2jar.sh classes.dex
说明:上诉命令的作用是在当前目录中生成classes_dex2jar.jar文件。
2.3解压缩classes _ de x2 jar.jar文件
创建新目录“folder”,并将classes_dex2jar.jar解压缩到该目录中。 运行以下命令:
$ mkdir folder
$ unzip classes _ de x2 jar.jar-dfolder
说明:
(01 ) mkdir的作用是创建新的目录文件夹。
(02 ) unzip的作用是将classes_dex2jar.jar解压缩到folder目录。
2.4将类转换为java文件
运行以下命令:
$ jad-o-r-sjava-DSRC folder/* */*.class
说明:运行上诉命令将在当前目录中生成" src "目录," src "中的所有文件都是java源文件。
现在,“反向编译java源文件”任务已经完成。