Smashing the Stack?

From: Jeremy Junginger (jjungingerat_private)
Date: Wed Jul 17 2002 - 08:46:58 PDT

  • Next message: Michel Arboi: "Badware update through P2P?"

    In "Smashing the Stack for Fun and Profit" by Aleph One, There is a nice
    example program called example1.c.  It looks like this:
    
    void function(int a, int b, int c) {
    	char buffer1[5];
    	char buffer2[10];
    
    void main() {
    	function(1,2,3);
    }
    
    Then, we go through how to generate assembley code output, how the
    values are pushed onto the stack in reverse order, then the function
    call, then moves the Frame Pointer onto the stack and copies the current
    Stack Pointer into EBP.  That part is groovy.  Then when we look at the
    function, in the example, he discusses how memory buffers are allocated
    in "word" (4 byte) increments.   That makes sense; however, when I
    generate the assembly code with the exact same code, I see that it is
    subtracting 40 rather than the expected 20
    (bufger1(5bytes=2words=8bytes+10bytes=3words=12bytes).  This part looks
    crucial to understanding the rest of the concepts in the paper, so I'm
    hesitant to continue without understanding this descrepancy.  Any input
    would be very much appreciated.
    
    
    



    This archive was generated by hypermail 2b30 : Wed Jul 17 2002 - 10:32:02 PDT