3

次のようにASLRが有効になっているかどうかを確認しましたが、有効だと思います:

[user@localhost test]$ cat /proc/sys/kernel/randomize_va_space
2

次のプログラムでテストしてみました。

test.c :

#include <stdio.h>
int main(void)
{
    printf("%p\n", main);
    return 1;
}

ASLR がアクティブな場合、実行ごとに異なるアドレスになると予想していましたよね? しかし、私は毎回同じことをしました。64 ビットと 32 ビットの実行可能ファイルの両方をテストしました。これをテストするために 64 ビットの Arch Linux システムを使用しています。

[user@localhost test]$ gcc test.c -o test
[user@localhost test]$ ./test
0x4004c6
[user@localhost test]$ ./test
0x4004c6
[user@localhost test]$ ./test
0x4004c6
[user@localhost test]$ ./test
0x4004c6
[user@localhost test]$ gcc -m32 test.c -o test
[user@localhost test]$ ./test
0x80483eb
[user@localhost test]$ ./test
0x80483eb
[user@localhost test]$ ./test
0x80483eb
[user@localhost test]$ ./test
0x80483eb

ご覧のとおり、アドレスはすべての実行で同じです。これは、ASLR がオフになっているということではありませんか?

4

1 に答える 1