elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 21:12  


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  Tamaño de word (novato desbordamiento de buffer)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tamaño de word (novato desbordamiento de buffer)  (Leído 1,807 veces)
Kerber0

Desconectado Desconectado

Mensajes: 142

Yo me Amo!


Ver Perfil
Tamaño de word (novato desbordamiento de buffer)
« en: 15 Noviembre 2009, 02:56 »

Hola gente, me tope con este tema y me intereso muchisimo. Estoy leyendo la traduccion en castellano del tutorial de Aleph y haciendo algunos ejemplos me resultaron algunas dudas:

1)En el ejemplo del tutorial que dice:

Código:
void function(int a, int b, int c){
  char buffer1[5];
  char buffer2[10];
}

void main(){
 function(1,2,3);
}

En la parte del codigo ensamblador me tira lo siguiente:
Código:
function:
pushl %ebp
movl %esp, %ebp
subl $40, %esp
movl %gs:20, %eax
movl %eax, -12(%ebp)
xorl %eax, %eax
movl -12(%ebp), %eax
xorl %gs:20, %eax
je .L3
call __stack_chk_fail
.L3:
leave
ret
.size function, .-function

Haciendo referencia a esta parte, el tutorial dice lo sgte:
   pushl   %ebp
   movl   %esp, %ebp
   subl   $40, %esp


"Esto mueve el EBP, el puntero de marco, a la pila. Despues copia el actual de SP a EBP, haciendo el nuevo puntero FP. Al puntero FP guardado se le llama SFP. Despues se libera espacio para las variables locales redimensionando SP."

Ahora, la funcion (MOV a,b) no "copia" lo que tiene b en a. Es decir a <- b ?

En este caso: (movl   %esp, %ebp), no guardaria el contenido de EBP en ESP? Por que dice que se copia el actual SP a EBP? No seria al revez?


2) El tutorial dice que un word en su caso es de 4bytes. Ok.

En el codigo como tiene buffer1[5] y buffer2[10], la pila se aumenta en 20 bytes, ya que el primero ocupado 2 word y el segundo 3 word. Ahora cuando yo compilo este codigo:

Código:
void funcion(..){
 char buffer[2];
}
...
Utilizo un word, no? la pila aumenta en 16. Entonces mi word valdria 16?

Cuando compilo
Código:
void funcion(..){
 char buffer[7];
}
...
Sigue valiendo 16 (no estoy utilizando 2 word)

Cuando compilo
Código:
void funcion(..){
 char buffer[8];
}
...
Vale 24 (estaria utilizando 3 word de 8 bytes) o 1 word de 16 bytes y otro de 8?

Esa es mi duda, el tamaño del word cual seria?

Cuanto vale mi word, 8 o 16???


Bueno gente, disculpen las molestias y muchas gracias de antemano.
En línea

sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: Tamaño de word (novato desbordamiento de buffer)
« Respuesta #1 en: 8 Diciembre 2009, 04:45 »

depende de tu computadora...

word vale 32 en sistemas de 32 bits, 16 en sistemas de 16 bits y 64 en sistemas de 64 bits
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Un fallo en Microsoft Word permitiría un desbordamiento de buffer
Noticias
wolfbcn 0 761 Último mensaje 4 Enero 2011, 02:14
por wolfbcn
Vulnerabilidades de desbordamiento de buffer en Winamp
Noticias
wolfbcn 0 350 Último mensaje 29 Junio 2011, 13:57
por wolfbcn
Tamaño de buffer para proxy en C
Programación C/C++
KandiZickZad 0 81 Último mensaje 23 Abril 2012, 01:50
por KandiZickZad
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines