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