Partial RELRO

  1. 使得.init_array .fini_array .jcr .dynamic .got在动态链接器(ld)初始化后不可写
  2. 仍然存在延迟绑定,[.plt+.got.plt]两节负责延迟绑定,无PLT的got表(.got)以及无需延迟绑定的got表(.plt.got+.got)初始化后不可写

Full RELRO

  1. 拥有与Partial的所有保护
  2. 禁止延迟绑定(lazy binding),在初始化完成后所有got表均不可写
  3. 高版本gcc会使用.plt.sec节,且会优化掉原本用于延迟绑定的push&jmp指令

又看了看(,发现在gcc-5中,即便是Full RELRO,还是使用.plt,所以section名称不是判定是否延迟绑定的依据