Déduction des cibles de sauts indirects pour les applications de traçage x86

Gabriel-Andrew Pollo-Guilbert

Mémoire de maîtrise (2021)

Accéder à ce document
Disponible
Libre accès au texte intégral dans PolyPublie
Texte Texte • 1MB •

Résumé

Le traçage est un outil puissant utilisé dans le processus de développement d'une application. Ceci est particulièrement utile pour comprendre le comportement des applications qui interagissent en temps réel avec plusieurs composantes externes. En effet, ces applications ne peuvent généralement pas être arrêtées pour inspecter leur état interne à l'aide d'un débogueur interactif. A la place, alors que l'application roule à vitesse normale, une trace de son execution est générée, afin de suivre son chemin d'exécution et enregistrer les valeurs importantes dans la trace. Le programmeur doit premièrement insérer des sondes dans son logiciel. Lorsqu'une sonde est lancée, un évènement est créé et enregistré. Grâce au traçage, le développeur est en mesure d'extraire un grand volume d'information critique à l'optimisation ou au débogage de certains problèmes. Contrairement à la journalisation, le traçage se doit d'avoir le plus petit surcout d'exécution. Par conséquent, différentes optimisations sont effectuées. Dans les applications de haute disponibilité, le développeur doit pouvoir extraire de l'information concernant l'exécution. Idéalement, une sonde est déjà insérée statiquement dans le code source de l'application. Cependant, il peut être difficile de prédire quel problème pourrait survenir en production, l'insertion des sondes doit être plus flexible. Grâce à l'instrumentation dynamique, il sera possible d'insérer de telles sondes en parallèle à l'exécution d'un programme. L'insertion dynamique d'une sonde consiste à modifier certaines parties d'un programme, au niveau des instructions, afin de rediriger le flot d'exécution vers une routine d'instrumentation qui se charge d'enregistrer les données d'intérêts. Cette modification du programme amène beaucoup de problèmes et de défis. Un des problèmes qui limite le taux de succès de l'instrumentation est la difficulté d'extraire le graphe de flot de contrôle d'une fonction, pour déterminer si deux instructions ou plus peuvent être remplacées par une redirection. Dans ce mémoire, nous présentons une technique basée sur la correspondance de patrons afin d'extraire ce graphe. Ce problème a longtemps été étudié dans le domaine de la translation de code ou de la rétro-ingénierie, mais rarement dans le domaine du traçage. Notre technique est en mesure d'extraire avec une grande fiabilité les données nécessaires au graphe de flot de contrôle et d'ainsi augmenter le taux de succès de l'instrumentation dynamique.

Programme:
Génie informatique
Directeurs ou directrices:
Adresse URL de PolyPublie:
Université/École:
Polytechnique Montréal
OAI:
oai:publications.polymtl.ca:9990
ORCID
Date du dépôt:
27 avr. 2022 08:19
Dernière modification:
14 oct. 2026 10:53
Citer en APA 7:
Pollo-Guilbert, G.-A. (2021). Déduction des cibles de sauts indirects pour les applications de traçage x86 [Mémoire de maîtrise, Polytechnique Montréal]. PolyPublie. https://publications.polymtl.ca/9990/

Statistiques

Total des téléchargements à partir de PolyPublie

Téléchargements par année

Provenance des téléchargements

Actions réservées au personnel

Afficher document
Afficher document