Soit tu parles du registre d'instruction et du segment de code. Dans ce cas, le programmeur n'a pas accès à cette zone (et registre) qui est utilisé pour l'instruction courante et son décodage. On peut en revanche tenter de modifier l'adresse de retour d'une fonction (le compteur ordinal est stocké sur la pile) pour que la prochaine instruction chargée dans le registre d'instruction ne soit pas celle prévue normalement (technique du dépassement de buffer) mais celle d'un code malicieux. Dans le cas général (une simple erreur de programmation), si tu écrase l'adresse de retour par une adresse quelconque, tu récupère simplement un "Segmentation Fault".
Soit tu parles d'une zone mémoire standard (d'un processus et pas d'un thread), dans ce cas, il s'agit d'un espace utilisateur alloué pour le programme et toute tentative d'écriture en dehors de cette zone se traduit par un seg fault (pas toujours mais bon). Le mode privilégié (ou noyau) a le droit justement d'écrire où il le souhaite.
J'espère que ça réponds plus ou moins à ta question, c'est assez compliqué et je ne suis pas non plus un expert de la question.
# zone de code ?
Posté par bleh . En réponse au journal question : est-ce que la zone de code est modifiable. Évalué à 0.
Soit tu parles du registre d'instruction et du segment de code. Dans ce cas, le programmeur n'a pas accès à cette zone (et registre) qui est utilisé pour l'instruction courante et son décodage. On peut en revanche tenter de modifier l'adresse de retour d'une fonction (le compteur ordinal est stocké sur la pile) pour que la prochaine instruction chargée dans le registre d'instruction ne soit pas celle prévue normalement (technique du dépassement de buffer) mais celle d'un code malicieux. Dans le cas général (une simple erreur de programmation), si tu écrase l'adresse de retour par une adresse quelconque, tu récupère simplement un "Segmentation Fault".
Soit tu parles d'une zone mémoire standard (d'un processus et pas d'un thread), dans ce cas, il s'agit d'un espace utilisateur alloué pour le programme et toute tentative d'écriture en dehors de cette zone se traduit par un seg fault (pas toujours mais bon). Le mode privilégié (ou noyau) a le droit justement d'écrire où il le souhaite.
J'espère que ça réponds plus ou moins à ta question, c'est assez compliqué et je ne suis pas non plus un expert de la question.