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

其实网上很多解决方案都是说apktool这个工具的版本太旧了,用最新版本,但是这里可以看一下apktool.jar的版本:

这个版本是最新的了。
其实反编译失败很简单,就是这些公司他们知道了apktool这个工具反编译那么牛逼,那肯定想办法不让你反编译成功呀,所以他们也去看apktool的源码,分析得到漏洞,然后进行apk的一些混淆,防止反编译,所以说防护和破解真的是无休止的战争,但是幸好apktool的代码也是更新的比较快的,所以会解决这些漏洞,但是我们在破解的时候遇到这些问题,不能一味的等待apktool的更新,既然是开源的,那么就直接分析源码,发现报错的地方修复即可。
四、分析Apktool源码
上面说了为什么要分析apktool的源码,下面就真正的开始分析吧
当然第一步先得到apktool的源码吧,地址:https://code.google.com/p/android-apktool/
看到有google的域名是不是瞬间感觉整个人都不好了,的确国内程序猿一般打开都是始终loading的过程,直至error,所以我们只能去万能的github上search了,找到了这个地址:https://github.com/iBotPeaches/Apktool,可以看到这个有很多人关注,而且代码是有人维护和更新的,所以靠谱,clone到本地。
但是他是一个gradle项目,所以咋们就给Eclipse装一个gradle插件,然后导入项目即可,这里因为apktool是Java项目,所以还是使用Eclipse比较习惯吧。但是这里又遇到一个蛋疼的地方,还是国内网络的问题,gradle下载失败,因为这里引用了一些第三方的jar

好吧,那么我们只能无奈的手动去一个一个找这些jar包,不过在这个过程中还是比较蛋疼的,就是有些jar找的很蛋疼,不过最后还是都凑齐了,没有报错了,项目结构如下:

这里Apktools这个项目是入口的项目,也是主要功能项目类,Baksmali和Smali,SmaliUtil是操作smali的工具类,BrutCommon和BrutDir,BrutUtil是一些辅助的工具类,代码简单,不做太多的解释,这里除了Apktool之外,其他工程都是一个功能库,他们直接的引用关系如下: