gpt4 book ai didi

c - 是否可以使函数从堆栈上的字符串执行代码?

转载 作者:太空狗 更新时间:2023-10-29 16:52:17 24 4
gpt4 key购买 nike

#include <stdio.h>

int main(int argc, char** argv)
{
void (*p) (void);
/* this obviously won't work, but what string could I put in
here (if anything) to make this execute something meaningful?
Does any OS allow instructions to be read from
the stack rather than text area of the process image? */
char *c = "void f() { printf(\"Hello, world!\"); }";
p = ( void (*)() )c;
p();
return 0;
}

最佳答案

有点,但不是真的,没有eval()在 c 中,就像在许多脚本语言中一样。

但是,您所描述的有点像 Buffer Overflow exploit .

其中,您使用字符串将“代码”(不是c 语法,而是机器代码)写入缓冲区后的地址空间。这是一个不错的小tutorial的主题。

不要使用这些信息来编写病毒:(

关于c - 是否可以使函数从堆栈上的字符串执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3225124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com