欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

ELF 格式深潜:GOT/PLT 延迟绑定机制与 Relro 防御

发表于:|最后更新:|分类:二进制安全|阅读:7106 次

为了加快程序启动速度,Linux ELF 动态链接器采用**延迟绑定(Lazy Binding)**策略,在首次调用函数时由 PLT 查找符号并回填 GOT。全保护 Full RELRO 会在启动时解析所有符号并将 GOT 设为只读,阻断 GOT Overwrite 攻击。

一、GCC 开启 Full RELRO 编译标志

bash
# 默认情况(Partial RELRO):GOT 表可写,易受劫持
gcc vulnerable.c -o vuln

# 开启安全防御(Full RELRO + Stack Canary + PIE)
gcc vulnerable.c -o secured \
    -Wl,-z,relro,-z,now \
    -fstack-protector-strong \
    -fPIE -pie