OAT文件的加载

1.OAT文件内容

OAT文件其实就是一个elf格式的文件,结构如下

OAT文件的加载_第1张图片
Paste_Image.png

OAT有两个section,一个是oat data section,里面存放了生成的oat的dex files的内容,还有一个是oat exec section,里面存放的是从dex编译出的native代码。

oatdata section的结构

OAT文件的加载_第2张图片
Paste_Image.png
OAT文件的加载_第3张图片
Paste_Image.png

2.OAT文件的加载

通过dlopen加载到虚拟内存空间的共享库区域,通过dlsym找到“oatdata”和“oatlastword”,oatdata的地址即为OAT文件里面的oatdata段加载到内存中的开始地址,而符号oatlastword的地址即为OAT文件里面的oatexec加载到内存中的结束地址,通过读取oatdata section中的内容创建出OatFile,OatClass,OatMethod等数据结构

你可能感兴趣的:(OAT文件的加载)