0

この質問がばかげているか、尋ねられている場合は申し訳ありませんが、見つけることができませんでした。

バッファ オーバー フローを使用しようとしていたプログラムがあります。getchar() を使用してユーザーからの入力を取得する単純なプログラムです。バッファーのサイズは 12 に設定されています。12 個を超える x を入力するか、12 個を超える \x78 を使用すると、プログラムをクラッシュさせることができますが、何百もの A または \x41 を入力しても、セグ フォールトは発生しません。

助けや正しい方向への指摘は大歓迎です。

4

2 に答える 2

0

0x41414141 は、プロセスのテキスト ページ内の有効なアドレスである可能性があります。詳細については、プロセスのセグメント マップを参照してください。

于 2011-05-07T04:15:25.233 に答える
0

推測を避けるには、アセンブリ コードを調べてから、プログラムの機械語命令を調べます。デバッガーで実行し、メモリ内で何が起こるかを確認します。スタック上のどのアドレスにローカル変数が配置されているか、どのアドレス レジスター、特に命令ポインターが関数呼び出しで保存されているかを確認できます。

ウィキペディアでスタック オーバーフローのような例を見たことがありますか?

于 2011-05-07T06:14:32.940 に答える