最近,作为一名计算机工程专业的本科生,我一直在研究缓冲区溢出问题。出于兴趣,我开始研究和研究缓冲区溢出,但是当我试图在我自己的计算机上用 GCC 4.9.1(在 Debian Jessie 中)编译的 C 程序中实现它们时遇到了困难。
我听说在较新的编译器中有各种堆栈溢出保护,所以我认为我的问题是我的编译器版本太新了。要么,要么我没有使用正确的标志(无)进行编译。
那么是否有适合我的 GCC 版本来测试缓冲区溢出?还是我应该使用特定标志来防止堆栈保护和金丝雀?
感谢您的宝贵时间。
最佳答案
使用 -zexecstack -fno-stack-protector
禁用堆栈帧保护和 gcc
的不可执行堆栈。
在您的 Linux 系统上,您还必须使用以下方法禁用地址随机化 (ASLR):
echo 0 > /proc/sys/kernel/randomize_va_space
关于c - 在研究缓冲区溢出时我应该使用哪个版本的 GCC 或标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26245447/