mac上反编译apk

553 阅读2分钟

工具

以下俗称“三件套”

  • 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放在同一个目录下

  1. 执行以下命令将apk反编译成资源文件和dex文件
# -d表示反编译 -s表示不把dex转换为smali文件,方便我们后面查看。xxx.apk为需要反编译的apk,需要指定绝对路径。绝对路径不清楚的可以的右键apk,选择显示简介即可通过位置看到。
apktool d -s xxx.apk(这里还一定要跟apk绝对路径)  

注意:apktool和xxx.apk要在一个目录下(执行apktool命令时需要将命令窗口的路径定位在apktool下)

  1. 执行以下命令将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
  1. 将生成的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 ...

这种比上面的编译结果更准确