1. PROG5 - Projet
ANNÉE 2022-2023
GROUPE 13 :
• BENTAZI bouchra
• EL BAHARAOUI boutaina
• ALSABR Ibrahim
• PIQUERET Vassili
• Zouine Sanaa
• Djaghloul ayoub
4. Introduction
• La compilation et l'édition de liens sont deux étapes importantes dans le processus de création
d'un programme exécutable à partir de code source .
• La compilation consiste à traduire le code source en un code binaire compréhensible par la
machine. Cette étape est réalisée par le compilateur. Une fois le code source compilé, l'édition
de liens (ou "linking" en anglais) consiste à combiner les différents fichiers binaires générés par
le compilateur en un seul fichier exécutable et résout les références entre les différentes
parties du programme .
• La réimplantation, quant à elle, est le processus de modification de la structure de code d'un
programme ou d'un système pour en améliorer les performances, la lisibilité ou la
maintenabilité. Elle peut être utilisée pour réorganiser le code, supprimer des inefficacités ou
encore ajouter de nouvelles fonctionnalités.
5. Voici quelques exemples d'édition de liens :
Correction d'erreurs :
si un programme contient une référence à
une variable qui n'existe pas, l'édition de liens
peut être utilisée pour mettre à jour le lien
afin de référencer une variable existante.
Mise à jour de programmes ou de systèmes:
lorsqu'un programme ou un système est
mis à jour, il peut être nécessaire de modifier
les liens vers des fonctions ou des objets qui
ont été modifiés ou supprimés dans la
nouvelle version,
Ajout de nouvelles fonctionnalités :
pour ajouter de nouvelles fonctionnalités à
un programme ou à un système, il peut être
nécessaire de créer de nouveaux liens vers des
fonctions ou des objets définis dans le
nouveau code.
Voici quelques exemples de réimplantation:
Regroupement de fonctions ou de variables liées dans
des modules ou des fichiers séparés :
En regroupant les fonctions et les variables qui ont un
lien logique entre elles, il est possible de rendre le code
plus lisible et plus facile à maintenir.
Suppression de code inutile ou redondant :
En enlevant du code qui n'est plus utilisé ou qui est
redondant, il est possible d'améliorer les performances
du programme ou du système et de rendre le code plus
facile à comprendre.
PS:
• La réimplantation peut être réalisée à n'importe quelle étape
du développement d'un programme ou d'un système, et n'a
pas nécessairement besoin d'être liée à l'édition de liens.
• Il est toutefois possible que la réimplantation d'un programme
ou d'un système entraîne des modifications qui nécessitent
une édition de liens ultérieure.
6. But du projet
• Un projet sur l'édition de liens et la réimplantation pourrait consister en l'analyse d'un
programme ou d'un système existant, l’identification de problèmes ou d'opportunités
d'amélioration, et la mise en œuvre de modifications pour résoudre ces problèmes ou ajouter
de nouvelles fonctionnalités.
• Le but du projet est de mettre en place une partie d'un éditeur de liens, pour des
fichiers ELF-32 bits plus précisément la phase de fusion qui est effectuée par l'éditeur
de liens. Le projet est organisé en étapes et comprend la programmation de divers
outils intermédiaires pour mieux comprendre les concepts clés et faciliter la répartition
des tâches.
7. Les fichiers ELF
• ELF (Exécutable and Linking Format) est un format de fichier binaire développé
par l’USL (Unix System Laboratories) . il contient du code exécutable et les
donnes nécessaires pour exécuter un programme. Chaque fichier ELF
commence par un en-tête suivi d'une section de données et de références. Ce
format est flexible dans la conception et n'est pas limité à une architecture ou
un processeur particulier.
8. Structure d’un Fichier ELF
Program header table
ELF header
.text
.rodata
Section header table
.data
....
12. Etape 3 : : Affichage du contenu d’une section
Ici on a mis les adresses pour chaque ligne au début de chaque ligne
et on avance avec 16 octets donc 16 en décimale
(address += 16 pour chaque ligne) et après il va afficher le contenu en
HEXA et a la fin il va afficher le contenu en ASCII .
14. Etape 5 : Affichage des tables de réimplantation
• L'affichage des tables de réimplantation est généralement utilisé pour visualiser les relations
entre les sections d'un programme exécutable.
• Les tables de réimplantation sont des structures de données qui permettent de connecter
les sections d'un programme exécutable à leurs positions relatives dans la mémoire.
18. Dans cette étape on a afficher les sections du deuxième fichier en avant et dans notre
parcours d'affichage si on trouve une section présente dans le premier fichier (le même
nom a l’aide du fonction qui rechercher les sections par nom) on va faire la somme des
tailles des deux sections (size) . par rapport l’offset les résultats sont faux car on est
besoin de créer un buffer qui stocke ces sections pour arriver a des résultats justes.
Et après on va afficher le reste des sections depuis le premier fichier (les sections qui
n'ont pas présentes dans le deuxième).
L’affichage de l’exécution :