Estaba probando un desbordamiento de búfer y sucedió lo siguiente:
Ladirecciónderetornoestáen0xbffff7bc,loquedescubríenlaspruebas.Loreemplacéconelvalorquequería0xbffff636.
Cuandosellamaareturn,parecedirigirseaunadireccióndiferentealaqueagregué.Desdelatrazaposteriorsepuedeverqueprobótodaslasdireccionesjuntoaesa.
Sinembargo,reemplazó0xbffff636con0xbffff71b.Claramente,nocambiólasotrasdireccionesalasqueintentóregresarenelbacktrace1a6,pero0esincorrecto.Pareceque#0deberíahabersido0xbffff636peroseeditó,comotodaslasotrasdireccionesdespuésdequeseprobaron.
¿Cuálesunaposiblerazónporlaquesecambióladirección?
EDIT/UPDATE
Estomuestraloqueestáenladirección0xbffff636queeslamitaddeuntrineoNOP.Elbúferesde500bytes,ladirecciónderetornoestáen540offset.
Actualmente estoy en un punto de ruptura en la declaración de devolución, y lo que es extraño es que hacer una traza hacia atrás en el punto muestra que se intentó con 0xbffff636 como un punto de devolución, pero aún no he regresado. Cuando continúo y devuelvo, el backtrace se convierte en el backtrace que publiqué originalmente con '0xbff636' convirtiéndose en '0xbffff71b'. Pensé que podría añadir eso.
ACTUALIZACIÓN2
Aquí está la parte relevante del código del libro:

Enlugardecontinuar,continúo'siguiente'atravésdelprogramahastaquedejélafunciónrecv_linequecopiólosdatosenunbúfer(solicitudllamada)quesepasó.Esafunciónvolvióbienyaquenotoquésudirección.Ahoracontinuéatravésdelafuncióndelcontroladoranteriorhastaquelleguéalfinalyestoesloquevi:
Parece que no encuentra 0xbfff636 válido cuando lo ve por primera vez. He hecho desbordamientos en este entorno antes, por lo que estoy bastante seguro de que no hay protecciones.
Nota : estoy compilando con -g marca de depuración. Ejecuto el proceso como sudo. Luego adjúntelo al proceso en ejecución con gdb
