Ich habe zu arbeiten, wenn ASLR wie folgt aktiviert ist und ich denke, es ist:Warum scheint ASLR nicht
[[email protected] test]$ cat /proc/sys/kernel/randomize_va_space
2
versuchte ich es mit dem folgenden Programm testen:
test.c :
Ich erwartete, wenn ASLR aktiv ist, zu einer anderen Adresse für jeden Lauf, richtig? Aber ich habe jedes Mal dasselbe bekommen. Ich habe sowohl für 64-Bit- als auch für 32-Bit-Programme getestet. Ich bin mit einem 64-Bit-Arch Linux-System dies testen:
[[email protected] test]$ gcc test.c -o test
[[email protected] test]$ ./test
0x4004c6
[[email protected] test]$ ./test
0x4004c6
[[email protected] test]$ ./test
0x4004c6
[[email protected] test]$ ./test
0x4004c6
[[email protected] test]$ gcc -m32 test.c -o test
[[email protected] test]$ ./test
0x80483eb
[[email protected] test]$ ./test
0x80483eb
[[email protected] test]$ ./test
0x80483eb
[[email protected] test]$ ./test
0x80483eb
Wie Sie sehen können, die Adresse die gleiche für jeden Lauf ist. Bedeutet das nicht, dass ASLR ausgeschaltet ist?
Versuchen Sie, Adresse einer Variablen, nicht eine nicht statische Funktion – Elazar
BTW übergeben ein nicht 'void *' zu einem '% p' Argument in 'printf' ist undefiniertes Verhalten – Elazar
@Elazar Warum? Eine Funktion im '.text' Abschnitt sollte von ASLR betroffen sein, nein? Ist ASLR nicht auf seiner grundlegendsten Ebene gedacht - Randomisierung des ausführbaren Abschnitts? – baruch