gcc编译中保护机制的关闭和开启

  • NX:不允许执行栈上的数据,即无法使用JMP ESP;

    1
    2
    -z execstack / -z noexecstack
    (关闭/开启)
  • Canary:栈里插入cookie信息;

    1
    2
    -fno-stack-protector / -fstack-protector / -fstack-protector-all
    (关闭/开启/全开启)
  • PIE:地址随机化,另外打开后会有get_pc_thunk;

    1
    2
    -no-pie / -pie
    (关闭/开启)
  • RELRO:对GOT表具有写权限;

    1
    2
    -z norelro / -z lazy / -z now
    (关闭/部分开启/完全开启)