2017-09-24 8 views
0

lorsque j'exécute le programme 'A', les adresses virtuelles du tas et de la pile sont changées bien que je lance le même programme 'A'. Je sais que cette pile, les adresses virtuelles de tas ne sont pas définies dans le fichier objet exécutable (format elf). Ce sont des choses variables. Je peux le vérifier par la commande 'readelf -l'.pourquoi la pile, l'adresse virtuelle de heap sont changées à chaque fois?

mais, Pourquoi kernal doit-il changer l'adresse de la pile chaque fois que le même programme est exécuté? voici la raison pour laquelle j'ai demandé comme ça. Je fais un simple émulateur de processus. J'essaye d'émuler un progam de raspbian (32bit) dans l'environnement d'Intel cpu (64bit). Donc, je dois concevoir une pile de 32 bits. mais je ne sais pas comment j'émule le système de pile.

J'ai mmapé la page ANONYME, alors je dois l'utiliser comme une pile pour émuler un programme. Je dois imiter la façon dont le programme (32 bits) utilise la pile. Mais l'adresse virtuelle de la pile du programme change à chaque fois. J'ai besoin d'aide.

Répondre

0

Il peut être que le système opérationnel rend randomisation de l'espace adresse dans la pile, heap pour éviter les failles de sécurité. Si un attaquant sait toujours trouver cette information pour les processus, il pourrait être plus facile de nuire au système.

+0

pouvez-vous me recommander comment puis-je décider d'adresse de base de pile dans un émulateur qui émule le programme arm-cpu 32bit? –

+0

quel émulateur est-ce? un public disponible ou développé par vous-même? – dpetrini

+0

salut! Je suis un émulateur simple par moi-même. Ce programme est un émulateur de processus unique. –