Apk反编译需要3个工具,对应三个步骤:
- apktool:反编译apk中的资源文件
- dex2jar:将apk中的classes.dex文件反编译成jar文件
- jdgui:查看jar文件中的java代码,也可以使用Luyten
工具下载
apktool下载以及安装说明地址:
http://ibotpeaches.github.io/Apktool/install/
dex2jar下载地址:
http://sourceforge.net/projects/dex2jar/
jdgui下载地址:
http://jd.benow.ca/
Luyten下载地址:
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/Luyten.shtml
反编译资源文件
资源文件使用apktool工具反编译,apktools安装说明:
apktools安装说明以mac系统为例,
- 首先右击wrapper script,连接另存为apktool文件。
- 下载apktool-2,将下载后的文件重命名为apktool.jar
- 将apktool和apktool.jar文件移动到/usr/local/bin文件夹中
默认情况下环境变量已配置好,可在终端直接执行apktool命令测试是否配置成功,配置成功后,执行apktool会出现以下提示:
apktool安装成功这里我新建了一个android项目,打包apk后放在~/works/test.apk
打开终端,定位到works文件夹:
cd ~/works
执行apktool d test.apk
执行完成后,会生成test文件夹,里面可以看到app的资源文件,如图片、xml等,但是源代码是smali文件,仍然不能查看。
反编译java代码
dex2jar下载解压后内容如下:mac系统下,我们只执行其中的dex2jar.sh文件
dex2jar解压目录将apk使用解压缩工具解压(这里用的是The Unarchiver,App Store中可下载,Windows用户用WinRAR等解压缩工具即可),结构如下:
apk解压后目录结构打开终端,定位到此文件夹中,因为dex2jar并没有配置环境变量,我们直接以绝对路径执行命令:
~/tools/dex2jar-0.0.9.15/d2j-dex2jar.sh classes.dex
执行完毕,出现classes-dex2jar.jar文件。
查看java代码
将这个jar文件拖动到jdgui中,就可以看到java源码了
使用gui工具查看代码而个别的情况下,一些java文件用jdgui无法打开,可以再试试用Luyten打开
网友评论