有人知道GCC的 -fstack-protector 是否会导致程序使用大量的CPU周期?说明here提及
-fstack-protector 发出额外的代码来检查缓冲区溢出,例如堆栈粉碎攻击。这是通过添加一个保护变量来完成的 弱势对象的功能。这包括调用的函数 alloca和缓冲区大于8字节的函数。守卫是 输入功能时初始化,然后检查 功能退出。如果防护检查失败,则会打印错误消息 程序退出。
另外,这比在检查缓冲区指针和大小的函数的开头编写代码要好吗?
答案 0 :(得分:0)
不应该导致CPU使用量的显着增加。如描述所述,堆栈保护涉及在函数入口处将特定值放在堆栈上并验证它在函数出口处没有更改。通常,函数执行 lot 比写入和读取一个值更多,因此这不应构成显着的开销。
堆栈保护应与正确编写代码一起使用。它无法捕捉到每一个错误,它可以被攻击者解决,但由于它会自动应用于每个功能,它可以帮助更快地检测到意外或故意的溢出。