0

我有一个 Core i7 720QM 处理器,并且正在运行 Slackware 13.37(32 位)作为虚拟机。作为一项课堂作业,我必须编写一个易受攻击的程序并粉碎堆栈。但是,在大多数计算机上,这不起作用,因为存在某种堆栈执行预防(NX 位?),当 CPU 检测到尝试在堆栈上执行数据时,这会产生“分段错误”。

有没有办法通过sysctl或类似的方式向内核发出信号以忽略这一点?

4

2 回答 2

2
$ sudo apt-get install execstac

应该安装execstack,这是一个修改 ELF 标头以启用/禁用目标二进制文件堆栈上的 NX 保护的程序。

$ execstack -s vuln

应该使您的示例程序的堆栈可执行。

于 2011-09-22T09:37:06.040 回答
1

像这样编译你的程序

gcc -fno-stack-protector -z execstack <sourcefile> -o <outputfile>
于 2013-02-16T00:13:13.953 回答