我是shellcodes的菜鸟,我正在尝试了解所有情况。我找到了很多代码来测试我在C中的shell代码,但令我惊讶的是它们是非常不可靠的,我无法理解这段代码:
int (*func)();
func = (int (*)()) code;
(int)(*func)();
或者这个:
int (*ret)() = (int(*)())code;
ret();
这相当于Javascript中的eval()
吗?它的运作方式如何?
答案 0 :(得分:2)
int (*func)();
是指向函数的指针(在C ++中不带参数),返回int
。
(*func)();
或只是func();
调用指向的函数。
(int (*)()) code;
是一个讨厌的类型转换,告诉编译器code
指向这样的函数。如果不是,但您仍尝试调用该函数,则该程序无效并且可能发生任何事情。
“Anything”包括实际执行shell代码,崩溃或其他内容。语言标准没有说。