iOS小技能:dylb 的加载流程

本文详细介绍了dyld的加载流程,包括dyld_shared_cache的分析、dyld在程序执行前的准备工作以及dyld如何处理rebase和bind。dyld使用fixup chain优化了动态链接,减少了Mach-O文件大小。在程序加载过程中,dyld负责加载依赖的dylibs,进行地址修正和符号绑定,执行类的+load方法。文章还提到了dyld_startup.s和dyld.cpp中的关键步骤。
摘要由CSDN通过智能技术生成

前言

dyld 这种格式的表示是动态链接,编译的时候不会被编译到执行文件中,在程序执行的时候才 link,这样就不用算到包的大小里,而且也能够不更新执行程序就能够更新库。

动态库加载器/usr/lib/dyld,__DATA segment的__dyld 是section占位符,用于动态链接器。

Fixup chain 是 Apple 在 iOS15 系统上所应用的一种新的动态链接技术,Fixup chain 可以看作是一个链表,其中每个节点存储了一条如何进行 rebase / bind 操作的信息,并且还带有指向下一个链表地址的信息;dyld 可以逐个节点遍历这条链表,对每个节点根据其提供的信息进行 rebase / bind,最终完成整个 rebase / bind过程。

All programs and dylibs built with a deployment target of macOS 12 or iOS 15 or later now use the chained fixups format. This uses different load commands and LINKEDIT data, and won’t run or load

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iOS逆向

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值