1.反编译的意义:
通过反编译我们可以获得已打包好的apk的资源文件(layout、drawable)和 java程序代码(经过混淆打包的apk是无法看到正常的源码的(出现a,b,c,d,e,f...))等,让我们可以尽情去观赏大神们写代码逻辑结构以及是如何去布局的。
2.认识反编译的工具:
apktools:
- apktool
- dex2jar
- jd-gui.exe
阐述各个文件的作用:
(1) apktool 可以反编译出App的layout布局等xml文件和drawable图片、清单文件。
(2) dex2jar 可以将classes.dex反编译成classes_dex2jar.jar 文件。
(3) jd-gui.exe 可以打开classes_dex2jar.jar 就可看到java源代码。
3.如何使用反编译工具:
1.将apktools文件到电脑本地磁盘;(后面会附上apktools的下载地址)
2.获取资源文件:
打开dos命令提示符(快捷键:
Windows + R,输入cmd),输入dos命令将当前目录移至到apktools所在的目录(为了方便直接将apktools放到了C盘根目录);
具体命令操作如图:
确保当前目录为反编译文件夹的目录后执行以下操作:(这里我以前段时间的项目为例)
将 点读.apk 拷贝至D盘,如下图
拷贝好目标apk后继续执行 :
(1)输入命令:
cd apktool1.5.2 (进入apktool1.5.2目录命令)
出现下图的提示后我们的资源文件的反编译就成功了!
让我们去看一下到底输出了神马东西?
穿越到我们的输出目录会看到:
1)lib目录 是我们项目中用到的.so文件
2)res 就是我们想要的各种资源文件
3)AndroidManifest.xml 清单文件
3. 获取java 代码:
首先将目标apk :点读.apk 改后缀为 .zip 的压缩文件
双击打开 点读.zip
将其中的classes.dex 文件拷贝到
D:\apk 目录下
在当前目录继续执行dos命令:
(1)
cd.. (返回上一级目录)
(2)
cd dex2jar-0.0.9.15 (进入dex2jar-0.0.9.15目录)
(3)
dex2jar D:\apk\classes.dex (反编译命令)
出现下图提示即成功反编译java源码!
反编译出来的源码文件为:
默认与 classes.dex 在相同目录下!(如下图)
4.打开 java 源码:
将 classes_dex2jar.jar 拷贝至 apktools 目录下,将其拖到 jd-gui.exe 上即可打开文件!(如下图)
让我们来看一下混淆打包与非混淆打包反编译后的区别:(出现了很多前文提到的abcd...,混淆打包一定程度上提高了你发布apk的安全系数)
还有其他反编译的方法:答案是肯定的! ...
1. Androidfby (图形化反编译工具)
不知道什么原因,只是反编译出了清单文件与classes.dex ... 没有drawable就算了,难道这是让我们获得 .dex后继续使用dex2jar工具吗? (我第一次用时提示
这
不是坑爹吗?) 算了,求知欲强的小伙伴可以自己去试试...