本篇文章主要介绍了"apktool Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正",主要涉及到apktool方面的内容,对于移动开发感兴趣的同学可以参考一下:
一、前言在之前的破解过程中可以看到我们唯一离不开的一个神器那就是apktool了,这个工具多强大就不多说了,但是如果没有他我们没法涉及到后面的破解工作了,这个工...

这里报错了,错误和我们开始使用apktool工具的时候是一样的,看看崩溃代码:

这里可以发现,使用一个Map结构存放ResResSpec格式数据的,而且key是spec的name值,那么我们知道资源id的值是唯一的,这里不可能会出现相同的name值的,是腾讯做了混淆机制,这种混淆机制只对apktool工具有效,对Android系统解析apk运行是不影响的,那么问题就好办了,我们知道了崩溃的原因,修复也就简单了,直接加一个判断,判断这个key是否存在map中,存在的话就直接返回即可:

再次运行:

看到了,过滤了重复的资源值,反编译成功了,这里因为反编译过程中会用到系统的资源id,需要需要系统资源包framework.apk参与解析工作,这里因为QQ程序包比较大,反编译时间会长点。我们可以去看看反编译之后的目录:

我们可以看看他的AndroidManifest.xml内容:

解析成功,可以正常查看了。
这里我们就解决了QQ反编译的问题了,
2、分析支付宝应用反编译的错误问题

看到了,这个错误和我们开始看到的错误是一样的,下面我们看看崩溃的地方是什么原因导致的:

这里是读取一个字符串常量池Chunk头部信息报错的,关于Chunk的头部信息可以参考这篇文章:Android中解析resource.arsc文件