another approach to preventing stack buffer overflow exploitation is to enforce a memory policy on the stack memory region that disallows execution from the stack (w^x, "write xor execute"). this means that in order to execute shellcode from the stack an attacker must either find a way to disable the execution protection from memory, or find a way to put their shellcode payload in a non-protected region of memory. this method is becoming more popular now that hardware support for the no-execute flag is available in most desktop processors.