美文网首页
Mach-o文件详解

Mach-o文件详解

作者: 孙健会员 | 来源:发表于2023-11-22 16:57 被阅读0次

    Mach-O文件格式

    image.png

    Header

    image.png

    Load Commands

    load commnads紧跟在header之后,告诉内核和dyld,如何将App运行所需要的资源加载入内存中。比如main函数的加载地址,动态链接器dyld的文件路径,以及相关依赖库的文件路径,还有Data中的Segment如何加载入内存。


    image.png

    LC_SEGMENT_64(_PAGEZERO)是一个特殊的Segment,这个Segment其实是苹果虚拟出来的,只是一个逻辑上的段,而在Data中,根本没有对应的内容,也没有占用任何磁盘空间。LC_SEGMENT_64(_PAGEZERO)在VM中被置为Read only,逻辑上占用APP最开始的一段内存空间,用来处理空指针。由上图可以看到其vm size是4294967296字节 = 4GB,但是其真正的物理地址File size和File offset都是0。

    LC_LOAD_DYLIB

    在 Load Commands 里,有很多 LC_LOAD_DYLIB 命令,用来加载动态库,包括系统动态库和我们自己添加的动态库


    image.png

    __TEXT

    image.png

    __DATA

    image.png

    相关文章

      网友评论

          本文标题:Mach-o文件详解

          本文链接:https://www.haomeiwen.com/subject/fiziwdtx.html