gpt4 book ai didi

c - x86 asm 崩溃的应用程序

转载 作者:行者123 更新时间:2023-12-02 05:45:31 24 4
gpt4 key购买 nike

char program[3] = { 0x6a,  0x0a, 0xC3 }; //push 10; ret;
char (*p)(void) = program;
printf("char = %c \n", p());

这段代码崩溃了。为什么?

下面的代码可以正常工作:

char program[3] = { 0x90,  0x90, 0xC3 }; //nop; nop; ret
void (*p)(void) = program;
p();

最佳答案

因为您需要通过从堆栈中弹出来清理您的堆栈。阅读有关 ret 指令的更多信息 - 它将使用堆栈中的值加载 cs:ip!

关于c - x86 asm 崩溃的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558919/

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