• [^] # Re: du coté de elf32 ...

    Posté par . En réponse au journal question : est-ce que la zone de code est modifiable. Évalué à 2.

    Quid du code généré dynamiquement? des libraires chargées dynamiquement?


    Sous Linux, le chargement des bibliothèques dynamiques est fait en espace utilisateur. Au momment du chargement d'un binaire, le noyau charge le code du programme en lecture seule, les differentes zones de données en lecture/ecriture et charge ensuite l'"interpreteur" à utiliser pour charger les bibliothèques dynamiques (en général /lib/ld-linux.so). le code du programme et l'interpreteur sont dans le meme espace d'adressage. En fonction de ces besoins, le programme peut appeller le code de l'intepreteur pour charger des bibliotheques (de maniere automatique pour les bibliothèques précisées en dependance du binaire executé, ou lors de l'appel aux fonctions dl{open,sym,close}.).

    L'interpreteur utilise l'appel système mmap pour rendre accessible au programme les bibliothèques. Les zones de code des bibliothèques sont mappées en lecture seule. Les zones de données des bibliothèques sont mappées en lecture/ecriture.

    Faire un strace sur un programme lié dynamiquement permet de mettre en evidence l'activité de l'interpréteur.