Linuxでは、プロセスのコードセグメントの場所はどこにありますか?

Linuxでは、プロセスのコードセグメントの場所はどこにありますか?

プロセスが終了したら、スタックとヒープを復元したいと思います。したがって、バイナリが同じままである場合は、関数が実行されるたびに関数のアドレスが同じままであることを確認する必要があります。

誰でも助けることができますか?

答え1

アドレス空間レイアウトのランダム化が有効になっている場合(ほとんどの最新のLinuxシステムでは)、関数アドレスはバイナリがロードされるたびに変わりません。さまざまなレイアウトのランダム化が適用され、バイナリが位置に依存しない場合はすべて適用できます。特に、ライブラリASLRはライブラリが毎回別の場所にロードされることを意味し、ASLRを実行することは場所に依存しないことを意味します。毎回別の場所に読み込まれます。

Ubuntu Wikiさまざまな可能性の良い要約があります。 Ubuntuに固有のものではありません。

設定を変更してこれらの機能をすべて無効にすることができます(推奨されていません)/proc/sys/kernel/randomize_va_space。 0 は ASLR を無効にします。

関連情報