Secondo Wikipedia, il bit NX è impostato per tutti i binari x64:
OS X for Intel supports the NX bit on all CPUs supported by Apple (from 10.4.4 – the first Intel release – onwards). Mac OS X 10.4 only supported NX stack protection. In Mac OS X 10.5, all 64-bit executables have NX stack and heap; W^X protection. This includes x86-64 (Core 2 or later) and 64-bit PowerPC on the G5 Macs.
Tuttavia, se l'eseguibile non è 64 bit: Mach-O executable i386
?
Allo stesso modo, per ASLR, Wikipedia afferma che è abilitato per impostazione predefinita per 10.7 e versioni successive:
In Mac OS X Lion 10.7 (released July 2011), Apple expanded their implementation to cover all applications, stating "address space layout randomization (ASLR) has been improved for all applications. It is now available for 32-bit apps (as are heap memory protections), making 64-bit and 32-bit applications more resistant to attack."
Questo significa che non c'è modo di disattivarlo tramite un'opzione del compilatore? Se c'è, come posso verificare che l'applicazione non abbia? Ci sono delle analogie con Windows, dove alcune librerie potrebbero essere ASLR-ed altre?