反编译安卓apk文件(基于Mac环境)
之前搜索了网上的一些方法,感觉我用起来不是很顺手,可能是有些大神写的省略了很多步骤,对于我这种命令行小白不是很友好,踩了几个坑之后我还是尽量把我自己的过程记录下来吧,我尽量把每个基础步骤写下来。
先说下我的这种方法要用到的四个东西:apktool,apktool.jar,dex2jar,jd-gui.这四个东西是需要自己去下载的,我后面会写下载地址和使用方式
先下载好apktool.jar和apktool,下面是下载的链接地址
https://bitbucket.org/iBotPeaches/apktool/downloads/
下载我圈起来的两个文件,下载好后给第二个文件改名字,把apktool_2.3.4.jar改成apktool.jar,这里的版本没有固定,尽量下最新的版本吧。
找出在第一个文件中的apktool文件。
把下载好的这两个文件放进/usr/local/bin/目录下
首先命令行操作进入这两个文件的所在的目录:cd 路径
增加这两个文件的可执行权限:chmod a+x 文件
apktool d xxx.apk是反编译当前目录下的文件,所以需要注意你的apk文件的文件路径是不是正确的,如果apk文件是放在其他目录的话,在编译apk文件前需要进入apk文件的目录,在apktool.sh d xxx.apk代码前加cd 文件路径
下面是进入我的apk路径:cd 路径
进入apk路径之后就可以进行编译了:apktool d xxx.apk
下面效果就是反编译成功了,会在apk当前的目录生成一个和apk名字相同的文件夹,这个新生成的文件夹就是反编译apk后获得的资源文件夹了
我把整个命令行的操作步骤截图放这里,方便对照:
这一步完成后就已经可以看到apk的xml布局文件和可以获取到apk的图片资源了,如果需要看java代码就需要进行下面的步骤
获取java代码前需要做些准备工作:
对反编译apk后的文件进行回编译,apktool既可以对apk文件进行反编译,也可以对apk反编译后的文件夹进行回编译,进行回编译这一个步骤主要是要获取classex.dex文件。
输入命令行:apktool b 反编译的文件夹名
执行完这一步会在反编译文件夹中生成一个build文件,这里面的classes.dex文件就是我们需要的了
注:如果只是单纯的要获取这个classes.dex文件,有一种更加简便的方法。我们可以把xxx.apk的后缀改成xxx.zip,然后把这个压缩包进行解压缩,在解压后的文件夹中也可以找到这个classes.dex文件
有了classes.dex文件之后去下面的地址下载一个dex2jar文件
https://sourceforge.net/projects/dex2jar/
把classes.dex文件拷贝进dex2jar文件中去
接下来就可以用dex2jar这个工具,运用命令行去生成classes-dex2jar.jar文件,这个文件就是最终的java文件了,步骤如下:
第一步当然是使用命令行进入dex2jar这个工具的目录了:cd 路径
然后是给d2j-dex2jar.sh文件添加运行权限(这一步可以省略,但是还是加上安全的,等得后面实现不了效果更加麻烦):chmod +x d2j-dex2jar.sh
最后是运行命令生成classes-dex2jar.jar文件:sh d2j-dex2jar.sh classes.dex
执行完这一步就可以在dex2jar文件夹目录中看到classes-dex2jar.jar文件了
最后当然是下载一个可以查看jar文件的工具了,我这里用的是jd-gui,下面是下载地址:
生成了java的jar文件之后我们只要通过特定的工具就可以看到里面的java内容了,把之前下载好的jd-gui打开,把classes-dex2jar.jar文件直接拖进jd-gui的界面就行了
ok,搞定