[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