反编译就是对这个APK进行反编译。Android的反编译分成两个部分:
- 一个是对代码反编译,也就是java文件的反编译。
- 一个是对资源反编译,也就是res文件的反编译。
反编译主要是参考别人的架构,以及源码的实现,不是纯粹的抄袭。
通过分析App的项目结构和引用库的信息,大致掌握了该项目的架构,一些开发中的经验和不足,拓宽下开发视野,发现一些好用的开源库,增强我们的武器,
现在整体有三大方法,各有优劣。
jadx
优点:
1.操作方便快捷,一步到位
2.有较为完善的gui界面,带有较多实用功能
3.反编译代码可读性高
缺点:
1.没有classyshark类似的方法总数统计以及图形化分布界面
2.对比apktool直接反编译出来的资源文件有相应的缺失
ClassyShark:.下载地址
优点:
1.使用非常便捷,只需一个命令行唤起界面即可。
2.源码目录结构清晰,并且可以通过图形化查看整个apk的组成架构
缺点:
1.源码过于简略,不能获取相应代码逻辑
2.不能获取到资源文件
apktool+dex2jar+jd-gui工具集
ApkTool: http://ibotpeaches.github.io/Apktool/install/
优点:
1.可以获取较完整的资源文件集
2.源码较为详细
缺点:
1.使用较为复杂,需要多个工具结合
2.不能较好查看整个apk的架构逻辑
开发者在开发过程中可以根据实际需求斟酌使用,当然有些时候三者配合使用说不定会更好哦~
建议使用jadx工具,它把dex2jar和jd-gui集成在一起,非常好用。jadx的github地址
不喜欢命令行,可以使用gui模式。
反编译的.dex, .apk, .jar or .class即可(可以看到支持的格式还是很丰富的,赞)
支持全局class查询,支持全局text查询
支持导出gradle工程(你可以用as直接看反编译的工程了)
ClassyShark工具
命令:java -jar ClassyShark.jar
弹出如下界面:
所需的工具
会在apk的同级目录出现一个同名文件夹,里面就是apk的资源