¿Puede hacer un desbordamiento al espacio de almacenamiento de una pila?

1

Estaba leyendo sobre desbordamientos de búfer y sé que puedo tener un desbordamiento de pila y un desbordamiento de pila. Pero como la pila y el montón se encuentran en algún punto, ¿sería posible desbordarse de uno al otro?

Sería genial si también pudieras dar una explicación sobre el permiso de ejecución en el espacio de almacenamiento.

    
pregunta Rowana Ravenclaw 05.11.2016 - 17:28
fuente

1 respuesta

1

Un desbordamiento de búfer de pila generalmente sobrescribe los marcos de pila anteriores o la dirección de retorno. La pila crece hacia abajo y los buffers dentro de la pila "crecen" (no lo hacen).

En la mayoría de los sistemas, la pila crece hacia abajo y está por encima del montón.

Un desbordamiento de pila no puede sobrescribir nada en el montón porque el montón aparece antes que la pila. Sin embargo, un desbordamiento forzaría a la pila a desbordarse, causando que el programa se bloquee antes de que se sobrescriba algo.

Si los punteros son enteros sin signo, incrementar un puntero lo suficiente podría hacer que apunte al montón. Pero como los desbordamientos de búfer generalmente escriben en todas las direcciones en el búfer de desbordamiento, el programa se bloqueará cuando se haya ido más allá del principio de la pila. E incluso si la pila comienza en la dirección más alta, habrá una falta de referencia al puntero NULO, se intentará escribir en el texto y se intentará escribir para leer solo las secciones de datos, antes de que llegue el montón.

En sistemas poco comunes donde la pila crece y hacia el montón, un desbordamiento del búfer de pila podría sobrescribir los datos en el montón, suponiendo que el sistema no cree una tierra de nadie entre la pila y el montón.

Algunos sistemas asignan automáticamente memoria a la pila a medida que crece, otros tienen un área asignada previamente para la pila. Las pilas de crecimiento automático están limitadas por una política y / o en sistemas de 64 bits: memoria disponible e intercambio.

Un desbordamiento de búfer normal en estos sistemas no dañará el montón porque golpea la tierra de nadie antes del montón.

    
respondido por el Oskar Skog 05.11.2016 - 17:48
fuente

Lea otras preguntas en las etiquetas