Android4.4.2系统的OAT文件解析
2015-01-14 10:08
471 查看
Android4.4以上的版本就已经可以切换到Art虚拟机模式,Art虚拟机的作用在前面的《Android动态加载oat文件总结一》中已经介绍过,今天主要来讲讲Oat文件的格式,类比Dex文件,Dex是给Dalvik来解释的;而Oat就是给Art来解释的。
这里我主要解析的是Android4.4.2系统的Oat文件格式,Android5.0的Oat格式跟Android4.4.2的有略微的不同,主要在于Oat中某些数据结构中的几个字段,整体上还是不变的(查看源码可以清晰地看到)
首先Oat文件中主要包含两个主要的部分,oatdata和oatexec,
oatdata部分主要描述的是oat的头部信息,image文件的信息描述 , Dex的信息描述 ,Dex原文件的信息 和 指向NativeCode的映射信息:
先来看OatData部分的数据结构:
oat头部信息:
image文件的信息:
Dex信息描述:
Dex原文件信息:
可以根据Dex信息描述中的dex_file_pointer_信息得到Dex文件在oat文件中的偏移,通过这个偏移就可以读取到Dex文件的信息了
Dex文件的格式在文件art/runtime/dex_file.h中
指向NativeCode的映射信息:
可以根据Dex信息描述中的oat_class_offsets_pointer_来找到NativeCode的映射信息,
再来看OatExec部分:
这部分主要是指令码,通过上面的NativeCode的信息中的数据字段code_offset_可以看到NativeCode在Oat文件中相对于OatData的偏移,从而可以找到指令码;
这里主要描述了Oat的数据结构,也参照了罗升阳大牛的《Android运行时ART加载OAT文件的过程分析》,大家结合那篇,然后在参照我这里的介绍以及下面给出的源码就可以理解与掌握Oat文件的格式了,有不清楚的地方,欢迎随时批评,讨论
代码下载
http://pan.baidu.com/s/1i39rhBZ
这里我主要解析的是Android4.4.2系统的Oat文件格式,Android5.0的Oat格式跟Android4.4.2的有略微的不同,主要在于Oat中某些数据结构中的几个字段,整体上还是不变的(查看源码可以清晰地看到)
首先Oat文件中主要包含两个主要的部分,oatdata和oatexec,
oatdata部分主要描述的是oat的头部信息,image文件的信息描述 , Dex的信息描述 ,Dex原文件的信息 和 指向NativeCode的映射信息:
先来看OatData部分的数据结构:
oat头部信息:
image文件的信息:
Dex信息描述:
Dex原文件信息:
可以根据Dex信息描述中的dex_file_pointer_信息得到Dex文件在oat文件中的偏移,通过这个偏移就可以读取到Dex文件的信息了
Dex文件的格式在文件art/runtime/dex_file.h中
指向NativeCode的映射信息:
可以根据Dex信息描述中的oat_class_offsets_pointer_来找到NativeCode的映射信息,
再来看OatExec部分:
这部分主要是指令码,通过上面的NativeCode的信息中的数据字段code_offset_可以看到NativeCode在Oat文件中相对于OatData的偏移,从而可以找到指令码;
这里主要描述了Oat的数据结构,也参照了罗升阳大牛的《Android运行时ART加载OAT文件的过程分析》,大家结合那篇,然后在参照我这里的介绍以及下面给出的源码就可以理解与掌握Oat文件的格式了,有不清楚的地方,欢迎随时批评,讨论
代码下载
http://pan.baidu.com/s/1i39rhBZ
相关文章推荐
- android通过读取/dev/graphics/fb0文件解析出系统界面的图片
- Android系统手机内部文件夹架构及其各文件的功能解析
- 全面的Android文件目录解析和获取方法(包含对6.0系统的说明)
- 全面的Android文件目录解析和获取方法(包含对6.0系统的说明)
- 【android开发】手写签名系统的设计与实现之实现解析pdf文件(二)
- Android 文件系统解析
- 全面的Android文件目录解析和获取方法(包含对6.0系统的说明) simen201310 2016-08-28 15:52:12 浏览3290 评论0 移动开发与客户端 android 摘要
- 全面的Android文件目录解析和获取方法(包含对6.0系统的说明)
- ubuntu13.10编译android文件系统4.0.4错误全部解析
- 关于android系统对AndroidManifest文件的解析机制
- 编译android文件系统4.0.4错误全部解析
- android编译系统解析,执行make bootimage后mk文件的调用顺序详解
- Android系统文件夹结构解析及sd卡文件系统结构
- 全面的Android文件目录解析和获取方法(包含对6.0系统的说明)
- Android系统ODEX文件格式解析
- android(12)(简单学生管理系统,包括文件写入SD卡,pull解析xml文件等)
- 【个人笔记二】ART系统OAT文件的加载解析
- 全面的Android文件目录解析和获取方法(包含对6.0系统的说明)
- 基于Android2.3.5系统:Android.mk文件解析