OAT文件的加载

1.OAT文件内容

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

Paste_Image.png

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

oatdata section的结构

Paste_Image.png
Paste_Image.png

2.OAT文件的加载

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容