Mac 下Android apk 的反编译

来源:互联网 发布:聚合数据是什么意思 编辑:程序博客网 时间:2024/05/14 10:02

突然之间心血来潮,想看看反编译到底是咋回事,就看了相关的文档,也是踩了不少坑,今天在这里给大家记录一下,希望能帮助到大家。我们直接开始吧。

第一,环境变量的配置

首先,要下载一些相关的问题,我在这里给大家的下载地址:

[下载地址]

下载之后,解压相关的apktool.zip文件,会看到几个文件,如图所示:
解压之后可以看到的文件
文件有了之后,这时候需要配置环境,
首先,打开终端窗口,把 appt ,apktool,apktool.jar 三个文件拷贝到 usr/local/bin/下面。命令如下:

sudo cp 绝对路径/aapt  绝对路径/apktool 绝对路径/apktool.jar  /usr/local/bin/

注意是:sudo cp 加文件的路径, 多个文件拷贝的时候,文件与文件之间需要空格 隔开,

查看文件的路径时,鼠标右键,查看文件的简介,复制“位置”后面的全部内容,后面加“/文件名”

上面的步骤如果完成了,这时候,你可以查看是否成功,
命令: cd /usr/local/bin/
进入bin文件夹下:ls
这时候,查看是否有你刚刚复制的三个文件存在,如果存在说明你复制成功了。

这时候,你调用apktool命令,看apktool的版本是否成功。
命令:apktool -version

如果,你的命令位置还在某个文件夹下时 。
命令cd 回车,退出某个文件夹,回复到刚开始的位置;
如图:
这里写图片描述

如果,你下载的不是我上面的资源,比如你的版本是早期的活,下面反编译的时候会报错,后面说反编译报错的问题,如果,你这里是2.2.4,说明你的版本是最新的,没什么问题,我们继续往下走。

这时候,我们进行反编译apk文件,上面准备了那么多的事情,现在正是开始了。
命令进入你的apk文件存在的位置,如下:
命令:cd /Users/xxx/Documents/appapk
这时候我是进入到apk文件下面了,大家根据自己的路径走。
接着。命令:apktool d apk的文件名.apk
如图:
这里写图片描述

这时候是进行反编译,如果执行到这里。算成功
如图:
这里写图片描述

如果大家遇到下面这种情况,如图:
这里写图片描述
说明是apktool版本太低出现的缘故,这是需要替换掉“/usr/local/bin/”下apktool.jar文件,
具体下载的地址

和上面复制的命令一样,直接复制到/usr/local/bin/,就可以了,

反编译成功了之后,就会在apk文件所在的位置生成同样的文件夹。
这时候xml文件,资源都是可以打开看的。

第二,用dex2jar和jd-gui

1.dex2jar和jd-gui了,将zhi.apk重命名改成zhi.zip,然后利用解压缩软件解压,得到一个zhi目录,我们要拿到里面的classes.dex文件,如图:
这里写图片描述

2.解压dex2jar-2.0.zip文件,将classes.dex文件复制到解压的dex2jar文件下
3. 命令进入到dex2jar-2.0所在的文件夹下: cd 绝对路径
4. 如果在dex2jar-2.0下的时候,这是执行命令:sh dex2jar.sh classes.dex
5. 这时候会在dex2jar-2.0生成一个“classes_dex2jar.jar”的文件。
6. 这时候用jd-gui打开文件“classes_dex2jar.jar”,就可以看相关的Java代码了。根据时间来确定,你刚刚生成的文件。
这里写图片描述