Mémoire de maîtrise (2023)
Résumé
Les erreurs lors des accès en mémoire pendant l’exécution d’un programme sont toujours d’actualité 50 ans après la création du langage de programmation C. Toutefois, des outils de vérification de mémoire peuvent détecter ces erreurs mémoires. Dans le contexte des systèmes embarqués, il est impératif de minimiser le surcoût et l’invasivité de l’approche. Plusieurs outils proposent une analyse statique du programme, en détectant les erreurs mémoires dans le code source, hors exécution du programme. Dans le contexte précédemment décrit, il est plutôt préféré d’analyser le programme lors du temps exécution. En effet, l’accès au code source n’est pas requis, contrairement à lors de l’utilisation de l’analyse statique du programme. De plus, les erreurs de mémoire qui découlent de mémoire allouée dynamiquement représentent un défi considérable à détecter hors exécution. Ainsi, l’outil doit effectuer la vérification de mémoire en temps d’exécution. L’objectif de ce mémoire se résume donc sur la conception de techniques visant à réduire le surcoût de temps et de mémoire lié à ces outils, dans un contexte d’utilisation de systèmes embarqués. Il faut aussi s’assurer que la technique soit la moins invasive possible. Pour ce faire, nous introduisons une première technique en utilisant mprotect afin de protéger des pages de mémoire lors de l’allocation des zones mémoire. Quand une de ces pages est accédée lors d’accès mémoire, l’utilisation de PTrace permet ensuite à autre fil d’exécution de : — Désassembler l’instruction — Extraire l’adresse en question — Effectuer la vérification des bornes adressables — Enlever la protection de la (des) page(s) concernée(s) — Ré exécuter l’instruction — Remettre la protection de la (des) page(s) concernée(s)
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements
