Android 如何反编译apk查看源码

01 所需要的软件

  • Apktool
    反编译 xml 文件和 dex 文件,并可以将编译后的项目重新打包成 apk。
    官方下载地址: Apktool
    官方的速度有时候不稳定,也可以从我的网盘中下载: 链接 密码:xkao
  • dex2jar
    将 classes.dex 转换为「.jar」文件)
    官方下载地址: dex2jar
    我的网盘: 链接 密码:xkao
  • jd-gui
    查看「.jar」文件
    官方下载地址: jd-gui
    我的网盘: 链接 密码:xkao

02 - 1 安装 Apktool

Mac OS:

  • 到 这里 或者我的 网盘链接 里下载好 script 脚本文件,修改名称「apktool」(如果从我的网盘下载,无须修改名称) 。
  • 到 这里 或者我的 网盘链接 下载 apktool,然后修改名称为「apktool.jar」
  • 「apktool」「apktool.jar」移动到 /usr/local/bin目录下

在命令行中 cd 到 /usr/local/bin中然后分别输入下面两条命令

$ chmod a+x apktool.sh
$ chmod a+x apktool.jar
  • 在命令行中输入
$ apktool

02 - 2 反编译 Apk

  • cd 到 apk 的目录下

输入

$ apktool d test.apk

注意:
此时 dex 文件直接反编译成了 smali 文件,而我们需要的是 .dex 文件。

此时再运行:

$ apktool d -s -f test.apk

-d 反编译 apk 文件
-s 不反编译 dex 文件,而是将其保留
-f 如果目标文件夹存在,则删除后重新反编译

 

03 dex2jar

下载、解压好 dex2jar

  • 将上一步得到的 classes.dex 文件(有时候还有 classes2.dex,说明方法数过多,把它当成 classes.dex 处理就好了)复制到 dex2jar 解压好的目录中。
  • 在命令行中运行:
$ sh d2j-dex2jar.sh classes.dex

如果提示:

d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied

执行

$ sudo chmod +x d2j_invoke.sh

后再次执行

$ sh d2j-dex2jar.sh classes.dex

运行成功,在当前目录下生成了 classes-dex2jar.jar 文件。

 

 

04 jd-gui

 

安装好 jd-gui 之后,用其将 classes-dex2jar.jar 打开,就可以看到反编译出来的 java 代码了!

 

link:https://www.zhihu.com/question/29370382

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值