Linuxexecve()
にELFがある場合は、そのELFをプロセスのメモリスペースにマップし、エントリポイントからコードを実行します。しかし、カーネルはELFのロードアドレスとエントリポイントをどのように決定しますか?
.p_vaddr
ASLRが無効になっている場合は、各PT_LOADセグメントを見つけて.e_entry
ELFヘッダーをエントリポイントとして使用します。
しかし、ASLRが有効になるとどうなりますか?カーネルは単に上記のすべてのアイテムにランダムな動きを追加しますが、相対位置は維持しますか?
ELFの内容がカーネルの動作に影響しますか? PT_LOADセグメントの最小値が.p_vaddr
ゼロまたはゼロでないかのように?たとえば、.e_type
ELFヘッダーはET_DYNですか、それともET_EXECですか?
私は具体的にx86_64について話しています。