细谈Class-dump的原理

【细谈Class-dump的原理】Class-dump其实是读取mach-o里的相关信息,在这里我们要借助于MachOView来做可视化的分析,具体是怎么样的一个dump的流程:
1.首先遍历loadcommands找到LC_SEGEMENT_64(__DATA),Section为__objc_classlist类列表
细谈Class-dump的原理
文章图片

2.通过上图的Offset直接定位到Setcion64(__DATA,__objc_classlist)类列表
细谈Class-dump的原理
文章图片

3.以上图中的类列表中的第一个类作为例子:得知存放的数据为0x01002149E0,在MachOView查找得知是在Section64(__DATA,__objc_data)下,关键在Data数据里
细谈Class-dump的原理
文章图片

4.通过上图的Data数据得知,类的信息基本上存放在0x0100205BB8地址下,发现会存放在Section64(__DATA,__objc_const)里
细谈Class-dump的原理
文章图片

5.通过上图找到所有方法即Base Methods 0x1002057CB
细谈Class-dump的原理
文章图片

图中关联Implementation部分即为代码实现(_TEXT,__text)部分,由此可得到符号和实现的关联关系 ,varuable64list和property64list分别代表类的变量和属性点列表

    推荐阅读