准备工作:
apktool作用:主要查看res文件下xml文件、AndroidManifest.xml和图片。(注意:如果直接解压.apk文件,xml文件打开全部是乱码)
dex2jar作用:将apk反编译成Java源码(classes.dex转化成jar文件)
jd-gui作用:用来查看APK中classes.dex转化成出的jar文件,即源码文件
apktool.bat 下载地址 https://ibotpeaches.github.io/Apktool/install/
apktool.jar 下载地址 https://bitbucket.org/iBotPeaches/apktool/downloads/
dex2jar 下载地址 https://jaist.dl.sourceforge.net/project/dex2jar/dex2jar-2.0.zip
或者更为全面的http://sourceforge.net/projects/dex2jar/files/
jd-gui 下载地址 http://jd.benow.ca/
一、ApkTool的使用:
将 apktool.bat 和apktool.jar 放在同一文件夹下,之后将要编译的apk文件放在同一文件夹下,如下图所示
注:apktool.jar下载的时候如果带版本号,需要将文件名称改为apktool.jar
之后打开cmd窗口,在 命令行中定位到此文件夹
之后执行命令行
apktool d xxx.apk
反编译完成之后会生成对应的文件夹。
输入命令:apktool b xxx,xxx为刚才生成的apk对应的文件夹,此命令可以对apk文件进行二次打包,在上述的反编译操作完成后,我们就能够发现smali文件夹内的.smali文件,其由smali语言编写,即Dalvik的寄存器语言,smali有自己的语法并且可以修改,修改后可以被二次打包为apk,需要注意的是,apk经过二次打包后并不能直接安装,必须要经过签名后才能安装。
二、dex2jar的使用
将下载的dex2jar-2.0.zip解压,获得解压之后的文件夹dex2jar-2.0,之后将要被解压的apk后缀改为.zip,之后将文件进行解压,获得解压文件中的classes.dex,将classes.dex文件放入dex2jar-2.0文件夹下,
之后进入命令行进入到此文件夹中
执行命令 d2j-dex2jar classes.dex
执行完成之后再dex2jar-2.0文件夹下会生成一个classes-dex2jar.jar;
三、jd-gui的使用
安装jd-gui-windows-1.6.3.zip中的jd-gui.exe
到这里,反编译的过程就完成了,但是如果该APK进行了混淆处理,那么你看到的类文件名称以及里面的方法名称都会以a,b,c….之类的样式命名,所以你可以想找到你所想得知的界面代码可能会十分费劲,找到了代码可能看起来也会很费劲,可是一个大体的思路会获得,有了这个思路,你就可以自己去尝试了。