哪些因素会影响Linux上的堆栈地址?

时间:2015-04-04 23:10:23

标签: memory linux-kernel x86 stack-overflow

ASLR就是其中之一。如果它被禁用怎么办?在发行版,内核版本中,堆栈的起始地址是否相同?

是否有不同的环境变量会更改堆栈中的对象地址?

1 个答案:

答案 0 :(得分:1)

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

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