赞
踩
早在4年前我曾发表过一篇关于《Android开发之反编译与防止反编译》的文章,在该文章中我对如何在Windows平台反编译APK做了讲解,如今用Mac系统的同学越来越多,也有很多朋友问我能否出一篇关于如何在Mac平台上反编译APK的文章,今天呢我就抽时间来写一下在Mac平台上如何反编译APK,希望对感兴趣的同学能有学帮助。
在开始讲解反编译之前呢,我们先来扫个盲:
APK的全程是Android application package,是Android的应用程序包,平时我们安装Android应用的时候需要将APK文件下载到本地然后安装,Android系统会将其识别为Android应用包。另外,需要指出的是APK 其实是一个基于 ZIP 文件格式的文件,所以支持你用解压软件将其解压,当你将APK文件解压之后你会看到如下文件:
了解过,APK的之后,接下来就给大家介绍反编译一个APK所需要那些工具:
无论是在Windows平台还是在Mac平台,反编译APK都离不了ApkTool、dex2jar、JD-GUI 这三种工具,那么这三种工具都是做什么用的呢?
介绍过ApkTool、dex2jar、JD-GUI 的作用后,接下来我们做一些反编译前的准备工作,首先呢我们需要安装ApkTool。
大家可以从https://ibotpeaches.github.io/Apktool/install/上下载ApkTool,也可以下载我为大家准备好的ApkTool、dex2jar、JD-GUI。
apktool
文件与apktool_2.3.1.jar
文件准备好,并将apktool_2.3.1.jar
更名为apktool.jar
;apktool.jar
与apktool
移动到/usr/local/bin
目录下(可以通过在终端中输出命令open /usr/local/bin
来打开这个目录);
chmod +x apktool.jar
chmod +x apktool
apktool
看是否可以运行,如果不可以需要在系统偏好设置
中打开安全与隐私
中点击仍要运行apktool.jar;至此ApkTool的安装便完成了,在终端运行apktool
命令会看到如下输出:
大家可以从https://sourceforge.net/projects/dex2jar/files/上下载dex2jar,也可以下载我为大家准备好的ApkTool、dex2jar、JD-GUI。
下载后直接解压即可。
大家可以从http://jd.benow.ca/上下载JD-GUI,也可以下载我为大家准备好的ApkTool、dex2jar、JD-GUI。
cd /你存放apk的目录或在下面命令中使用xxx.apk文件的绝对路径
apktool d xxx.apk //该命令执行后会在同级目录下生成一个与你编译的apk同名的目录
通过上述命令就可以反编译apk了。
然后在反编译后生成的目录中你会看到相关的资源文件:
由于APkTool只能将资源文件提取处理,对于.dex类型的文件是无法查看的,这里就需要用到dex2jar了。
使用解压软件将apk进行解压:
也可将apk文件的后缀改为.rar然后双击进行快速解压。
从上图中可以看到有2个classes.dex文件(这是因为应用了MultiDex所致)这就是项目的源码 将这个两个文件拷贝到下载解压的dex2jar目录下:
然后执行如下代码进行反编译:
cd /你的dex2jar解压目录 也就是上面图中存放class.dex文件的目录
sh d2j-dex2jar.sh classes.dex
sh d2j-dex2jar.sh classes2.dex
通过上述命令会得到两个.jar文件:
将dex转换成jar之后接下来我们就可以使用JD-GUI来查看反编译后的程序源码了:
操作步骤很简单,只需双击运行jd-gui-1.4.0.jar
,然后将classes-dex2jar.jar
拖拽到JD-GUI界面上即可:
为d2j_invoke.sh增加权限:
sudo chmod +x d2j_invoke.sh //sudo chmod +取消权限
Apktool的bug使用其他版本的Apktool,我在使用apktool_2.3.3.jar中遇到了这个问题,使用如apktool_2.3.1.jar
是好的,如果你也遇到了这个问题不妨换个Apktool版本试一下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。