iOS 开发 Objective-C

iOS 底层原理 day04 dyld Mach-O

2020-07-27  本文已影响0人  望穿秋水小作坊

一、动态库共享缓存(dyld shared cache)

  1. 从 iOS3.1 开始,为了提高性能,绝大部分的系统动态库文件都打包存放到了一个缓存文件中(dyld shared cache)
  2. 缓存文件iPhone路径: /System/Library/Caches/com.apple.dyld/dyld_shared_cache_armX
  3. dyld_shared_cache_armX 的 X 代表 ARM 处理器指令集架构
  4. 目前仅有 iPhone5、iPhone5C、iPad4 是 v7s架构,iPhone5s 以后的手机和 iPad 都是 arm64 的架构。
  5. 所有指令集原则上都是向下兼容的
  6. 动态库共享缓存非常明显的好处是节省内存(节约一些动态化共有信息描述)
  7. 现在 ida、hopper 反编译工具都可以识别动态库共享缓存

二、** Mach-O 的基本结构**: Mach-O 文件包含 3 个主要区域

  1. Header
  1. Load commands
  1. Raw segment data

三、常见的 Mach-O 文件类型

  1. MH_OBJECT
  1. MH_EXCUTE:可执行文件

  2. MH_DYLIB:动态库文件

  1. MH_DYLINKER:动态链接编辑器
  1. MH_DSYM:存储着二进制文件符号信息的文件

四、查看的 Mach-O 文件类型信息的方法

  1. file 指令
carrotdeMacBook-Pro:clutch carrot__lsp$ file Beautiful_clutch 
Beautiful_clutch: Mach-O 64-bit executable arm64
  1. otool 指令
carrotdeMacBook-Pro:clutch carrot__lsp$ otool -l Beautiful_clutch | grep crypt
     cryptoff 16384
    cryptsize 98304
      cryptid 0
  1. MachOView Mac 上的 GUI 工具

五、dyld 和 Mach-O

  1. dyld 用于节奏一下类型的 Mach-O 文件
  1. APP 的可执行文件、动态库都是由 dyld 负责加载的
上一篇下一篇

猜你喜欢

热点阅读