3 votes

Comment obtenir les drapeaux de protection d'une zone mémoire, les drapeaux sont PROT_READ /PROT_EXEC dans mprotect.

J'utilise mprotect() pour définir les drapeaux de protection d'une zone mémoire. Plus tard, je veux restaurer les drapeaux de protection de cette zone mémoire.

Ma question est la suivante : comment obtenir les drapeaux de protection d'une zone mémoire ? Les drapeaux comprennent PROT_READ ...

Ma solution de contournement consiste à analyser /proc/self/maps manuellement. Mais cette solution est trop maladroite ...

Je me demande s'il y a un appel système que je peux utiliser.

2voto

R.. Points 93718

En général, c'est la seule solution. POSIX ne fournit pas de moyen d'accéder aux protections. Dans les utilisations spécifiques à une application où vous avez le contrôle sur le code qui mappe la page, vous pouvez lui demander de sauvegarder les drapeaux quelque part à ce moment-là, mais en général, vous devez lire le fichier /proc/self/maps . En outre, vous voudrez peut-être revenir à certaines autorisations par défaut si vous ne pouvez pas lire les documents suivants /proc . PROT_READ|PROT_WRITE est probablement une valeur par défaut raisonnable pour la plupart des choses, mais dans certains cas, vous pouvez aussi vouloir PROT_EXEC .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X