リモートホストで脆弱なアプリケーションをデバッグしています。ホストに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でデバッグするときにブレークポイントを設定する特別な方法はありますか?