iOS 底层系列 - Mach-O 介绍

395 阅读1分钟

Mach-O 介绍

常见的Mach-O文件类型

Mach-O 结构

详解

Header 头部:

  • 保存了一些基本信息,包括了该文件运行的平台、文件类型、LoadCommands的个数等等

Load commands 加载命令

  • 可以理解为加载命令,在加载Mach-O文件时会使用这里的数据来确定内存的分布以及相关的加载命令。比如我们的main函数的加载地址,程序所需的dyld的文件路径,以及相关依赖库的文件路径。

Data 数据:

  • 这里包含了具体的代码、数据等等。

Data 段

  • __TEXT 代码段: 只读,包括函数,和只读的字符串,上图中类似__TEXT,__text的都是代码段

  • __DATA 数据段: 读写,包括可读写的全局变量等,上图类似中的__DATA,__data都是数据段

  • __LINKEDIT : __LINKEDIT 包含了方法和变量的元数据(位置,偏移量),以及代码签名等信息。