Memory 什么因素会影响Linux上堆栈的地址?

Memory 什么因素会影响Linux上堆栈的地址?,memory,linux-kernel,x86,stack-overflow,Memory,Linux Kernel,X86,Stack Overflow,ASLR就是其中之一。如果它被禁用了呢?堆栈的起始地址在发行版、内核版本和其他版本中是否相同 使用不同的环境变量是否会进一步改变堆栈中对象的地址 我不打算比较许多不同的内核版本,但在最新的开发内核(4.0)中,如果禁用ASLR,ELF二进制文件的加载程序(fs/binfmt_ELF.c中的load_ELF_binary)将在依赖于体系结构的地址(由stack_TOP常量定义)初始化用户堆栈。在某些体系结构中,STACK\u TOP是一个固定地址,但在许多体系结构中,它取决于当前进程的“个性”(或

ASLR就是其中之一。如果它被禁用了呢?堆栈的起始地址在发行版、内核版本和其他版本中是否相同


使用不同的环境变量是否会进一步改变堆栈中对象的地址

我不打算比较许多不同的内核版本,但在最新的开发内核(4.0)中,如果禁用ASLR,ELF二进制文件的加载程序(
fs/binfmt_ELF.c
中的
load_ELF_binary
)将在依赖于体系结构的地址(由
stack_TOP
常量定义)初始化用户堆栈。在某些体系结构中,
STACK\u TOP
是一个固定地址,但在许多体系结构中,它取决于当前进程的“个性”(或“执行域”)

是的,在运行加载的程序之前,环境变量和命令行参数被推送到用户堆栈上,因此它们将影响用户堆栈指针,正如在
exec
之后的进程所看到的那样