原理初步理解
apk 打包过程如下:java -> class -> dex + xml -> tmp + image + .so -> apk,所以反编译的过程,应该就是从 apk 到 .java 文件的过程,下面的步骤则是一步一步解析出中间结果
步骤
-
将 .apk 文件修改后缀名为 .zip,然后使用解压缩工具解压,这时可以直接得到 图片和 .so 文件(如果有的话)。这时虽然可以清晰的看到 xml 文件的命名,但是打开后是无法看到其中的信息的,需要进一步的处理;
-
解析 xml 文件,一般使用
apktool
,对于 ubuntu 用户,需要下载两个文件,apktool.jar 和 apktool,下载后添加可执行权限chmod +x
,然后将两个文件都移动到/usr/local/bin
目录下,然后执行命令:apktool d XXX.apk
-
下载 dex2jar.zip,并解压得到 dex2jar文件夹,然后给文件夹中的所有文件添加可执行权限
chmod 777 -R dex2jar
,将第1步得到的 class.dex 文件拷贝到 dex2jar 文件夹中,执行命令dex2jar.bat classes.dex
得到classes.dex.dex2jar.jar
-
下载 jd-gui.jar,然后使用命令
java -jar jd-gui.jar
然后打开第 2 步中得到的classes.dex.dex2jar.jar
文件即可
经过这四步,可以得到该 apk 的图片、.xml 文件以及 .java 源码文件