【细谈Class-dump的原理】Class-dump其实是读取mach-o里的相关信息,在这里我们要借助于MachOView来做可视化的分析,具体是怎么样的一个dump的流程:
1.首先遍历loadcommands找到LC_SEGEMENT_64(__DATA),Section为__objc_classlist类列表
文章图片
2.通过上图的Offset直接定位到Setcion64(__DATA,__objc_classlist)类列表
文章图片
3.以上图中的类列表中的第一个类作为例子:得知存放的数据为0x01002149E0,在MachOView查找得知是在Section64(__DATA,__objc_data)下,关键在Data数据里
文章图片
4.通过上图的Data数据得知,类的信息基本上存放在0x0100205BB8地址下,发现会存放在Section64(__DATA,__objc_const)里
文章图片
5.通过上图找到所有方法即Base Methods 0x1002057CB
文章图片
图中关联Implementation部分即为代码实现(_TEXT,__text)部分,由此可得到符号和实现的关联关系 ,varuable64list和property64list分别代表类的变量和属性点列表
推荐阅读
- ios|Tenorshare UltData Mac(专业iOS数据恢复工具)
- 使用Calabash进行Android和iOS UI测试
- 苹果发布 iOS 15.5 正式版(减少卡顿更流畅、支持部分应用第三方支付)
- 适用于iOS和Android的7种最佳隐私浏览器
- 如何在iOS上构建无限Runner(Cocos2D,自动化等)
- iOS用户界面(故事板,NIB和自定义代码)
- iOS开发人员指南(从Objective-C到学习Swift)
- 简而言之Apple Watch(针对iOS开发人员的功能介绍)
- iOS 8应用程序扩展教程