最近在对一款 app 软件进行抓包,但是接口的返回数据是加密的,没办法只能试着反编译 apk,然后分析它的代码,当然我是抱着学习的心态来进行如下操作的
条件
- JDK 7 及以上
- demo.apk 想要反编译的 apk
- Apktool 工具
- dex2jar
- JD-GUI
Apktool
JDK 就不再说了,如果不知道怎么装,请移步google
首先安装 Apktool 环境,这是反编译的基础,接下跟紧我的脚步
下载 Apktool 命令脚本
1 | $ wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/osx/apktool |
这里需要注意名字不要加上 .sh
后缀,然后从 https://bitbucket.org/iBotPeaches/apktool/downloads/ 下载最新的 jar 包
1 | $ mv apktool_x.x.x.jar apktool.jar |
这样我们就安装好了 Apktool,下面我们来测试下反编译和编译是否能成功
1 | $ apktool d demo.apk |
运行命令后,如果出现上述类似信息,并在当前目录下生成一个 demo 文件夹,代表反编译成功了,文件夹内就是反编译后的内容
也可以将文件夹反编译为 apk
1 | $ apktool b demo |
在 demo 文件夹中生成 build, dist
两个文件夹,这就是编译后生成的文件,apk 在 dist 中
dex2jar
接下来我们需要使用 dex2jar 将 apk 转为 jar 文件,首先从网址 https://github.com/pxb1988/dex2jar/releases 下载最新版的 dex2jar,并解压到 dex2jar 文件夹
1 | $ cd dex2jar |
随后会在当前目录得到 demo-dex2jar.jar 文件
JD-GUI
最后就剩打开源码了,从 http://jd.benow.ca/ 中下载最新的 jar 文件,在电脑上打开这个文件会启动一个 jar 客户端,并将生成的 demo-dex2jar.jar 拖入其中即可
