gcc -fno-stack-protector选项

时间:2012-03-06 08:44:30

标签: c gcc stack stack-overflow

我正在开展一个学校项目,基本上我们正在尝试了解堆栈溢出。我正在处理的一些示例代码基本上是:(已修剪)

char test[10];
int i;
for (i=0;i < 10000;i++) {
    test[i] = 'a';
}

当我使用gcc编译它时,一切都运行良好和花花公子。 Gcc自动保护堆栈,永远不会让它溢出。现在,如果我尝试使用gcc -fno-stack-protector ....完全相同的程序运行。我甚至在汇编文件(-S选项)上做了差异,它们是相同的。是什么赋予了?我搜索了手册页,并没有提到-fno-stack选项...在线的所有内容都指向-fno-stack-protector选项,但我根本无法重新创建任何东西......

提前感谢您的帮助。 :)

1 个答案:

答案 0 :(得分:3)

你确定吗?我给出了(iff堆栈保护未被禁用):

.L2:
        cmpl    $9999, -36(%rbp)
        jle     .L3
        movq    -8(%rbp), %rdx
        xorq    %fs:40, %rdx
        je      .L5
        call    __stack_chk_fail

int test() {
char test[10];
int i;
for (i=0;i < 10000;i++) {
  test[i] = 'a';
 }
}