He escrito una aplicación en C, y estoy tratando de entender cuál es el propósito del comando -fno-stack-protector al compilar. Para mi aplicación específica, no importa si utilizo este comando o no en términos de protección contra el desbordamiento del búfer.¿Cuál es el uso de -fno-stack-protector?
He leído en línea que los comandos -fstack-protector y -fno-stack-protector activan y desactivan respectivamente el protector de acumulación de pila, pero si estoy compilando la aplicación yo mismo, ¿cómo puede el protector habilitarse de antemano? ? ¿El uso del comando puede depender del sistema en el que se ejecuta la aplicación?
Gracias
Por definición, ningún elemento compilado en un sistema con protección de pila activada por defecto se vinculará a las bibliotecas creadas con protección de pila, ya que a su vez se habría compilado en un sistema con protección de pila activada? – tbert
Supongo que está tratando con la segunda parte de mi respuesta (los comentarios sobre por qué es problemática) y, en ese caso, la respuesta es no. Cualquier código que no esté destinado a ejecutarse como parte del ecosistema del espacio de usuario del host no va a vincularse con ninguna de las bibliotecas del host. (Por ejemplo, un kernel no está vinculado a ninguna biblioteca de espacio de usuario. Otros ejemplos serían código de bootloader, módulos destinados a ser leídos y utilizados como plantillas por un emulador dynrec/JIT, etc.) –
No estaba hablando de espacio de kernel, pero espacio de usuario; La compilación de JIT no se está haciendo con el compilador de C; entonces, tengo que preguntar, ¿cuál es el problema al activar la protección de la pila en el territorio del usuario, más allá de quizás tener que establecer "-fno-stack-protector" en los argumentos de compilación para el kernel de Linux? – tbert