Mémoire de maîtrise (2023)
Accès restreint: Personnel autorisé jusqu'au 11 mars 2025 Conditions d'utilisation: Tous droits réservés |
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)
Abstract
Memory access errors during execution are still a concern 50 years after the C programming language was created. However, memory verification tools can help detect these memory errors. In the context of embedded systems, it is of utmost importance to ensure low overhead and invasiveness of the tool. Many tools offer a static analysis of the program, by detecting memory errors in the source code while the program is not running. In the case of embedded systems, however, it is preferred to analyze the program while it is running. Indeed, access to the source code is not required, as it would be with static analysis. In addition, memory errors related to dynamically allocated memory are challenging to predict before execution. As such, memory analysis must be done at runtime. The main objective of this thesis is to design new techniques in order to reduce the performance and memory overhead related to these tools, in hopes of applying them to embedded systems. The technique must also ensure low invasiveness. To do this, we introduce a first technique using mprotect to protect memory pages when allocating memory. When a memory access instruction accesses one of these aforementioned protected memory pages, the use of PTrace enables another thread to: — Disassemble the instruction — Extract the address in question — Perform bounds checking — Remove protection of the affected memory page(s) — Re-execute the instruction — Restore protection of the affected memory page(s)
Département: | Département de génie informatique et génie logiciel |
---|---|
Programme: | Génie informatique |
Directeurs ou directrices: | Michel Dagenais |
URL de PolyPublie: | https://publications.polymtl.ca/55856/ |
Université/École: | Polytechnique Montréal |
Date du dépôt: | 11 mars 2024 13:59 |
Dernière modification: | 11 oct. 2024 18:10 |
Citer en APA 7: | Piché, D. (2023). Techniques d'analyse ciblée de mémoire en temps réel pour les systèmes embarqués [Mémoire de maîtrise, Polytechnique Montréal]. PolyPublie. https://publications.polymtl.ca/55856/ |
---|---|
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements