反编译工具可以帮助我们将APK文件反编译为一些Java代码,也可以查看一些APK的布局信息及项目注册清单信息等。
常用的反编译工具有apktool、dex2jar和jd-gui.exe。
其中,apktool用来反编译获取APK中的资源文件、布局文件和项目注册清单文件;
dex2jar用来将APK的dex核心文件反编译为jar文件;
jd-gui.exe用来查看反编译后的jar文件内容,可以查看到jar文件里的包目录结构和代码信息等。
所以想要反编译一个APK,通常需要这3个小工具搭配使用。
也可以使用更加高效、方便的反编译工具——jadx。
jadx是一个开源的反编译工具,功能非常强大,并且简单易用,其优点如下:
①图形化操作界面,所见即所得,支持拖曳操作;
②支持更多的文件格式:.apk、.dex、.jar、.class、.smali、.zip、.aar和.arsc;
③可以直接反编译出Java源码、项目注册清单和布局文件等;
④支持反编译信息的全局搜索功能;
⑤反混淆;
⑥支持导出为gradle项目。
详情可以参考:https://github.com/skylot/jadx
链接:https://pan.baidu.com/s/1YqAW9vhd0wfbZT5h6UCFlA
提取码:cyx6
下载并解压后,找到bin目录下的jadx-gui.bat文件,双击,程序即可运行
jadx工具支持jadx、apk、dex、jar、class、smali、zip、aar和arsc类型文件的反编译,非常强大,Java虚拟机能够识别的字节码类型文件基本上都可以进行反编译。这里以APK文件为例。
可以自己找个apk文件尝试,然后选择“文件”--“打开文件”,然后找到那个apk文件所在的路径。
可以看到,左侧列表中分为了源代码、资源文件、签名、证书这几个层级,通过jadx可以反编译查看到这部分信息
可以看到APK的一部分签名信息
jadx还具有强大的搜索功能,打开“导航”--“搜索文本”或者“搜索类”,可以查找类名、方法名、变量名和代码等信息