c - -fno-stack-protector 有什么用?

标签 c buffer stack-overflow callstack

我用 C 编写了一个应用程序,我试图了解编译时 -fno-stack-protector 命令的用途。对于我的具体应用,是否使用此命令在防止缓冲区溢出方面没有区别。

我在网上看到 -fstack-protector-fno-stack-protector 命令分别启用和禁用堆栈粉碎保护器,但是如果我我自己编译应用程序,如何预先启用保护程序?命令的使用是否可能取决于应用程序运行的系统?

最佳答案

在标准/标准 GCC 中,堆栈保护器默认处于关闭状态。然而,一些 Linux 发行版已经修补 GCC 以默认打开它。在我看来,这是相当有害的,因为它破坏了编译任何未链接到标准用户空间库的能力,除非 Makefile 专门禁用堆栈保护器。它甚至会破坏 Linux 内核构建,除了带有此 hack 的发行版向 GCC 添加了额外的 hack 以检测内核正在构建并禁用它。

关于c - -fno-stack-protector 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712972/

相关文章:

java - 代码示例中的堆栈溢出解释

C strcpy_s - 缓冲区太小 && 0 错误

buffer - clEnqueueMapBuffer 和 clEnqueueWriteBuffer 有什么区别

c - 为什么我不能通过pcap从外部设备接收GVSP/UDP数据?

c - 将结构读/写到二进制文件中

c++ - 如何制作一个不刷新 std::cout 的简单 C++ 程序

python - 致命的Python错误: Cannot recover from stack overflow

c++ - 找出哪个对象/数组使用最多的堆栈内存

java - 以下代码的 java 等效代码是什么?

c - Gtk+ 3.0 : undefined reference 中的 GtkGlArea