您的位置:首页 > 其它

Mac环境下反编译apk

2015-06-10 19:45 399 查看

0,工具汇总

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

apktool:用于获取资源文件
dex2jar:获取源文件jar包
JD-GUI:反编译源文件jar包查看源代码

找这些工具时折腾了我点时间,现在把我找到的最终可用的版本都放百度云了。到下面链接下载:
http://pan.baidu.com/s/1qWDmf2O

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中打开即可。一般我们能获取全部资源文件,如图片,布局文件,但是源文件时被混淆过的。

以上!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: