gcc hello.c -o hello//没有开启FORTIFY保护
gcc -D_FORTIFY_SOURCE=1 -O1 hello.c -o hello //只会在编译的时候检查
gcc -D_FORTIFY_SOURCE=2 -O2 hello.c -o hello // 强检查
没有-O2的话是不会开启检查的,需要在编译的时候加上这个选项
RELRO
-z now
PIE
-fpie -pie
NX = -z execstack
CANARY = -fno-stack-protector
PIE = -no-pie
RELRO = -z norelro
PART = -fstack-protector -z lazy -no-pie
FORTIFY = -D_FORTIFY_SOURCE=2 -O2
disam = g++ -w
cpp = main.cpp
no_32 = iCourse-x86-no
all_32 = iCourse-x86-all
part_32 = iCourse-x86-part
no_64 = iCourse-x64-no
all_64 = iCourse-x64-all
part_64 = iCourse-x64-part
all:
$(disam) $(cpp) -m32 -o $(no_32) $(NX) $(CANARY) $(PIE) $(RELRO)
$(disam) $(cpp) -m32 -o $(all_32) $(FORTIFY)
$(disam) $(cpp) -m32 -o $(part_32) $(PART)
$(disam) $(cpp) -m64 -o $(no_64) $(NX) $(CANARY) $(PIE) $(RELRO)
$(disam) $(cpp) -m64 -o $(all_64) $(FORTIFY)
$(disam) $(cpp) -m64 -o $(part_64) $(PART)
clean:
rm $(no_32) $(all_32) $(part_32) $(no_64) $(all_64) $(part_64)

本文详细介绍了GCC编译器的各种安全选项,包括FORTIFY SOURCE、RELRO、PIE、NX、CANARY等,解释了它们如何增强程序的安全性,并提供了具体的编译命令示例。
4752

被折叠的 条评论
为什么被折叠?



