首页
社区
课程
招聘
[原创]Android4.4.2系统的OAT文件解析
2015-1-14 11:02 19357

[原创]Android4.4.2系统的OAT文件解析

2015-1-14 11:02
19357
Android4.4以上的版本就已经可以切换到Art虚拟机模式,今天主要来讲讲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

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (12)
雪    币: 2307
活跃值: (968)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
非虫 7 2015-1-14 15:46
2
0
谢谢分享
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JackJoker 2015-1-14 16:04
3
0
好文章,要顶起。
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wfgfw 2015-1-14 20:35
4
0
感谢分享
雪    币: 233
活跃值: (148)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
boyliang 5 2015-1-14 20:48
5
0
期待多一些关于ART的文章
雪    币: 719
活跃值: (782)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
落笔飞花 1 2015-1-15 08:35
6
0
好文。一会儿下载。
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Osleti 2015-1-15 17:15
7
0
感谢楼主分享...学习
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cooldogpp 2015-1-16 12:56
8
0
还没有用过art虚拟机模式~~学习下
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pestu 2015-1-20 13:50
9
0
http://bbs.pediy.com/showthread.php?t=195662  跟这个有点像
雪    币: 427
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pwelyn 2015-1-20 13:57
10
0
感谢分享
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
大王叫我挖坟 3 2016-5-28 08:44
11
0
来玩了,链接地址被百度河蟹掉啦,求楼主补发
雪    币: 435
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qqsunqiang 2016-5-28 10:17
12
0
谢谢楼主的分享。
雪    币: 131
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
川美 2016-5-28 10:27
13
0
感谢楼主分享,可是地址失效了
游客
登录 | 注册 方可回帖
返回