The Hard Requirement: An Executable Region
- The CPU will only run bytes from memory marked executable.
- Classic "return-to-shellcode" assumes the stack (or the target buffer) is executable — historically true, not anymore.
- If the region is writable but not executable, the jump into shellcode faults instead of running.
Key Takeaway
Injected shellcode needs a Writable AND Executable page — precisely what modern defenses remove.