私は最近、エクスプロイトとシェルコードを書くことを自分自身に教えてきました。ガイド/本の多くは、スタックがどこから始まるかを推測できると主張しているため、少しの作業で、シェルコードがスタックのどのアドレスから始まるかを推測できます。
- スタックの開始アドレスが予測可能であるのはなぜですか?スタックはメモリ内のランダムなアドレスから開始するべきではありませんか?
- スタックのアドレス開始が仮想アドレス空間の固定オフセットである場合、それがマシンごとに異なるのはなぜですか?
- 異なるプラットフォーム間の許容誤差とスタックの開始アドレスはどれくらいですか?
関連:「スタックはすべてのプログラムで同じアドレスで始まります」、ハッキングによるアドレスの問題:悪用の芸術、なぜスタックアドレスはメモリアドレスの減少に向かって成長するのですか?
編集私のテストでは、アドレス空間配置のランダム化(ASLR)がオフになっています。