内容提要
在 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 段位置发生了变化,影响了符号解析和动态库的使用。