最新の Ubuntu 16.04 x86_64 システムで実行されている次のコードを検討してください。
void main(int argc, char *argv[])
{
while(1) {
char *x = (char *)mmap(0, 1000, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
printf("%p\n", x);
munmap(x, 1000);
}
}
その出力は次のようになります。
0x7f02ca14c000
0x7f02ca14c000
0x7f02ca14c000
0x7f02ca14c000
...
ゼロのアドレス ヒントを提供し、ASLR をグローバルに有効にしてここでランダム アドレスを取得していれば、私は予想していたでしょう。
ランダムなアドレスで匿名共有メモリを mmap() することは可能ですか?