Ciao a tutti qualcuno, mi sa dire come posso analizzare lo stack con gdb???
Leggendo il manuale ho trovato che per fare questo devo usare il comando bt, ma l'unico risultato che ottengo è il seguente :
codice:
(gdb) bt
#0 output () at prova.s:23
(gdb) bt full
#0 output () at prova.s:23
No locals.
(gdb)
Io voglio vedere che elementi ci sono nella pila, so che posso farlo anche usando l'indirizzo di esp pero visto che c'è un istruzzione apposta preferisco imparare questa, pero non capisco dove sbaglio!
Per completezza sposto anche il programma in assembly che ho usato per fare le prove :
codice:
.section .data
app: .byte 1
.section .text
output : #metto in output il contenuto di eax
push %eax
push %ebx
push %ecx
push %edx
movb %al, app
movl $4, %eax
movl $1, %ebx
movl $app, %ecx
movl $1, %edx
int $0x80
pop %edx
pop %ecx
pop %ebx
pop %eax
ret
.global _start
_start:
xor %eax, %eax
mov $1, %ebx
mov $2, %ecx
mov $3, %edx
movb $'A', %al
call output
movb $'\n', %al
call output
movl $1, %eax
movl $0, %ebx
int $0x80
Io analizzo lo stack dentro la chiamata di funzione prima della chiamata alla system call ...