断点生效:
接下来,我们需要仔细分析断点信息:
那么这里到底发生了什么?还记得PoC中的下面这部分信息吗?
mk_arr函数创建一个数组,第一个参数作为大小,第二个参数作为元素。大小为(0x20000000 0x40)/8=0x4000008,这将创建一个大小为0x4000008、元素值为0x41414141410000的数组。i2f函数用于将整数转换为浮点值,以便最终在内存中得到预期值。
我们现在知道rcx指向对象a的butterfly-0x10,因为它的大小是rcx 8,这使得butterfly rcx 0x10。在这段代码的其余部分中,我们看到r8、r10、rdi、r9、rbx、r12和r13都指向对象a的一个副本-具体来说是八个副本,edx不断地添加每个副本的大小。