反编译安卓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,下面是下载地址:

http://jd.benow.ca

生成了java的jar文件之后我们只要通过特定的工具就可以看到里面的java内容了,把之前下载好的jd-gui打开,把classes-dex2jar.jar文件直接拖进jd-gui的界面就行了

 ok,搞定

原文地址:https://www.cnblogs.com/lyd447113735/p/9619902.html