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

其实,这里可以看到,apktool其实已经做了一个头部信息的检查,但是这里只是检查0x001C0001这个正确信息之前的值只有四个字节,而且是0的情况,这里读取int整型值,四个字节,发现如果等于传递进来的possible的话即0,就继续执行这个方法,但是这里的possible值是-1了,也就是这里只会检查四个字节,但是我们分析了支付宝的resource.arsc文件,发现他是8个字节,而且还不全是0,是前四个字节是0,后四个字节是1:

所以这里检测也是失败的,抛出异常了。
好了,到这里我们就分析完了支付宝的资源文件混淆的机制了,下面我们修改就简单了,首先。我们把上面的8个字节全部改成0:

然后替换之前的resource.arsc文件,直接用压缩软件替换即可,
然后在修改上面的检测代码:

这里,修改代码,就是会做一直检测,直到遇到正确的值为止,我们修复完成之后,运行:

哈哈,不报错了,看看反编译之后的目录:

反编译也成功啦啦~~
我们通过上面的分析就知道了,现在使用apktool反编译的主要两个错误就是:
1、Exception in thread "main" brut.androlib.AndrolibException: Multiple res specs: attr/name
异常原因:通过分析源码知道,这个错误主要是因为apk做了混淆操作,导致在反编译的过程中存入了重复的id值,错误代码:
ResTypeSpec.java的addResSpec方法78行
修复:在这个方法存入map数据之前做一个判断操作即可