CrazyEngineers
  • Buffers on the stack in x86 (assembly language)

    frost00

    Member

    Updated: Oct 26, 2024
    Views: 2.0K
    I'm trying to get my head around buffers / buffer overflows in assembly language. I understand that if a buffer is created and the data being put into is larger than the buffer, it will overflow.

    I can see that the instruction below will create space for a variable, but this would only be 4 bytes (32 bits) long.
    sub esp, 4

    Question 1: If I wanted to create a buffer 33 bits in length would the instruction simply be: sub esp, 8

    Question 2:
    If so, given the example of:
    A: sub esp, 28 - large buffer all the way to ebp
    B: sub esp, 32 - small buffer from ebp-32 to ebp-28

    If more than 4 bytes were entered into B this would overflow into A. I understand that:
    mov [ebp-32], ebx

    would put a dword into ebp-32, but if I wanted to overflow into ebp-28 all the way to ebp I would need a 32*32=1024 bit/128byte string.

    How could this be achieved / what would the instruction look like in assembly?

    Thanks,
    Frost
    0
    Replies
Howdy guest!
Dear guest, you must be logged-in to participate on CrazyEngineers. We would love to have you as a member of our community. Consider creating an account or login.
Home Channels Search Login Register