已发布的安卓应用apk可以通过反编译(decompile)得到图片、布局等UI资源文件,也可以得到Java源码。Java源码一般是被混淆后的代码(如所有类名、变量名、函数名都使用abc等无意义内容替换),但不妨碍参考。
工具介绍
工具 | 作用 | 官方下载 |
---|---|---|
apktool | 资源获取,可以提取出图片文件和布局文件 | |
dex2jar | 源码获取,反编译apk为Java源码(实际是将classes.dex转化成jar文件) | |
jd-gui | 源码查看,查看jar文件即源码 | |
luyten | 源码查看,查看jar文件即源码(可查看部分jd-gui无法查看的代码) | Github |
P.S.原文CSDN下载地址中的apktool.jar过时,会出现”can not decode arsc file”的错误。
这里提供新的下载:android反编译工具包(4in1),包含:
- apktool_2.0.0rc4(新)
- jd-gui-0.3.5.windows
- dex2jar-0.0.9.15
- luyten-0.5.3(2017-8-12新增)
反编译:资源获取
1、解压apktool.zip,到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,运行cmd命令(先定位到该目录下):
apktool.bat d -f test.apk
反编译完毕后出现的新文件夹test即为反编译出的资源。
2、如果想将反编译完的文件重新打包成apk,可以输入
apktool.bat b test
完成后可以在之后在test/dist/中找到新的APK
P.S.三合一工具包中也加入了两个.bat运行脚本,编辑更改apk名字后即可运行。
反编译:获取Java源码
1、解压dex2jar.zip
2、解压apk文件,得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的)
3、将获取到的classes.dex放到dex2jar文件夹内,运行cmd命令(先定位到该目录下):
dex2jar.bat classes.dex
完成后,在该目录下会生成一个classes_dex2jar.jar的文件,然后使用工具jd-gui.exe打开该文件即可看到源码(被混淆处理过)。
代码查看
可以使用工具jd-gui.exe打开*.jar文件查看其中的Java代码。但有些代码使用jd-gui仅仅显示了错误:“// INTERNAL ERROR //”,解决方法是使用开源工具luyten查看,该工具已集成到工具包中。