Desbordamiento de búfer con arquitectura Big Endian

2

¿Alguien podría ayudar a resolver el siguiente problema de práctica relacionado con el desbordamiento de búfer?

  1. En este problema, estoy confundido acerca de cómo deben almacenarse las variables y las direcciones dentro de la pila. Esta es mi mejor suposición, pero no estoy seguro de que sea correcta:

  • En este problema, creo que solo tendría que llenar la pila con los valores correspondientes a '0x41414141' hasta que llegue al puntero del marco almacenado. Sin embargo, no estoy realmente seguro de cuáles serían estos valores o cuántos usar.
  • pregunta user2276280 23.04.2015 - 17:43
    fuente

    1 respuesta

    2

    La pila crece "hacia abajo", es decir, de direcciones altas a direcciones bajas. En el diagrama de pila que se supone que debe rellenar, las direcciones están "invertidas" (la dirección 0x00000004 está abajo , la dirección 0x00000000, no está arriba), por lo tanto, en ese diagrama , la pila crece "hacia arriba".

    (El punto a entender aquí es que no hay una noción de gravedad en la computadora; "arriba" y "abajo" son relativas a una dirección convencional, que puede ser la de una mesa en una hoja de papel, o la de valores de direcciones numéricamente crecientes, o lo que sea. Aquí, la tabla indica direcciones explícitamente, con flechas que confirman la convención.)

    Por lo tanto, la palabra 0x12ab34cd (variable local a ) debe aparecer en las direcciones 0x00000014 a 0x00000017, inmediatamente por encima del puntero del marco almacenado. La matriz buffer está inmediatamente por encima de eso (las direcciones 0x00000008 a 0x00000013).

    Mientras la pila crece hacia direcciones "bajas" (el puntero de la pila se disminuye cuando se empuja un valor en la pila), el búfer se ordena hacia direcciones "altas" ( buffer[0] está en La dirección 0x00000008, buffer[11] se encuentra en la dirección 0x00000013).

    El hecho de que la máquina sea "big-endian" es importante solo para el ordenamiento de bytes dentro de una sola palabra. No afecta el orden de aparición de las palabras dentro de la pila. Dicho de otro modo, que la pila está "bajando" no es una consecuencia de que la máquina sea "big-endian".

    (Nota: ha habido algunas arquitecturas con pilas "creciendo" pero son bastante infrecuentes en estos días, y el ejercicio no tendría sentido con una pila de "crecer".)

        
    respondido por el Thomas Pornin 23.04.2015 - 18:20
    fuente

    Lea otras preguntas en las etiquetas