如何为iOS 9.3.5上的v0rtex漏洞找到正确的zone_map偏移量
针对iPod Touch 5 iOS 9.3.5 查找zone_map偏移的解决方案
首先纠正现有错误:你当前使用的0xffffffff0070d1aa4为64位内核地址格式,iPod Touch 5搭载A5 32位架构,iOS 9.3.5 32位内核虚拟地址起始为0x80000000,该值本身不符合架构要求,必然触发内核panic。
具体查找步骤
- 确认内核文件正确性:你解密的内核必须是iPod Touch 5(产品代号n78)对应iOS 9.3.5的
kernelcache.release.n78,加载到IDA时选择ARM 32位架构解析,不要选择ARM64。 - 直接搜索符号:32位iOS 9内核保留了
_zone_map符号导出,直接在IDA的符号列表中搜索_zone_map,对应的地址减去内核基址0x80000000就是所需偏移。 - 无符号时从
zone_init推导:- 进入
_zone_init函数,找到对_vm_map_create的调用 - 该函数返回的第一个被全局存储的
vm_map_t类型变量就是zone_map,查看后续存储该返回值的汇编指令,类似LDR R1, =_zone_map后的地址就是zone_map的虚拟地址 - 用虚拟地址减去内核基址
0x80000000得到最终偏移
- 进入
- 验证值参考:iPod Touch 5 iOS 9.3.5的公开可用zone_map偏移为
0x59e218,可直接使用验证。
注意:所有传入v0rtex漏洞的偏移都为相对内核基址的偏移,不要直接使用虚拟地址作为偏移传入。
内容的提问来源于stack exchange,提问作者danielBinx
相关产品推荐
相关产品推荐

