ios应用程序加载分析(二)
为了不至于分析链条发生断层,请参阅
ios应用程序加载分析(一)
_dyld_objc_notify_register ---- sNotifyObjcInit 是如何关联上的
sNotifyObjcInit 分析源头
以上源码出自于dyld
上一段源码出自于libobjc, libdyld与libobjc通过_dyld_objc_notify_register架起桥梁
回到加载流程图
与 libSystem_initializer 衔接上,此时缺口补上
map_images()镜像文件类的信息 class ro rw protocols 处理
根据以上分析得到句柄出处 sNotifyObjcInit
arr_init()
SideTablesMap.init(); 初始化散列表
_objc_associations_init(); 关联对象管理 初始化
startWeakTableScan(); 扫描若引用
修复selector
Fix up old objc_msgSend_fixup call sites
实现 (有实现+load方法)的类
load_images() load方法 - c++函数 + load + main
+load
c++
镜像内的 c++方法 晚于 +load执行,objc镜像内的 c++方法 早于 +load执行 最后main
类加载主干流程总结
_dyld_objc_notify_register 之前,执行 static_init()
也就是objc镜像内的 attribute((constructor)) 修饰的c++函数会先执行
load_images 执行之后 -> doModInitFunctions, 执行 目标镜像 attribute((constructor)) 修饰的c++函数
ios应用程序加载分析(二)相关推荐
- ios应用程序加载分析(一)
app启动分析+猜测 首先通过入口函数main断点查看 nothing ... 通过load入口断点查看 得到大致的堆栈关键信息 (反向调用信息如下) dyld - _dyld_start dyld ...
- iOS底层原理之dyld应用程序加载
前言 众所周知,main作为程序的入口,但是在它之前发生了什么?有点好奇,让我们来瞅一瞅: 一.准备工作 1.代码 __attribute__((constructor)) void Func(){p ...
- iOS进阶之底层原理-应用程序加载(dyld加载流程、类与分类的加载)
iOS应用程序的入口是main函数,那么main函数之前系统做了什么呢? 我们定义一个类方法load,打断点,查看栈进程,我们发现dyld做了很多事,接下来就来探究到底dyld做了什么. 什么是dyl ...
- 【学习分享】2、创龙 TMS320C6748开发板程序加载和烧写(二)
此部分由于篇幅过长,将分为五个小点进行叙述,此处主讲基于串口的程序加载和烧写,所用器件为创龙TMS320C6748开发板.需要注意的点已在备注中进行说明. 如果需要从头开始进行本使用手册的阅读,欢迎阅 ...
- CANoe软件使用(二)——数据加载分析
CANoe软件使用(二)--数据加载分析 目录 新建CANoe工程 DBC和通道加载 数据分析 离线设置 数据查看 数据保存 目录 本节主要讲述下离线的CAN数据分析.通常情况下,工程师通过CANoe ...
- 借由ARM CORTEX-M芯片分析C程序加载和存储模型
https://zhuanlan.zhihu.com/p/22048373 写文章 借由ARM CORTEX-M芯片分析C程序加载和存储模型 王小军 1 年前 阿军最近在忙着血氧手环嵌入式系统的技术预 ...
- android隐私违规获取问题处理 及 Hook拦截处理记录 (VirtualXposted/epic等)及 android/iOS 多bundle加载方式修复方案
文章目录 1.如何检测/复现 android_id/Mac地址等权限被超前获取 ```但是,检测机构是如何检测我们的APP?``` 关于hooklogin插件 太极 ---- 以上基础工作完成---- ...
- Sideloady 下载安装使用教程,将各种的应用程序加载到你的 iPhone、iPad 或 Mac 上
Sideloady 是一款适用于 macOS 和 Windows 的免费应用程序,它的工作方式几乎与 Cydia Impactor 相同,但具有更多选项.更漂亮的用户界面并支持免费的 Apple 开发 ...
- 【OS学习笔记】十 实模式:实现一个程序加载器-程序加载器如何将用户程序加载到内存并执行
上一篇文章学习了以下内容: 用一种不同的分段方法,从另一个不同的的角度理解处理器的分段内存访问机制 使用循环和条件转移指令来优化主引导扇区代码 点击链接查看上一篇文章:点击链接查看 对于主引导扇区部分 ...
最新文章
- 人工智能元老痛批IBM:沃森是个骗局,这根本不是认知
- 【迁移2018-04-12 10:46:11】BeanCopier之MapStruct(一)
- html网页访问WebAPI中的方法遇到的问题
- springboot——kaptcha
- scrapy学习笔记(二)进阶使用
- 顺丰物流单号查询效果(可输入多个文本框)
- 【今日CV 视觉论文速览】21 Nov 2018
- DOCX是什么格式文件
- go Mutex (互斥锁)和RWMutex(读写锁)
- 【恋上数据结构】排序算法大全
- python课程-天津Python编程课程
- kafka学习_kafka学习(第一章 初识kafka)
- ActiveMQ 持久化
- 2017最新App Store 审核指南中文版
- 各种开源数据库同步工具汇总
- 关于 类的常成员函数 声明和定义处 都需要加 const的原因
- Altium Designer PCB 插入图片logo的方法
- 没有功德的人就在眼前--我看到了“裸男”
- 无需Avatarify 无需剪辑工具 一键生成多人版 “蚂蚁呀嘿“视频
- elasticsearch从入门到入门系列(四)---搜索高级使用
热门文章
- 2022-2027年中国农村网络零售行业市场深度分析及投资战略规划报告
- 计算机人物系列-约翰·冯·诺依曼
- 如何构建用户行为分析系统?
- 推荐:5款可以教你编程的游戏
- MySQL快速生成大量测试数据(100万、1000万、1亿)
- aoa定位算法matlab仿真,基于信号到达角度(AOA)的定位算法研究
- 从零开始搭建Node.js, Express, Ejs, Mongodb服务器
- android瀑布流布局源码,GitHub - dodola/android_waterfall: Android版的瀑布流布局
- Ajax实现网页部分更新
- jQuery对Ajax的升级简化