在Mac上进行反编译apk,需要三个工具,分别为(附下载地址):
-
apktool,下载Mac版
- 作用:资源文件获取,能够提取出图片文件和布局文件进行使用查看
-
dex2jar,下载最新的即可,目前是2.0版
- 作用:将apk反编译成java源代码(classes.dex转化成jar文件)
-
jd-gui,下载Mac版,jd-gui-osx-1.4.0.tar
- 作用:查看APK中classes.dex转化成出的jar文件,即源代码文件
安装
一、apktool
- 将下载的apktool_xx.jar(apktool_xx.jar重命名为apktool.jar)和apktool.txt(apktool.txt重命名为apktool)
- 可以直接右键重命名
- 也可以再命令行输入,例如:
mv ./apktool.txt ./apktool
- 给予这两个文件,可读可写可执行的权限,
chmod +x apktool.jar
,chmod +x apktool
- 将两个文件(apktool.jar&apktool)移动到/usr/local/bin(需要root)
sudo mv apktool.jar&apktool /usr/local/bin/
- 然后
apktool -v
,出现如下信息代表成功了
~ apktool -v
Apktool v2.3.4 - a tool for reengineering Android apk files
with smali v2.2.2 and baksmali v2.2.2
Copyright 2014 Ryszard Wiśniewski <brut.alll@gmail.com>
Updated by Connor Tumbleson <connor.tumbleson@gmail.com>
二、dex2jar
- 解压,
tree
看一下大致目录结构 - 给予这两个文件,可读可写可执行的权限,
chmod +x d2j-dex2jar.sh
,chmod +x d2j_invoke.sh
.
├── d2j-baksmali.bat
...(省略)
├── d2j_invoke.sh
└── lib
├── antlr-runtime-3.5.jar
├── asm-debug-all-4.1.jar
├── d2j-base-cmd-2.0.jar
├── d2j-jasmin-2.0.jar
├── d2j-smali-2.0.jar
├── dex-ir-2.0.jar
├── dex-reader-2.0.jar
├── dex-reader-api-2.0.jar
├── dex-tools-2.0.jar
├── dex-translator-2.0.jar
├── dex-writer-2.0.jar
└── dx-1.7.jar
1 directory, 32 files
三、jd-gui
- 下载后解压即可
- 如果是最新的Mac OS系统,可能会出现打不开的情况,是因为java版本问题,
java -version
查看当前版本,我电脑上java version "9.0.4"
- 最新的Mac OS系统,主要原因是使用的是jdk 1.9 ,而jd-gui使用的是jdk 1.8。所以我们需要安装在mac上安装java8,按照网上安装java教程,不用更多设置java8路径等等
- 右键jd-gui.app,显示包内容,用你常用的文本编辑器打开
Info.plist
文件,修改<key>JVMVersion</key> <string>1.7+</string>
这一行<key>JVMVersion</key> <string>1.8</string>
,保存后退出 - 基本所有的安装就结束了
反编译开始
-
apktool d -s ./xx.apk
,执行成功后,会在当前目录下生成一个 xx文件夹,点击去就看到相关apk的资源文件了,拿到其中的classes.dex
。 -
sh dex2jar.sh classes.dex
,执行成功后会生成一个classes_dex2jar.jar
文件 - 打开jd-gui,把上面的java包拖进去,然后再就可以导出java源代码了