gpt4 book ai didi

debugging - 使用 gdb 和 gdbserver 远程设置断点

转载 作者:行者123 更新时间:2023-12-03 22:25:18 25 4
gpt4 key购买 nike

我正在远程主机上调试易受攻击的应用程序。我已经在主机上设置了 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 客户端上获得通常的断点,没有任何 react 。 gdbserver 在 BO 上卡住(所以我猜它确实在 ret 上中断了)而没有抛出段错误。除了没有在断点上提示我之外,gdb 似乎没有崩溃或表现异常。

使用 gdbserver 进行调试时是否有特殊的设置断点的方法?

最佳答案

使用 gdbserver 进行调试时是否有特殊的设置断点的方法?

确保你已经编译了带有调试符号的可执行文件 -g -O0远程调试时,gdb 客户端不知道从哪里加载符号。您有两个选择:

1. specify executable when starting gdb

gdb <executable>
(gdb) target remote <IP>:<port>
(gdb) load <executable>
gdb should know symbols now
(gdb) b main
(gdb) mon reset
(gdb) contnue
it should break at main
(gdb) bt

2. use file command to tell about the symbols.

gdb
(gdb) target remote <IP>:<port>
(gdb) load <executable>
(gdb) file <executable>
gdb should know symbols now
(gdb) b main
(gdb) mon reset
(gdb) contnue
it should break at main
(gdb) bt

关于debugging - 使用 gdb 和 gdbserver 远程设置断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com