工欲善其事必先利其器,反编译apk,首先我们需要必须的工具
- apktool
- dex2jar
- jd-gui
- AXMLPrinter
我做了一下整理,可以直接在这里下载所需的全部工具 下载链接
apktool
获取资源文件,比如图片或者布局XML文件
dex2jar
将class.dex文件转化成jar包
jd-gui
查看class.dex转化的jar包
AXMLPrinter
还原xml文件
apktool获取资源文件:将aapt.exe,apktool.bat,apktool.jar 放到同一目录下,定位到apktool文件夹,运行一下命令:apktool.bat d -f test.apk test
apktool.bat d -f [apk文件] [输出的文件夹]
反编译之后会在apktool所在目录下新建一个文件夹,文件夹目录如下
如果发现反编译出来的都是smali文件,可能是你使用的是旧的apktool,建议去官方网址下载 apktool官方下载网址,也可以使用我已经打包好的全套文件百度网盘下载
将apk文件更改后缀名为zip或者rar,解压之后目录如下:
可以看到,目录下面包含多个.dex文件,一般的小项目都会只有一个.dex文件,我这个是以支付宝为例,项目比较多,进行了分包处理。
在命令行下定位到dex2jar.bat所在的目录,dex2jar [dex文件的路径]
在dex所在的目录下会生成一个class_dex2jar.jar文件,运行jd-gui文件夹下的jd-gui.exe ,并且用改工具打开之前生成的class_dex2jar.jar文件就可以查看Java源码啦。
打开我们解压后的apk文件夹,你会发现 Android开发必须的 AndroidManifest.xml文件,打开文件:
wf,什么鬼,全是乱码。下面就要用到我们的AXMLPrinter工具来还原AndroidManifest.xml
命令行定位到AAXMLPrinter2.jar所在目录,运行下面的命令:
java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest2.txt
你会发现在AXMLPrinter2.jar目录下,会生成一个AndroidManifest2.txt,打开AndroidManifest2.txt发现我们能看懂了:
这就是本次与大家分享的Android反编译,希望对大家有用。