linux中栈的起始地址不是固定的吗?

mys*_*_go 0 linux stack

unsigned long find_start(void){
    __asm__("movq %rsp, %rax");
}
int main(){
    printf ("OX%x\n" , find_start()) ;
}
Run Code Online (Sandbox Code Playgroud)

这是我上一个问题的另一个问题,

每次运行程序时输出都不同。

linux中栈的起始地址不是固定的吗?

内核版本为2.6.18-194.el5

评论更新:我现在正在尝试进行 hello world 漏洞利用,如何克服这个问题? execve 创建的进程是否会使用与其父进程相同的堆栈起始地址?

Jim*_*wis 5

也许您正在看到地址空间布局随机化的效果。这是一项安全功能,可以更难利用堆栈或缓冲区溢出。