细谈Class-dump的原理

Class-dump其实是读取mach-o里的相关信息,在这里我们要借助于MachOView来做可视化的分析,具体是怎么样的一个dump的流程:
1.首先遍历loadcommands找到LC_SEGEMENT_64(__DATA),Section为__objc_classlist类列表
细谈Class-dump的原理_第1张图片
2.通过上图的Offset直接定位到Setcion64(__DATA,__objc_classlist)类列表
细谈Class-dump的原理_第2张图片
3.以上图中的类列表中的第一个类作为例子:得知存放的数据为0x01002149E0,在MachOView查找得知是在Section64(__DATA,__objc_data)下,关键在Data数据里
细谈Class-dump的原理_第3张图片
4.通过上图的Data数据得知,类的信息基本上存放在0x0100205BB8地址下,发现会存放在Section64(__DATA,__objc_const)里
细谈Class-dump的原理_第4张图片

5.通过上图找到所有方法即Base Methods 0x1002057CB
细谈Class-dump的原理_第5张图片
图中关联Implementation部分即为代码实现(_TEXT,__text)部分,由此可得到符号和实现的关联关系 ,varuable64list和property64list分别代表类的变量和属性点列表

你可能感兴趣的:(ios)