Según Wikipedia, el bit NX está configurado para todos los binarios x64:
OS X para Intel admite el bit NX en todas las CPU compatibles con Apple (desde 10.4.4 - la primera versión de Intel - en adelante). Sólo Mac OS X 10.4 Protección de pila NX soportada. En Mac OS X 10.5, todos de 64 bits. ejecutables tienen pila NX y montón; W ^ X protección. Esto incluye x86-64 (Core 2 o posterior) y PowerPC de 64 bits en las Mac G5.
Sin embargo, ¿qué sucede si el ejecutable no es de 64 bits: Mach-O executable i386
?
De manera similar, para ASLR, Wikipedia dice que está habilitada de manera predeterminada para 10.7 y más:
En Mac OS X Lion 10.7 (lanzado en julio de 2011), Apple expandió su Implementación para cubrir todas las aplicaciones, indicando "espacio de direcciones La aleatorización de diseño (ASLR) se ha mejorado para todas las aplicaciones. Eso ahora está disponible para aplicaciones de 32 bits (al igual que las protecciones de memoria del montón), haciendo que las aplicaciones de 64 y 32 bits sean más resistentes al ataque ".
¿Esto significa que no hay forma de optar por no hacerlo a través de una opción de compilación? Si la hay, ¿cómo podría verificar que la aplicación no la tiene? ¿Existen analogías con Windows, donde algunas bibliotecas pueden ser ASLR-ed, pero otras no?