APK反编译
以前的apk反编译方式已经不行了,因为项目需求重新学习了下反编译,这里做一个记录。
一、反编译工具介绍
apktool
作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
https://ibotpeaches.github.io/Apktool/
dex2jar
作用:将apk反编译成java源码(classes.dex转化成jar文件)
https://sourceforge.net/projects/dex2jar/
jd-gui
作用:查看APK中classes.dex转化成出的jar文件,即源码文件
http://jd.benow.ca/
二、操作步骤
1、解压资源文件:
1)进入apktool官网,下载apktool.bat和apktool_2.3.1.jar,把下载的jar重名为apktool.jar,并把这两个文件放在同一个目录下,例如新建一个apktools文件夹,把着两个文件都放在这个文件夹中
2)把要解压的apk也放在apktools这个目录中,运行cmd,进入该目录,然后执行命令:apktool d xxx.apk,命令执行完后,反编译后的文件就在该目录下了,其中 d 表示解压文件
2、解压源码
1)下载dex2jar,下载下来是一个zip包,直接解压,例如解压到dex2jar目录下
2)把要解压的apk后缀名改成zip或者.rar,解压出来,得到classes.dex,把这个classes.dex文件放在dex2jar目录中,运行cmd,进入到这个目录中,执行命令:
dex2jar classes.dex,命令执行完之后得到classes-dex2jar文件
3)下载jd-gui,下载下来也是一个zip包,解压,运行jd-gui.exe文件,然后在jd-gui打开上一个步骤得到的jar文件,这时就可以看到源码了
三、注意:
1.如果解压apk出来得到两个dex文件时,例如解压出来有classes.dex和classes2.dex,那么就要通过dex2jar同时把这两个dex文件都解压出来,才能看到完整的代码。
2.另外,我用最新版jd-gui查看jar文件时,提示我必须使用jre1.7,可是我的环境是1.9,不知道为什么不行?目前我下载一个低版本的jd-gui就可以。