Estou depurando um aplicativo vulnerável em um host remoto. Eu configurei o gbserver no host com:
gdbserver host:1234 /my/target/app
No meu host local, eu me conectei com:
$ gdb /same/target/app
gdb$ target extended-remote 192.168.0.100:1234
Eu conecto com sucesso e posso continuar a definir um ponto de interrupção em uma instrução de destino, ou seja:
$gdb disas vuln_function
....
0x08048e6b <+116>: ret
End of assembler dump.
gdb$ b *0x08048e6b
Breakpoint 1 at 0x8048e6b
Olhando para o código de função desmontado e testando isso no próprio host, tenho 100% de certeza de que estou quebrando o endereço certo e, de qualquer forma, estou acionando um estouro de buffer que deve fazer o gdb quebrar sozinho .
Mas em vez de obter o ponto de interrupção normal no meu cliente gdb, nada acontece. gdbserver congela no BO (então eu acho que ele quebrou no ret) sem jogar o segfault. O gdb não parece estar travando ou se comportando de forma anormal, além de não me dar um prompt sobre o ponto de interrupção.
Existe uma maneira especial de definir pontos de interrupção ao depurar com o gdbserver?
Tags gdb