Mac下反编译APK相关资料

准备工作

工具

一般情况下你需要以下三个

apktool、dex2jar、jd-gui

如果你需要反编译odex文件,那么你还需要

oat2dexes

下载

一、apktool : http://ibotpeaches.github.io/Apktool/install/

Apktool下载

  1. 点击1中 wrapper script ,将浏览器中代码复制到你的文本编辑器中,保存名为 apktool ,且没有后缀名的文件
  2. 点击2中 find newest here ,下载 apktool_x.x.x.jar ,选择一个你喜欢的版本
  3. 将2中下载的文件重命名为 apktool.jar
  4. 将通过1、2、3三步得到的文件拷贝到 /usr/local/bin 文件夹下
  5. 确保文件是可执行的,即需要通过 chmod +x 修改文件的权限为可执行文件
    5.1 打开终端,进入到目录 /usr/local/bin
    5.2 分别输入下面两个命令,并执行

    chmod a+x apktool.jar
    chmod a+x apktool
  6. 尝试通过终端运行apktool命令,如果安装成功你会看到下图所示

    apktool运行效果

二、dex2jar : https://github.com/pxb1988/dex2jar

点击链接,跳转到github相应项目中,找到如下图所示位置

dex2jar下载

点击任意一个 Downloads 下载你喜欢的版本即可

三、jd-gui : http://jd.benow.ca

点击链接,跳转到Java Decompiler官网,找到如下图所示位置

jd-gui下载

下载你喜欢的版本即可

完成上面的操作你就拥有了反编译的apk的能力

反编译一个apk

一、使用apktool,得到资源文件

  1. 创建一个文件夹,将你要反编译的apk拷贝到文件夹内
  2. 终端定位到你创建的文件夹内,执行以下命令

    apktool d xxx.apk
  3. 命令正常执行之后,你会发现在当前目录会生成一个与apk同名的文件夹,其中就包含了你所需要的apk的资源文件

二、使用dex2jar,得到代码

  1. 将你要反编译的apk后缀改名为 .zip
  2. 解压该zip包,你会得到一个 classes.dex 文件
  3. 将 classes.dex 拷贝到你的 dex2jar 文件夹下,并将终端定位到该文件夹,执行下面的命令

    ./d2j-dex2jar.sh classes.dex
  4. 执行完命令后,会有4.1或4.2两种情况:
    4.1 当前目录会生成一个 classes-dex2jar.jar 文件,你要的代码就在里面
    4.2 提示无权限,此时你需要给 d2j-dex2jar.sh 添加执行权限,在终端执行下面命令

    chmod a+x d2j-dex2jar.sh

    4.3 然后再执行上面 3 的操作,即可得到4.1中提到的 classes-dex2jar.jar 文件了

三、使用jd-gui,查看代码

上面步骤(二)最后得到的 classes-dex2jar.jar 文件,用下载的 jd-gui-osx-x.x.x 中的 JD-GUI 打开即可查看代码了


反编译odex文件

如果你想反编译的apk是一个系统apk时,你解压 xxx.zip 后是得不到classes.dex文件的,但是你可以找到一个与apk同名的 xxx.odex 文件

或者你不知道从哪里捞到一个.odex文件想看看它究竟是啥

  1. 如果你有一个叫做 oat2dexes 的可执行文件的话,那你这么做即可
    1.1 首先将终端定位到xxx.odex同级目录
    1.2 执行下面命令

    ./oat2dexes xxx.odex

    1.3 执行完上面命令,你会得到一个 dex01.dex 文件, .dex 你应该知道怎么做吧

  2. 如果你没有 oat2dexes 文件,或者你的 oat2dexes 文件并不能用,那是因为它可能是其它系统编译出来的,因此mac上不能执行,那么你需要在mac编译一个 oat2dexes 文件
    2.1 首先你需要一个 oat2dexes.c 文件 点击下载
    2.2 得到文件后,将终端定位到 oat2dexes.c 同级目录,执行下面命令

    gcc oat2dexes.c -o oat2dexes_mac

    2.3 执行完上面命令,你就会得到 oat2dexes_mac ,它就是就是可将 .odex 转换为 .dex 的文件,当然你可以起任何名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值