Sobrescribiendo la dirección de retorno: ¿por qué no guardar una copia?

0

Para evitar ataques de desbordamiento del búfer de pila que sobrescriben la dirección de retorno, ¿por qué no guardar una copia de la dirección de retorno al inicio de una función y luego volver a cargarla al final?

push ebp
mov ebp, esp
sub esp, 0x70 # some number
mov eax, [ ebp + 4 ] 
mov [ esp ], eax // save return address to TOP of stack

luego al final

mov ecx, [ esp ] 
mov [ ebp + 4], ecx // restore your copy, doesn't matter if they overwrote it
add esp, 0x70 
pop ebp
retn
    
pregunta ineedahero 08.04.2018 - 05:12
fuente

0 respuestas

Lea otras preguntas en las etiquetas