这段代码在C++;做 这个C++代码片段是做什么的?我试着阅读了很多关于指针的资料,但我就是想不通 long address = *((long *)(another_address + 0x0)); int(*function)() = (int(*)())address;
编辑:另一个地址是vtable地址。我试图将其移植到Python,实际上是在询问指针是如何工作的(在代码段中)。这段代码在C++;做 这个C++代码片段是做什么的?我试着阅读了很多关于指针的资料,但我就是想不通 long address = *((long *)(another_address + 0x0)); int(*function)() = (int(*)())address;,c++,C++,编辑:另一个地址是vtable地址。我试图将其移植到Python,实际上是在询问指针是如何工作的(在代码段中)。(另一个地址+0x0)计算为另一个地址,然后转换为长*,然后取消引用 (int(*)()())address将address强制转换为一个不带参数的函数,并返回一个int,然后将其分配给具有相同签名的函数。我猜它手动解析vtable另一个_地址可能是vtable指针-指向函数指针数组的指针。代码提取该vtable插槽0中的地址,并将其强制转换为可以调用的函数指针。啊,对不起,另一个_地
(另一个地址+0x0)
计算为另一个地址,然后转换为长*
,然后取消引用
(int(*)()())address
将address
强制转换为一个不带参数的函数,并返回一个int
,然后将其分配给具有相同签名的函数。我猜它手动解析vtable另一个_地址
可能是vtable指针-指向函数指针数组的指针。代码提取该vtable插槽0中的地址,并将其强制转换为可以调用的函数指针。啊,对不起,另一个_地址是vtable的地址是。该代码旨在从vtable获取虚拟函数。我正试图将其移植到Python,所以我实际上是在问指针是如何工作的——可能应该在我的问题中包括这一点。我想我不明白这个问题。有什么特别不清楚的地方吗?