2016-08-12 1 views
0
int main(int argc, char **argv) 
{ 
    personality(ADDR_NO_RANDOMIZE); 

    if (fork()) 
    { 
    return 0; 
    } 

    printf("Hook me") 

J'ai rencontré ce code dans un exercice. Basé sur mon compte, cela devrait désactiver ASLR sur le processus enfant. Cependant, j'ai utilisé LD_PRELOAD pour dormir le binaire sur printf et attacher avec gdb à ce point. À ce stade, j'ai remarqué que ASLR semble être activé, en fonction des adresses de pile variant. Aslr est définitivement activé dans le processus parent.Le code suivant désactive-t-il ASLR?

ASLR doit être désactivé sur le processus enfant? Quel est le problème avec le code empêchant ASLR d'être désactivé dans l'enfant fourchu?

Répondre

1

Cela ne fonctionnera pas avec fork car fork fait une copie exacte de l'espace adresse parent (ASLR). Essayez plutôt avec exec et cela devrait fonctionner.