背景与思路:
本文严重参照《如何定位 Obj-C 野指针随机 Crash ( 三篇 ) 》
橙其第一篇,提高野指针的出现 crash 的概率
因为野指针引起的崩溃,不是必现
已经分配的内存,与指向他的指针,存在 1 对多的关系
分配的内存,被标记回收了,随时可能被写入
写入的内容的随机的,体现出野指针, 崩不崩溃,啥时候崩溃的随机性质
这个时候,使用苟活的指针,很可能取出错误的内容,再去执行原来类的方法
一般出现这个错误,EXC_BAD_ACCESS
思路
第一篇采用手动代码,内存污染的形式,
通过 fishhook, hook 对象的 free 方法,
拿到 free 的对象指针,涂改为 0x55
memset(obj, 0x55, memSiziee);
将随机问题,确定化。只要 free 掉,就不是原来的了
第 2 篇,极限提高野指针的出现 crash 的概率
该释放的内存,有可能我们代码涂成了 0x55,
苹果的操作系统,又分配了同样类型的对象,
( 起始地址,也相同 )
这样,还是不清楚崩溃的情况,
上文的操作,白费。
野指针保活思路
- 使用一个队列 ( 数

本文深入探讨了野指针导致的崩溃问题,通过提高出现崩溃的概率来定位问题。文章分为三个部分:首先介绍如何手动代码实现内存污染以确定化野指针问题;其次,通过保活思路,使用队列和互斥锁来跟踪已释放内存;最后,讨论野指针崩溃的定位方法,利用重写isa和转发方法获取崩溃信息。内容涉及iOS app中的野指针现象和ARC环境下的挑战。
最低0.47元/天 解锁文章
17万+

被折叠的 条评论
为什么被折叠?



