1

bufferoverflow の悪用などに関する本を読んでいます。しかし、この本では答えられない質問が 1 つあります。プログラムのソースコードを見ずに GDB を使用してバッファオーバーフローを検出するにはどうすればよいですか? アセンブリを見ているバッファフローを検出することは可能ですか?

4

1 に答える 1

1

バッファー オーバーフローは、すぐに目に見える動作の変化 (プログラムがすぐにクラッシュまたはハングする) になるか、遠く離れている可能性があります (後でクラッシュまたはハングするか、重要なデータを破損して誤動作を開始し、それを確認するのに時間と注意が必要です)。良性である可能性があります (上書きされたメモリはその時点以降は使用されないため)。

探しているものを理解し、コードまたはその逆アセンブリに精通していない限り、一般的にオーバーフローを検出する簡単で防弾または自動の方法はありません。

それがあなたのコードである場合、次の方法の組み合わせでバッファ オーバーフローを見つけることができます。

  • コードレビュー
  • サイズ、インデックス、およびポインターをチェックするコード計測 (手動または一部のツールを使用)
  • テスト (デバッガーでのステップバイステップ実行を含む)

コードがあなたのものではなく、それを知らず、逆アセンブルしかない場合、事態はさらに複雑になります。特別に (悪意を持って) 細工されたデータをフィードすることで、引き続きテストを試みることができます。クラッシュが発生した場合は、バッファ オーバーフローが原因であるか、クラッシュが発生する可能性のある場所の近くにある可能性があります。

OS 関数を呼び出すポイントで、プログラムに障害を挿入できるツールが存在します。これらを使用して、エラー チェックが不十分な場所、おそらくバッファ オーバーフローがある場所を発見できます。

それは単純な問題ではなく、単純な解決策もありません。そのため、この本は、あなたが望むレベルで明示的に対処していないのかもしれません. または、見逃している可能性があります。

于 2013-01-12T09:17:23.297 に答える