According to Wiki, ASLR randomly arranges the address space positions of key data areas of a process, including the base of the executable and the positions of the stack, heap and libraries.
Conceptually, ASLR prevents buffer overflow exploits that rely on knowledge of the process memory address layout. While I understand that the more randomization the better, would it be useful to only randomize the base of the executable, and leave the rest unchanged, relative to this base? If an attacker has trouble getting the base address of the executable, he will have trouble getting the base address of other areas of the executable, right? Or am I missing something?
mmap()
, rather than ASLR).