@Barry wrote:
参考了dispatch_async(queue, block)中block代码块的定位
在dispatch_async(queue, block)里面寻找block的函数指针,但是发现在ARM64上的表现好像不太对,找不到*FuncPtr,操作如下:
将原文中的指令修改
me r --size 4 --format x
修改为
me r --size 8 --format x
(lldb) me r --size 8 --format x 0x16fd78420
0x16fd78420: 0x000000019fefb218 0x00000000c2000000
0x16fd78430: 0x00000001032b3164 0x0000000103413540
0x16fd78440: 0x000000013617ae40 0x0000000100000003
0x16fd78450: 0x00000001032a3ef4 0x00000001032b50d4
(lldb) po 0x000000019fefb218
NSStackBlock第一个数据的类型为:NSStackBlock(与文中相同)
第二个数据也跟文章一样0xc2000000(与文中相同)但是第三和第四个数据似乎不是分别对应int Reserved;和void *FuncPtr;
计算偏移量后,发现第三和第四个数据都不是指向一个函数的开端,所以判断应该不是*FuncPtr,请问应该怎样找到*FuncPtr呢?
Posts: 1
Participants: 1