tipos piratas pilas las hacen duracell como caracteristicas alcalinas c assembly gdb

piratas - ¿Cómo se puede ver el contenido de la pila con gdb?



pilas duracell piratas (3)

Soy nuevo en gdb, así que tengo alguna pregunta;

  • ¿cómo puedo ver el contenido de la pila? ex: para ver el contenido del registro, info registers . Para apilar lo que debería ser

  • ¿cómo puedo ver el contenido de $0x4(%esp) ? Cuando print /d $0x4(%esp) gdb da error.

plataforma: linux gdb


Necesita usar los comandos de visualización de memoria de gdb. El básico es x , para examinar . Hay un ejemplo en la página vinculada que usa

gdb> x/4xw $sp

para imprimir "cuatro palabras ( w ) de memoria arriba del puntero de la pila (aquí, $sp ) en hexadecimal ( x )". La cita es ligeramente parafraseada.


Utilizar:

1. bt - backtrace: muestra funciones de pila y argumentos

2. info frame : muestra los indicadores de inicio / final / args / locales de la pila

3. x/100x $sp - muestra la memoria de la pila

(gdb) bt #0 zzz () at zzz.c:96 #1 0xf7d39cba in yyy (arg=arg@entry=0x0) at yyy.c:542 #2 0xf7d3a4f6 in yyyinit () at yyy.c:590 #3 0x0804ac0c in gnninit () at gnn.c:374 #4 main (argc=1, argv=0xffffd5e4) at gnn.c:389 (gdb) info frame Stack level 0, frame at 0xffeac770: eip = 0x8049047 in main (goo.c:291); saved eip 0xf7f1fea1 source language c. Arglist at 0xffeac768, args: argc=1, argv=0xffffd5e4 Locals at 0xffeac768, Previous frame''s sp is 0xffeac770 Saved registers: ebx at 0xffeac75c, ebp at 0xffeac768, esi at 0xffeac760, edi at 0xffeac764, eip at 0xffeac76c (gdb) x/10x $sp 0xffeac63c: 0xf7d39cba 0xf7d3c0d8 0xf7d3c21b 0x00000001 0xffeac64c: 0xf78d133f 0xffeac6f4 0xf7a14450 0xffeac678 0xffeac65c: 0x00000000 0xf7d3790e


info frame para mostrar la info frame de la pila

Para leer la memoria en las direcciones dadas, eche un vistazo a x

x/x $esp para hex x/d $esp para x/u $esp firmado para unsigned etc. x usa la sintaxis de formato, también puede echar un vistazo a la instrucción actual a través de x/i $eip etc.