我正在远程主机上调试易受攻击的应用程序。我在主机上设置了 gbserver:
gdbserver host:1234 /my/target/app
在我的本地主机上,我已连接:
$ gdb /same/target/app
gdb$ target extended-remote 192.168.0.100:1234
我连接成功并且可以继续在目标指令上设置断点,即:
$gdb disas vuln_function
....
0x08048e6b <+116>: ret
End of assembler dump.
gdb$ b *0x08048e6b
Breakpoint 1 at 0x8048e6b
查看反汇编的函数代码并在主机本身上对其进行测试,我 100% 确定我在正确的地址上中断,并且无论如何我都会触发缓冲区溢出,这应该使 gdb 自行中断。
但是我的 gdb 客户端没有得到通常的断点,但什么也没有发生。 gdbserver 在 BO 上冻结(所以我猜它确实在 ret 上中断)而没有抛出段错误。除了没有在断点上提示我之外,gdb 似乎没有崩溃或行为异常。
使用gdbserver调试时有没有特殊的方法来设置断点?