为什么 libc 输入地址总是在 redhat 7 中改变

Why libc enter address always change in redhat 7

我使用 backtrace()backtrace_symbols() 来获取一些信息。 输出看起来像:

./a.out

....
    (_Z8fun+0x1d( [0x400bb3]
    /lib64/libpthread.so.0 (+0x7dc5) [**0x7f2cb2b99dc5**]
    /lib64/libc.so.6(clone+0x6d) [**0x7fc20a61cd**]
...

在 redhat 7 中,粗体地址总是在不同时间变化, 而在 redhat 6 中,地址看起来是固定的。

In redhat 7, the bolder addrs is always change between times, while in redhat 6, the addrs looks fixed

地址发生变化是因为大多数现代系统使用 Address Space Layout Randomization 来提高某些 class 漏洞利用的难度。

ASLR 于 2001 年引入 Linux 内核,redhat-6.2 版本早于此。

P.S。 不建议使用这样一个旧发行版:你错过了 16 年的安全和性能改进。