C 在NOP幻灯片中获取SIGSEGV

C 在NOP幻灯片中获取SIGSEGV,c,gdb,reverse-engineering,C,Gdb,Reverse Engineering,我试图从main返回到NOP幻灯片,但当程序返回到第一个NOP操作时,我得到一个SIGSEGV。 我是不是出了什么问题?看不出问题所在 但是当程序返回到第一个NOP操作时,我得到一个SIGSEGV 看起来你的NOP在堆栈上 默认情况下,堆栈不可执行,因此应为SIGSEGV。您可以检查二进制文件是否是为非可执行堆栈构建的,如下所示: readelf -Wl a.out | grep GNU_STACK GNU_STACK 0x000000 0x0000000000000000 0x0

我试图从main返回到NOP幻灯片,但当程序返回到第一个NOP操作时,我得到一个SIGSEGV。 我是不是出了什么问题?看不出问题所在

但是当程序返回到第一个NOP操作时,我得到一个SIGSEGV

看起来你的NOP在堆栈上

默认情况下,堆栈不可执行,因此应为SIGSEGV。您可以检查二进制文件是否是为非可执行堆栈构建的,如下所示:

readelf -Wl a.out | grep GNU_STACK
  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW  0x10
注意RW而不是RWE权限


要构建具有可执行堆栈的程序,请在链接时使用-Wl,-z,execstack。

可能该页面没有执行权限?我如何检查?抱歉,我只能帮您这么多了。