如何在 iOS 9.3.5 上为 v0rtex 漏洞找到合适的 zone_map 偏移量?

How can I find the proper zone_map offset for v0rtex exploit on iOS 9.3.5?

我正在借助 siguza 的 v0rtex 漏洞构建一个 APNonce setter 工具,现在,我拥有我需要的大部分偏移量,但是 zone_map无论我做什么,偏移量似乎都是错误的。

我尝试了什么:

我解密了内核并在 macOS 上的 IDA 中加载了它。搜索 zone_map 的字符串,但没有找到任何相关内容。

我搜索 zone_init 时运气不错,但我关注的 xref 并没有找到任何结果。

我的设备是 iPod Touch 5 和 iOS 9.3.5。我找到的偏移量是 0xffffffff0070d1aa4 但它使内核恐慌所以它不正确。

ZONE_MAP 偏移量不是很容易找到,但我将在下面详细说明应该有效的方法。

一个警告:我为此使用了 Hopper,而不是 IDA Pro。不过,您可以使用 Hopper 的演示版。

步骤 1: 解密您的 KernelCache。确保它已解密,否则所有其余步骤基本上都会失败。您可以为此使用 Decrypt0r。当 Decrypt0r 输出以下输出时,您就知道自己很好:

Enter key for /Users/geosn0w/Desktop/kernelcache.release.n78: 87aa19c72db6e662d6c3dbcf74da88026fda5a66469baa7e271725918133cd2f
Enter key IV for /Users/geosn0w/Desktop/kernelcache.release.n78: 2692e6004e6240aab57f2affa0daedc0
[DEBUG] Opening /Users/geosn0w/Desktop/kernelcache.release.n78
Parsed TYPE element
Parsed DATA element
Parsed SEPO element
Parsed KBAG element
Parsed KBAG element
File opened successfully
Setting Img3 Key and IV
Fetching KBAG element from image
Found KBAG element in image
KBAG Type = 256, State = 1
Decrypting Img3 file
Fetching DATA element from image
Found DATA element in image
Setting keys to decrypt with
Performing decryption...
magic = 0x706d6f63
Image compressed, decompressing
signature = 0x706d6f63
compression_type = 0x73737a6c
Found LZSS compression type
Found output file listed as /Users/geosn0w/Desktop/kernelcache.release.n78.dec
Image claims it's decrypted, dump raw data
Closing Img3 file
/Users/geosn0w/Desktop/kernelcache.release.n78.dec copied to the root of IPSW folder

第 2 步: 打开 Hopper Disassembler 并弹出解密的 KernelCache 里面的文件。内核很大,所以给它时间来分析它。它 可能需要几分钟。

第 3 步: 成功分析内核文件后,导航至 Hopper 中的“字符串”选项卡并搜索 zone_init: kmem_suballoc failed.

第四步:双击出现的单个结果,然后双击DATA XREF: subXXXXXXXXXXX子程序交叉引用。

第 5 步: 如果您执行了上述所有操作,您将跳转到包含类似 ; :lower16:(0x803bde69 - 0x80036856), "\\"zone_init: kmem_suballoc failed\\"", CODE XREF=sub_80032808+6204 的子例程。双击最右边的 CODE XREF=sub_XXXXXXXX 部分。

第 6 步: 您的偏移量是您跳转到的位置的第一个 QWORD。在我的例子中,它是 0x8003684a,这是 ZONE_MAP 的偏移量。