码迷,mamicode.com
首页 > 系统相关 > 详细

Mac环境下反编译apk

时间:2015-06-10 21:07:49      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:android   android开发   

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


以上!




Mac环境下反编译apk

标签:android   android开发   

原文地址:http://blog.csdn.net/chziroy/article/details/46445489

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!