控制流完整性(CFI) 在编译期插入类型校验,阻止攻击者将间接调用跳转到非预期函数;Intel CET 的 Shadow Stack 则在硬件层保存返回地址副本,抵御 ROP 返回地址篡改。
![]()
一、GCC 启用 CFI 与 CET 编译
bash
# 启用细粒度 CFI(需 LTO)与 CET 影子栈
gcc hardened.c -o hardened \
-flto \
-fcf-protection=full \
-fsanitize=cfi \
-fvisibility=hidden