可以使用 ASLR 从堆地址推导出堆栈地址(反之亦然)吗?
Can the stack adress be deduced from the heap adress (or vice-versa) with ASLR?
Linux内核是否分配一个大的范围,让堆和栈在这个范围的start/end地址处反向增长,这样如果你知道其中一个的地址他们你认识对方,还是这两个领域是独立的?
不,出于安全原因,它不会。 如果它们以任何方式相关,那将是一个严重的安全漏洞。
另一方面,负责使用 mmap() 分配这两个区域的是 libc,而不是内核……或者至少不是直接分配。每个区域都有自己的 mmap() 调用(包括库),内核为每个调用提供部分随机地址。
您可以在 /proc/$pid/maps
中看到为进程 ID $pid
的特定程序分配的不同区域。
Linux内核是否分配一个大的范围,让堆和栈在这个范围的start/end地址处反向增长,这样如果你知道其中一个的地址他们你认识对方,还是这两个领域是独立的?
不,出于安全原因,它不会。 如果它们以任何方式相关,那将是一个严重的安全漏洞。
另一方面,负责使用 mmap() 分配这两个区域的是 libc,而不是内核……或者至少不是直接分配。每个区域都有自己的 mmap() 调用(包括库),内核为每个调用提供部分随机地址。
您可以在 /proc/$pid/maps
中看到为进程 ID $pid
的特定程序分配的不同区域。