工具
以下俗称“三件套”
- apktool 用于反编译apk,得到资源文件、dex文件等。
- dex2jar 将后缀为dex的文件转换为.jar文件方便查阅
- jd-gui 用于将.jar文件转换成java代码并查看
下载安装apktool 将apk反编译为资源文件、dex
下载地址:ibotpeaches.github.io/Apktool/ins…
下载新版工具:bitbucket.org/iBotPeaches…
下载dex2jar 将dex文件转为jar包
下载地址:sourceforge.net/projects/de…
下载jd-gui 查看jar包中的代码
下载地址:java-decompiler.github.io/
实操
最好将三个工具和待反编译的apk放在同一个目录下
- 执行以下命令将apk反编译成资源文件和dex文件
# -d表示反编译 -s表示不把dex转换为smali文件,方便我们后面查看。xxx.apk为需要反编译的apk,需要指定绝对路径。绝对路径不清楚的可以的右键apk,选择显示简介即可通过位置看到。
apktool d -s xxx.apk(这里还一定要跟apk绝对路径)
注意:apktool和xxx.apk要在一个目录下(执行apktool命令时需要将命令窗口的路径定位在apktool下)
- 执行以下命令将dex转成jar包
# 多个class.dex同样用次方式,class.dex 也需要绝对路径
sudo sh d2j-dex2jar.sh class.dex
如果出现权限问题(# line 36: ./d2j_invoke.sh: Permission denied),执行以下命令获取权限:
sudo chmod 777 d2j_invoke.sh
如果转换失败,出现这个问题
Detail Error Information in File ./classes-error.zip
Please report this file to http://code.google.com/p/dex2jar/issues/entry if possible.
解决:请更新dex2jar,至少在2.1以上的版本
dex2jar-v2.1网盘下载:
链接:https://pan.baidu.com/s/1B6cKZPScSip8-K-2rlUIJg
提取码:7sr8
- 将生成的jar文件拖到jd-gui中,就可以查看源代码
反编译方法二
下载 Decompile
脚本:
#
sw@MacBook-Pro ~ % cd Downloads/decompile-apk-2.2
sw@MacBook-Pro decompile-apk-2.2 % pwd
/Users/sw/Downloads/decompile-apk-2.2
# 运行反编译 APK
sw@MacBook-Pro decompile-apk-2.2 % ./decompile-apk.sh /Users/sw/Documents/leon_workspace/apk_get/wenshuapp.apk
You can choose the following three ways to decompile an apk file
# 选择想要用的 JADX
1: using apktool/dex2jar/jd-gui to decompile apk
2: using ClassyShark to decompile apk
3: using jadx to decompile apk
4: using bytecode-viewer to decompile apk
q: exit
Please input your choice(1, 2, 3, 4):3
View the decompile file
INFO - output directory: wenshuapp
INFO - loading ...
这种比上面的编译结果更准确