ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> 移动开发 >> apktool Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

apktool Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正(5/11)

来源:网络整理     时间:2016-06-15     关键词:apktool

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

这个方法其实用到的解析类和AndroidManifest.xml的解析类是一样的,因为他们都属于arsc格式,而且资源文件也是xml格式的,这里值得注意的是,会产生一个反编译中最关键的一个文件:public.xml,这个文件是在反编译之后的res\values\public.xml

 Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

这里可以看到,一个id字段,都有对应的类型,名称,和id值的

而这里的id值是一个整型值,8个字节;由三部分组成的:

PackageId+TypeId+EntryId
PackageId:是包的Id值,Android中如果是第三方应用的话,这个值默认就是0x7F,系统应用的话就是0x01,具体我们可以后面看aapt源码得知,他占用两个字节。
TypeId:是资源的类型Id值,一般Android中有这几个类型:attr,drawable,layout,dimen,string,style等,而且这些类型的值是从1开始逐渐递增的,而且顺序不能改变,attr=0x01,drawable=0x02....他占用两个字节。
EntryId:是在具体的类型下资源实体的id值,从0开始,依次递增,他占用四个字节。

4、decodeSourcesSmali

这个方法主要是将dex文件解析成smali源码

 Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

这里使用了SmaliDecoder的decode方法:

 Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

这里需要借助一个工具包dexlib,他是用来处理dex文件的,处理完dex文件之后,在交给baksmali这个工具类生成smali文件即可。

到这里我们可以看到上面就大致分析完了apktool在反编译的时候做的主要三件事:

解析resource.arsc,解析AndroidManifest.xml,解析dex文件

源码分析完了,下面就开始测试运行一下,这里用使用了BAT三家的主要app做实验:

 Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

这里为了运行简单,我们在入口的main方法中,去手动构造一个参数:

 Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

这里用了BAT三家的几个app测试,发现,只有qq和支付宝有问题,所以这里就直接看着两个app反编译会出现什么错误,然后来分析解决这个问题:

1、分析QQ应用反编译的问题

apktool相关图片

apktool相关文章