First of all, the ALSR used in OSX 10.6 and below did not randomize all memory areas . As far as I know, ASLR is enabled for all running executables. It is very easy to test, just run the debugger, set a breakpoint and write down any memory address on the stack. Restart the application and check if the same variable has the same memory address.
I think in OSX 10.7 they started randomizing the dynamic linker. Which linux, bsd and even windows systems have been working for several years.
OSX, ASLR export DYLD_PRINT_SEGMENTS=1, . TEXT . . , ASLR.
- . . GCC . , , . , , , .
NX, , , 1999 , . , , , , ret-to-libc ROP (- aslr).