Je jouais avec un code quand j'ai remarqué quelque chose d'étrange:Pointeur de pile pseudo-aléatoire sous Linux?
[~] main% cat test.cc
#include <stdio.h>
void f()
{
int i;
fprintf(stderr, "&i = 0x%08X\n", (long)&i);
}
int main(int argc, char**argv)
{
f();
}
[~] main% g++ test.cc
[~] main% ./a.out
&i = 0xBFA27AB4
[~] main% ./a.out
&i = 0xBFAD7E24
[~] main% ./a.out
&i = 0xBFCA3464
[~] main% ./a.out
&i = 0xBF96C064
[~] main%
La chose étrange pour moi est la variation de l'adresse de la variable i. Je suppose que le noyau fournit différentes adresses de départ de pile pour essayer de contrecarrer une sorte de fissure. Quelle est la vraie raison?
Si vous voulez tester avec ASLR désactivé, vous pouvez le faire avec 'echo 0>/proc/sys/kernel/randomize_va_space' (en tant que root, bien sûr). – caf
@caf: Merci pour l'indice. http://en.wikipedia.org/wiki/Address_space_layout_randomization –