美文网首页
小记 关于Mach-o的个人理解

小记 关于Mach-o的个人理解

作者: Harry_upup | 来源:发表于2019-03-22 15:16 被阅读0次

最近想深度研究一下iOS的运行啊 底层啊 什么的,但是很多东西都不懂,比如这个Mach-o、i386,x86_64,armv6,armv7等等……一系列东西,现在就把自己理解的东西,小记一下;

通过网上的查阅 Mach-o是一种二进制文件格式,全称是Mach Object,它是一种用于记录可执行文件、对象代码、共享库、动态加载代码和内存转储的文件格式大多数基于 Mach 内核的操作系统都使用 Mach-O。NeXTSTEP、OS X 和 iOS 是使用这种格式作为本地可执行文件、库和对象代码的例子。

Mach-o包括3个部分

1.Header-包含该二进制文件的一般信息:字节顺序、(魔数)、cpu 类型、加载指令的数量等等。

2.(LoadCommants)加载指令-它是一张包含很多内容的表,内容包括区域的位置、符号表、动态符号表等。每个加载指令都包含一个元信息,比如指令类型、名称、在二进制文件中的位置等等。

3.(Data)数据-通常是对象文件中最大的部分。主要包含代码、数据,例如符号表,动态符号表等等

OS X 有两种类型的目标文件:Mach-O 文件和通用二进制文件,也叫作胖文件。它们之间的区别是:Mach-O 文件包含一种架构(i386、x86_64、arm64 等等)的对象代码,而胖文件可能包含若干包含不同架构(i386、x86_64、arm、arm64 等等)对象代码的对象文件。可以理解成胖文件包含很多Mach-o文件

接下来 了解一下上面所说的 i386,x86_64 

armv7|armv7s|arm64都是ARM处理器的指令集

i386|x86_64 是Mac处理器的指令集

i386是针对intel通用微处理器32位处理器

x86_64是针对x86架构的64位处理器

模拟器32位处理器测试需要i386架构,

模拟器64位处理器测试需要x86_64架构,

真机32位处理器需要armv7,或者armv7s架构,

真机64位处理器需要arm64架构。

了解dyld  (动态链接器)

在iOS系统中,每个程序依赖的动态库都需要通过dyld(位于/usr/lib/dyld)一个一个加载到内存,然而,很多系统库几乎是每个程序都会用到的,如果在每个程序运行的时候都重复的去加载一次,势必造成运行缓慢,为了优化启动速度和提高程序性能,共享缓存机制就应运而生。所有默认的动态链接库被合并成一个大的缓存文件,放到/System/Library/Caches/com.apple.dyld/目录下,按不同的架构保存分别保存着

相关文章

  • 小记 关于Mach-o的个人理解

    最近想深度研究一下iOS的运行啊 底层啊 什么的,但是很多东西都不懂,比如这个Mach-o、i386,x86_64...

  • 创意方法丨创意就是常遭美好记忆

    人的记忆结构 最低层级是理解,理解再回放 ———————————————————————————— 关于最小记忆单...

  • Mach-O文件结构

    主要内容: 理解可执行文件 理解Mach-O文件 Mach-O文件结构 Mach Header Load Comm...

  • iOS逆向:fishhook原理分析

    前言 这里需要对 mach-o 有比较全面的理解,详情见 mach-O结构分析[https://www.jians...

  • Mach-o 小记

    https://opensource.apple.com/source/dyld/dyld-132.13/src/...

  • Mach-O

    该文档主要翻译苹果关于Mach-o编程,可以查看Mach-O programming查看英文版本 介绍 构建Ma...

  • Mach-O的符号与链接

    Mach-O符号表 点击了解更多关于Mach-O[https://www.jianshu.com/p/2dbf81...

  • Mach-O

    开头 研究Mach-O结构有段时间,尝试了解Mach-O结构体对fishhook实现原理的理解有帮助,看了很多分析...

  • Mach-O 学习小结(四)

    Mach-O 学习小结(四) 最近学习了一下 Mach-O ,这里做个笔记记录,整理思路,加深理解。 附上下文所用...

  • iOS启动流程

    关于mach-o mach-O文件为Mach Object文件格式的缩写,它是一种用于可执行文件,目标代码,动态库...

网友评论

      本文标题:小记 关于Mach-o的个人理解

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