Overwriting return address - perché non salvare una copia?

0

Per evitare attacchi di overflow del buffer dello stack che sovrascrivono l'indirizzo di ritorno, perché non salvare una copia dell'indirizzo di ritorno all'inizio di una funzione, e quindi ricaricarla alla fine?

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

quindi alla fine

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

0 risposte

Leggi altre domande sui tag