你能帮我解释下面的C代码吗?

时间:2016-03-12 08:17:18

标签: c shellcode

int main(int argc, char **argv)
{    
   int (*func)();    
   func = (int (*)()) code;   
   (int)(*func)();    
}

变量代码中有一些shellcode

2 个答案:

答案 0 :(得分:0)

函数指针。此代码段应该可以帮助您理解。

#include <stdio.h>
int Hello();
int code();

int main(int argc, char **argv)
{    
   int (*func)(); //pointer to function that takes no arguments quivalent to: int (*func)(void);
   func =&Hello;
   int x = func();
   printf("%d\n", x);

    func = (int (*)()) code; // Assigns the pointer from the code function to the func pointer
    x = code();
    printf("%d", x);
}
int code()
{
    printf("code returns: ");
    return 500;
}

int Hello()
{
    printf("hello returns: ");
    return 1;
}

答案 1 :(得分:-2)

code可能是一个变量,对应于内存中某些机器代码的地址。然后,指向不带参数并返回int的函数的指针被设置为该地址并调用该函数。 int f()是没有param和int作为返回值的函数的原型,然后int (*pf)()是指向这样一个函数的指针。