Laut Wikipedia und MSDN ist ASLR erst ab Vista standardmäßig aktiviert, und selbst da wohl nur für Programme, bei denen das entsprechende Flag gesetzt ist (das flag signalisiert halt explizit, dass das Executable ASLR-kompatibel ist):
http://en.wikipedia.org/wiki/Address_sp ... ft_Windows
http://msdn.microsoft.com/en-us/library ... ainerCode3 (runterscrollen bis zum Abschnitt "Address Space Layout Randomization (ASLR)")
By default, Windows Vista and later will randomize system DLLs and EXEs, but DLLs and EXEs created by ISVs must opt in to support ASLR using the /DYNAMICBASE linker option.
Übrigens funktioniert ASLR laut MSDN nur, wenn auch für sämtliche geladenen DLLs ASLR aktiviert wurde (wohl ebenfalls über die besagten Flags im PE-Header):
ASLR moves executable images into random locations when a system boots, making it harder for exploit code to operate predictably. For a component to support ASLR, all components that it loads must also support ASLR. For example, if A.exe consumes B.dll and C.dll, all three must support ASLR.
Außerdem sollte man ASLR und DEP zusammen benutzen, damit das Ganze auch wirksam ist:
Important Note ASLR and DEP are only effective when used together; therefore ISVs should opt-in for both defenses (/DYNAMICBASE and /NXCOMPAT) for all binaries.
Grüße
Pascal