gdb/gdbserver を使用してリモートでブレークポイントを設定する

gdb/gdbserver を使用してリモートでブレークポイントを設定する

リモートホストで脆弱なアプリケーションをデバッグしています。ホストに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

逆アセンブルされた関数コードを見てホスト自体でテストした結果、正しいアドレスで中断しており、とにかくバッファオーバーフローを引き起こしており、これによりgdbがそれ自体中断されると100%確信しています。 。

しかし、私のgdbクライアントは一般的なブレークポイントを取得せず、何も起こりません。 gdbserverはsegfaultを生成せずにBOで停止します(したがってretで中断されるようです)。ブレークポイントに関するメッセージを表示しない以外は、gdbがクラッシュしたり誤動作していないようです。

gdbserverでデバッグするときにブレークポイントを設定する特別な方法はありますか?

関連情報