Un último detalle sería decir que para comprobar si funciona correctamente, sería mejor declarar una función que no se llamase en el programa, y hacer que se ejecute con el retorno. P. ej:
1. Dirección de func_oculta () = 0x08005f32
2. Ret-Buff = 32
$ perl -e 'print "\x90"x32 . "\x32\x5f\x00\x08"'
Hey Iván! Que tal?
Es una buena idea. Sagrini is back ! todo bien , vos?1. Dirección de func_oculta () = 0x08005f32
2. Ret-Buff = 32
$ perl -e 'print "\x90"x32 . "\x32\x5f\x00\x08"'
Hey Iván! Que tal?
Pero me refiero:
La dirección que escoge el compilador, es una dirección que al final en memoria no va a ser esa, si no que va a ser totalmente diferente, dependerá de la memoria libre etc etc etc.
Mi duda es, puesto que el SO al final abstrae la memoria para el programa de manera que el cree que tiene toda la memoria del mundo, aunque en realidad tenga sus cachitos en cada cacho de memoria y no se corresponda con sus direcciones, al final las direcciones del compilador son las que usa en esa memoria virtual???
La dirección que escoge el compilador, es una dirección que al final en memoria no va a ser esa, si no que va a ser totalmente diferente, dependerá de la memoria libre etc etc etc.
Mi duda es, puesto que el SO al final abstrae la memoria para el programa de manera que el cree que tiene toda la memoria del mundo, aunque en realidad tenga sus cachitos en cada cacho de memoria y no se corresponda con sus direcciones, al final las direcciones del compilador son las que usa en esa memoria virtual???
Al final lo unico que ves son las virtuales. Tendrias que correrlo en gdb y depurarlo con si para ver bien a donde vas a parar y si sobreescribis bien el ret.