Starting with
Windows XP Service Pack 2 and
Windows Server 2003 Service Pack 1, the NX features were implemented for the first time on the
x86 architecture.
Microsoft Windows uses NX protection on critical
Windows services exclusively by default. Under Windows XP or Server 2003, the feature is called
Data Execution Prevention (abbreviated DEP), and it can be configured through the advanced tab of "System" properties. If the
x86 processor supports this feature in hardware, then the NX features are turned on automatically in Windows XP/Server 2003 by default. If the feature is not supported by the x86 processor, then no protection is given.
"Software DEP" is unrelated to the NX bit, and is what Microsoft calls their enforcement of Safe Structured Exception Handling. Software DEP/SafeSEH checks when an exception is thrown to make sure that the exception is registered in a function table for the application, and requires the program to be built with it.
Early implementations of DEP provided no
address space layout randomization (ASLR), which allowed potential
return-to-libc attacks that could have been feasibly used to
disable DEP during an attack. The
PaX documentation
elaborates on why ASLR is necessary; a
proof-of-concept was produced detailing a method by which DEP could be circumvented in the absence of ASLR. It may be possible to develop a successful attack if the address of prepared data such as corrupted images or
MP3s can be known by the attacker. Microsoft added ASLR functionality in
Windows Vista and
Windows Server 2008 to address this avenue of attack.