What does ASLR (Address Space Layout Randomization) do that complicates standard buffer overflow exploitation?
-
A
It encrypts the stack so shellcode cannot execute
-
B
It randomizes base addresses of the stack, heap, and libraries each run, making hardcoded addresses unreliable
-
C
It inserts stack canaries before every function return
-
D
It marks all memory pages as non-executable by default