Linux GCC编译器提供了多种安全设置选项,以增强编译出的程序的安全性。以下是一些常见的安全设置选项及其说明:
FORTIFY_SOURCE:
gcc -O2 -D_FORTIFY_SOURCE=2 -o test test.cPIE 和 fPIE:
gcc -fpie -pie helloworld.cgcc -fPIE -pie helloworld.cNX(DEP):
-z execstack 启用堆栈执行保护,-z noexecstack 禁用。堆栈保护:
-fstack-protector-fstack-protector-strongRELRO:
-z relro:关闭重定位表保护(默认)。-z now:全部开启重定位表保护。-z,relro:部分开启重定位表保护。PIC 和 fPIC:
-fpic-fPIC地址空间布局随机化(ASLR):
其他选项:
-z execstack:启用堆栈执行保护。-z noexecstack:禁用堆栈执行保护。-z,relro:部分开启重定位表保护。-z,now:全部开启重定位表保护。通过合理配置这些安全选项,可以显著提高编译出的程序的安全性,防止多种常见的安全漏洞。