野指针问题: 复习橙其技术

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

背景与思路:

本文严重参照《如何定位 Obj-C 野指针随机 Crash ( 三篇 ) 》

橙其第一篇,提高野指针的出现 crash 的概率

因为野指针引起的崩溃,不是必现

已经分配的内存,与指向他的指针,存在 1 对多的关系

分配的内存,被标记回收了,随时可能被写入

写入的内容的随机的,体现出野指针, 崩不崩溃,啥时候崩溃的随机性质

这个时候,使用苟活的指针,很可能取出错误的内容,再去执行原来类的方法

一般出现这个错误,EXC_BAD_ACCESS

思路

第一篇采用手动代码,内存污染的形式,

通过 fishhook, hook 对象的 free 方法,

拿到 free 的对象指针,涂改为 0x55

memset(obj, 0x55, memSiziee);

将随机问题,确定化。只要 free 掉,就不是原来的了

第 2 篇,极限提高野指针的出现 crash 的概率

该释放的内存,有可能我们代码涂成了 0x55,

苹果的操作系统,又分配了同样类型的对象,

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值