需要安装的工具如下:apktool、dex2jar、jd-gui
Apk介绍
一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。
一个APK文件内包含被编译的代码文件(.dex 文件),文件资源(resources), assets,证书(certificates),和清单文件(manifest file)。
APK 文件基于 ZIP 文件格式,它与 JAR 文件的构造方式相似。它的互联网媒体类型是:application/vnd.android.package-archive
工具介绍
-
apktool
apktool 是 Google 提供的 Apk 编译工具,能够编译和反编译 apk。
-
dex2jar
dex2jar 是一个能将 .dex 文件转化成 .jar 文件的工具集
-
jd-gui
jd-gui 是一个独立的图形实用程序,可显示“.class”文件的Java源代码应用。
安装
如果嫌弃一个个官网下麻烦的可以直接使用下面的地址
Apktool 的版本为 2.3.3
dex2jar 的版本为 2.0
jd-gui 的版本为 1.4.0
安装 apktool
- 检查 jdk 是否安装
- Mac OS X 下安装
- 下载Mac包装器脚本(右键单击,将链接另存为
apktool
) - 下载apktool
- 将下载的jar重命名为
apktool.jar
- 将两个文件(
apktool.jar
&apktool
)移动到/usr/local/bin
(需要root) - 确保两个文件都是可执行的(
chmod +x
) - 尝试apktool通过命令提示符运行
- 下载Mac包装器脚本(右键单击,将链接另存为
有了上面的安装步骤现在我们来安装吧
-
前往官方的下载地址下载我们需要的两个文件(apktool,apktool.jar)
- 下载apktool脚本,修改下载的文件名为 apktool 不加任何后缀名。
- 下载 apktool.jar ,下载下来的文件名会带有版本信息,将下载的jar重命名为
apktool.jar
-
将两个文件移动到
/usr/local/bin
- 打卡文件管理系统按
command + shift + g
键,最后将文件保存在 /bin 文件夹下面
- 打卡文件管理系统按
-
确保两个文件都是可执行的(
chmod +x
)-
打开终端,输入
chmod +x apktool.jar chmod +x apktool
-
-
测试
apktool
命令- 在终端中输入
apktool
- 在终端中输入
安装 dex2jar
这个的安装很简单只需要把下载的压缩文件解压到你想的文件夹中即可。
安装 jd-gui
也是解压即可
简单的例子
下面我们去找个 apk 文件练练手吧。
Apktool 的使用
打开终端
//切换到 apk 所在的目录
输入命令 apktool d demo.apk
它会在当前目录生成一个跟 apk 文件同名的文件夹。
资源文件是有了,那 java 代码在哪里呢?apktool 只能提取到资源文件,java 代码还需要另外处理
dex2jar 使用
我们现在把 apk 当成一个压缩包解压开来,里面有个 .dex 文件。dex2jar 能把 .dex 文件转化成 .jar 文件
1. 将 apk 中 .dex 文件移动到我们刚刚解压 dex2jar 安装的目录下
2. 终端输入 sh d2j-dex2jar.sh classes.dex
这时我们会在目录中看到有个 .jar 文件。
运行 sh d2j-dex2jar.sh classes.dex 如果出现了 Permission denied
只需要终端中运行
chmod +x d2j_invoke.sh
即可
jd-gui 使用
直接打开我们安装的 JD_GUI.app ,将 .jar 文件拖入应用上,我们即可看到 java 代码了。
到此一个简单的例子就结束了