这个 C 片段是什么意思?
What does this C snippet mean?
我是 shellcode 的新手,我正在尝试了解所有情况。我找到了许多代码来测试我在 C 中的 shellcode,但令我惊讶的是它们非常难以阅读,我也无法理解这段代码:
int (*func)();
func = (int (*)()) code;
(int)(*func)();
或者这个:
int (*ret)() = (int(*)())code;
ret();
这是否等同于 Javascript 中的 eval()
?它是如何工作的?
int (*func)();
是指向 returns 和 int
.
的函数(在 C++ 中不带参数)的指针
(*func)();
或 func();
调用指向的函数。
(int (*)()) code;
是一个讨厌的类型转换,告诉编译器 code
指向这样一个函数。如果不是,但您仍然尝试调用该函数,则该程序无效并且可能发生任何事情。
"Anything" 包括实际执行 shell 代码,或崩溃,或其他。语言标准没说。
我是 shellcode 的新手,我正在尝试了解所有情况。我找到了许多代码来测试我在 C 中的 shellcode,但令我惊讶的是它们非常难以阅读,我也无法理解这段代码:
int (*func)();
func = (int (*)()) code;
(int)(*func)();
或者这个:
int (*ret)() = (int(*)())code;
ret();
这是否等同于 Javascript 中的 eval()
?它是如何工作的?
int (*func)();
是指向 returns 和 int
.
(*func)();
或 func();
调用指向的函数。
(int (*)()) code;
是一个讨厌的类型转换,告诉编译器 code
指向这样一个函数。如果不是,但您仍然尝试调用该函数,则该程序无效并且可能发生任何事情。
"Anything" 包括实际执行 shell 代码,或崩溃,或其他。语言标准没说。