iOS 18 中 libdyld.dylib/dyld 的一些变化

iOS 18 中 libdyld.dylib/dyld 的一些变化

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

在 iOS 18 中,libdyld.dylib 的 __dyld4 段从 _DATA_DIRTY 移到了 __TPRO_CONST。LibdyldDyld4Section 结构体用于指向 dyld_all_image_infos。开启 Xcode 的 Thread Performance Checker 后,libRPAC.dylib 会被注入,影响系统 API 的符号解析,可能需要调整硬编码符号查找。

🎯

关键要点

  • 在 iOS 18 中,libdyld.dylib 的 __dyld4 段从 _DATA_DIRTY 移到了 __TPRO_CONST。

  • LibdyldDyld4Section 结构体用于指向 dyld_all_image_infos。

  • LibdyldDyld4Section 的地址通过 libdyld.dylib 的 __dyld4 section 指示。

  • Xcode 中开启 Thread Performance Checker 后,会自动注入 libRPAC.dylib 动态库。

  • libRPAC.dylib 会 HOOK 很多系统原生 API,符号会被替换为 _interposed 和 _replacement 开头。

  • 需要对硬编码符号查找进行兼容适配,以应对 dyld 相关符号解析的变化。

延伸问答

iOS 18 中 libdyld.dylib 的 __dyld4 段发生了什么变化?

在 iOS 18 中,libdyld.dylib 的 __dyld4 段从 _DATA_DIRTY 移到了 __TPRO_CONST。

LibdyldDyld4Section 结构体的作用是什么?

LibdyldDyld4Section 结构体用于指向 dyld_all_image_infos。

开启 Xcode 的 Thread Performance Checker 会有什么影响?

开启后会自动注入 libRPAC.dylib 动态库,影响系统 API 的符号解析。

libRPAC.dylib 是如何影响系统 API 的?

libRPAC.dylib 会 HOOK 很多系统原生 API,符号会被替换为 _interposed 和 _replacement 开头。

在 iOS 18 中,如何处理硬编码符号查找的兼容性问题?

需要对硬编码符号查找进行兼容适配,以应对 dyld 相关符号解析的变化。

iOS 18 中 dyld 的变化与之前版本相比有什么不同?

iOS 18 中 dyld 的 __dyld4 段位置发生了变化,影响了符号解析和动态库的使用。

🏷️

标签

➡️

继续阅读