这个C片段是什么意思?

时间:2017-11-21 00:51:00

标签: c function-pointers shellcode

我是shellcodes的菜鸟,我正在尝试了解所有情况。我找到了很多代码来测试我在C中的shell代码,但令我惊讶的是它们是非常不可靠的,我无法理解这段代码:

int (*func)();
func = (int (*)()) code;
(int)(*func)();

或者这个:

int (*ret)() = (int(*)())code;
ret();

这相当于Javascript中的eval()吗?它的运作方式如何?

1 个答案:

答案 0 :(得分:2)

int (*func)();是指向函数的指针(在C ++中不带参数),返回int

(*func)();或只是func();调用指向的函数。

(int (*)()) code;是一个讨厌的类型转换,告诉编译器code指向这样的函数。如果不是,但您仍尝试调用该函数,则该程序无效并且可能发生任何事情。

“Anything”包括实际执行shell代码,崩溃或其他内容。语言标准没有说。