Mac操作系统下进行APK反编译的一种常见方法
2016-08-11 10:14
381 查看
在Android开发的过程中,通过反编译apk打包文件查看别人优秀的xml布局或者java源码是一种不错的学习方式。那么在Macbook上如何进行反编译呢? .apk文件主要是由AndroidManifest.xml清单文件、res目录下的资源文件和src目录下的java代码文件三者打包而成。总体思路分三步走。
1、清单文件和资源文件用apktool反编译。
2、java代码文件在打包成.apk文件前,先要转为classes.dex文件,只要用dex2jar将classes.dex字节码反编译成java源文件classes_dex2jar.jar。
3、最后用JD-GUI打开classes_dex2jar.jar文件,显示java源代码。
具体的操作:
1、下载apktool包括apt、apktool 、apktool.jar共3个文件,
其中的apktool.jar最好从apktool官网下载最新版本,然后重命名去掉版本号即可。官网如图:
旧版本的apktool.jar在反编译比较新的apk文件时容易报错。
下载dex2jar最新版如图:
下载JD-GUI。本文最后会一起附上3个工具的csdn下载地址。
2、apktool工具准备好之后还不能进行反编译,你在终端命令窗口下执行输入apktool 会提示命令不存在,需要配置一下环境变量,怎么配置呢?
直接将从官网下载的apktool.jar和apktool.sh这两个文件拷贝到/usr/local/bin目录下。如下命令:打开命令窗口,cd /usr/local/bin下,可能有的mac电脑不存在bin这个目录,直接在创建一个就好了,命令是:sudo mkdir bin,执行后会让你输入root权限密码,输入完后执行ls命令查看,bin目录就存在了。用cp命令将apktool文件夹下的三个文件aapt、apktool、apktool.jar 复制到/usr/local/bin/目录下。命令:sudo cp Downloads/apktool/aapt Downloads/apktool/apktool Downloads/apktool/apktool.jar /usr/local/bin。
复制多个文件用空格隔开,Downloads/apktool/目录是源目录,存放的是我们要复制的那三个文件,执行命令后,提示输入密码,输完密码后就复制成功了,ls查看一下,这三个文件已经存在了。现在你再输入apktool命令试试。
开始进行反编译了,其实用到的命令也很简单,我们随便拿一个apk来,我们要对demo.apk进行反编译,命令行进入这个目录 cd /Users/你的用户名/Downloads/apktool/,到这个目录后,
执行命令apktool d hjjc.apk。执行成功后,会在当前目录下生成一个hjjc文件夹,点击去就看到相关apk的资源文件了,选中AndroidManifest.xml,打开,就可以看到反编译后的内容了。如图:
反编译后的xml布局文件如图:
反编译java源文件
这就用到dex2jar和jd-gui了,将hjjc.apk重命名改成hjjc.zip,然后利用解压缩软件解压,得到一个hjjc目录,由于之前反编译资源文件时已经生成了一个hjjc目录,解压hjjc.zip的目录hjjc已经存在,所以系统自动在解压后的目录名末尾加杠0区分。我们要拿到里面的classes.dex文件,如图:
将classes.dex文件复制到dex2jar目录下,如图:
在命令里进入 dex2jar目录,
然后执行命令(分两种情况):
dex2jar-0.0.9.15版:执行sh dex2jar.sh classes.dex命令。如图:
dex2jar-2.0版本:
先执行sudo chmod +x d2j_invoke.sh命令,
再执行sh dex2jar.sh classes.dex命令。
执行成功后会在dex2jar目录生成一个classes_dex2jar.jar文件。如图:
最后,用jd-gui工具打开这个jar包就可以看到java源代码了。
上图这张情况是没有经过代码混淆的样子。如果经过代码混淆经过正式签名的apk反编译出来的一般都是a、b、c、d等单个字母作为类名、变量名、方法名,给阅读和理解造成了困难。有少部分源代码会出现内部错误,除了显示为红字,没有任何内容。注意:如果是测试签名的apk即使配置了混淆也不起作用的。
最后把工具上传到csdn,点击下载地址传送门 ,送大家去下载吧!
(各工具的版本:apktool-2.2.0.jar、dex2jar-2.0、dex2jar-0.0.9.15、JD-GUI 0.3.5)
相关文章推荐
- Mac系统下对Android apk进行反编译
- mac下Android安卓apk反编译最新亲测可用的方法
- Mac下对APK进行反编译
- Mac系统下对Android apk进行反编译
- Mac系统下对Android apk进行反编译
- Mac系统下对Android apk进行反编译
- Mac系统下对Android apk进行反编译
- Mac中对android apk进行反编译(apktool dex2jar jd-gui)
- 在Sql的where中使用case进行不同字段筛选|Case的2种使用方法和一种少为人知的用途
- Linux操作系统上进行自动备份的方法步骤
- 在小硬盘上安装DOS操作系统的一种方法——使用U盘作为启动盘 ZT
- Mac OS X:一种从APP中获得PKG的方法
- 一种解读Linux操作系统内核源码的好方法
- 数据结构中Catalan数用格路问题进行转化后的一种证明方法
- 反编译APK方法
- Windows操作系统常见安全问题解决方法
- Android 反编译apk 到java源码的方法
- Mac OS X:一种从APP中获得PKG的方法
- 额外域控不能与主域控进行复制的一种解决方法
- 一种动态构建PLSQL包进行批量数据处理的方法