linux在execve一个ELF时如何决定加载地址和入口点?

linux在execve一个ELF时如何决定加载地址和入口点?

当linuxexecve()有一个ELF时,它会将该ELF映射到进程的内存空间中,并从入口点开始运行代码。但是内核是如何决定ELF的加载地址和入口点的呢?

如果禁用 ASLR,它将查找.p_vaddr每个 PT_LOAD 段并使用.e_entryELF 标头作为入口点。

但是如果启用 ASLR 会怎样呢?内核是否会简单地向上述所有内容添加随机移位,但保持它们的相对位置?

ELF的内容会影响内核的行为吗?就像 PT_LOAD 段的最小值.p_vaddr是零还是非零?比如.e_typeELF header是ET_DYN还是ET_EXEC?

我特别谈论 x86_64。

相关内容