gpt4 book ai didi

c - 为什么会出现段错误? (测试 Shellcode)

转载 作者:太空狗 更新时间:2023-10-29 17:06:39 25 4
gpt4 key购买 nike

我编写了一个简单的 ASM 文件并在我编写的 C 文件中运行它。我遇到了分割错误。但是,当我执行编译后的 ASM 文件时,我没有得到任何错误。

我正在运行 64 位并使用 32 位 shellcode。是这个问题吗?

不可能,因为我遇到了段错误:

char shellcode[] = "\x90"; //simple NOP in ASM
int main(int argc, char **argv)
{
int (*ret)();
ret = (int (*)()) shellcode;
(int)(*ret)();
}

有人可以运行这个并告诉我他们是否遇到段错误。我也使用了 3 或 4 个其他 C 文件。没有一个有效。

更新:

((void(*)(void))code)();

似乎可以代替这三行。

最佳答案

如上所述,shellcode 位于不可执行的内存中。尝试在启用 -fno-stack-protector 和 -z execstack 标志的情况下重新编译程序。

即:

gcc -fno-stack-protector -z execstack -O OutputFileName yourShellCode.c

关于c - 为什么会出现段错误? (测试 Shellcode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031175/

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