Mac环境下反编译apk

0,工具汇总

我们反编译apk主要使用以下三个工具

  • apktool:用于获取资源文件
  • dex2jar:获取源文件jar包
  • JD-GUI:反编译源文件jar包查看源代码
找这些工具时折腾了我点时间,现在把我找到的最终可用的版本都放百度云了。到下面链接下载:

1,apktool获取资源文件


apktool其实不止一个文件,其中包含aapt,apktool,apktool.jar三个文件,

技术分享


最终我们调用的命令行都是apktool的,另外两个文件时其依赖的工具。将这三个文件拷贝到目录/usr/local/bin下,接下来就可以直接用命令行使用了apktool了,你可以这样检测检测效果

技术分享

接下来就可以开始反编译你的apk获取资源文件了,先使用命令行切换到你的apk的目录下,然后执行命令
apktool d xxxx.apk
最开始执行上面的命令,我遇到如下图的一个问题,网上也有人遇到过

技术分享

最终发现问题在于,apktool中三个文件的apktool.jar版本太低,最后我下载了最新版替换过来,于是问题迎刃而解,最终运行效果如下

技术分享

上面命令正常执行之后,你会发现在当前目录会生成一个喝apk同名的文件夹,其中就包含了反编译产生的资源文件。apktool使用到此为止。

2,dex2jar获取源文件jar包


首先将你的apk文件改为zip文件格式,然后解压出来,其中会有一个classes.dex文件,接下来我们就是从这个文件中获取源文件。将classes.dex文件拷贝到你的dex2jar文件夹下,调用d2j-dex2jar.sh进行反编译,你可以能会遇到以下的问题

技术分享

在mac下遇到这个问题很常见,用下面这个指令可以解决
sudo chmod 777 d2j-jar2dex.sh
d2j-jar2dex.sh可能还依赖于同目录中其他.sh文件,你可能需要为其他.sh文件执行上面的命令(我遇到其中的d2j_ivoke.sh也需要执行以下命令)。

搞定上面的问题之后,就能真正开始反编译获取原文件了,使用以下命令

./d2j-dex2jar.sh classes.dex

如下

技术分享

执行完命令后,当前目录会生成一个classes-dex2jar.jar文件,该jar包就是最终获得的源文件的jar包,我们就差最后一步,将jar包反编译获取java文件

3,JD-GUI获取java源文件

很容易,你只需要将上一步中生成的classes-dex2jar.jar在JD-GUI中打开即可。一般我们能获取全部资源文件,如图片,布局文件,但是源文件时被混淆过的。


以上!




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。