首先,获得一个apk文件,使用apktool对其进行进行反编译,如下图:
图1 用apktool对apk文件反编译
此过程主要是通过对apk文件进行反编译得到其内部的xml文件,其附带的smali代码、图等资源文件在此还未用到。
图2 使用apktool对apk文件进行反编译后得到的内容
其中,我们所需的AndroidManifest.xml文件内容如下:
图3 AndroidManifest.xml文件内容
自己写了个py文件,内容为将apk文件(压缩包)内的dex文件提取出来,执行如下:
图4 执行提取dex文件内容
执行之后会将apk文件更改后缀名为zip并将dex文件解压缩出来放到指定文件夹。但是得到的dex文件为十六进制的文件,需要对其基尼系那个反编译后才能变成可读代码。使用dex2jar工具对dex文件进行反编译,得到jar包。
图5 使用dex2jar反编译dex文件为jar包
得到的jar包里面都是class文件,还无法直接读取,需要对其使用工具才能读取。使用jd-gui打开并读取文件
图6 使用jd-gui打开并读取jar文件
将其另存为,得到可读的java文件
图7 存储之后得到的可读的java文件