[HACK] Re: Smashing the stack for fun & profit

Signal9 signal9 at gmx.net
Thu Dec 6 01:04:20 CET 2001


>
> >Otra línea que tampoco entiendo es la siguiente:
> >0x80481c8 <main+20>:    add    $0xfffffffc,%esp
> >Hace apuntar el SP al comienzo del buffer? Xq?
>
 El gcc hace una pequeña optimizacion con el stack antes de llamar a una
funcion, concretamente lo deja alineado a x16, de esta manera:

addl -X, %esp
pushl arg1
pushl arg2
..
..
pushl argN
call funcion
addl Y, %esp

 Vale, los valores de X e Y se seleccionan en base a que

 1) Y = (numero_de_argumentos * 4) + X
 2) Y tiene que ser un multiplo de 16 (0x10)

Por lo tanto, en un codigo normalito de una llamada a una funcion (sin 
optimizar, para verlo claro), estaria asi:

addl $0xfffffff8, %esp   # esp -= 8;
pushl $1                # esp -= 4
pushl $2                # esp -= 4
call mi_funcion
addl $0x10, %esp  # esp += 16

 Y = 16 = 0x10 = (2 * 4) + 8
 
 Chao :)

 - Doing 



More information about the hacking mailing list