diff --git a/thesis/chapters/chap3.tex b/thesis/chapters/chap3.tex index f65d71e4837455270588c34eb6bfa1e22f79659a..fdbac3b4b14258444f1ae875028d47ecd3089f52 100644 --- a/thesis/chapters/chap3.tex +++ b/thesis/chapters/chap3.tex @@ -334,6 +334,8 @@ registres de travaux et d'offset, ainsi que des registres de \verb|r8| à puis l'adresse résultate du pointeur de pile est copié dans le registre \verb|rcx| et est fourni en argument à la fonction \verb|HvmSubvertCpu()|. +\newpage + La fonction \verb|HvmSubvertCpu()|, dont le contenu est présenté dans la Figure~\ref{fig:code_hvm_subvert_cpu}, s'occupera d'allouer plusieurs éléments indispensables au bon fonctionnement de l'hyperviseur. Initialement @@ -343,19 +345,19 @@ lorsqu'un processus en mode utilisateur exécute un appel système et l'exécuti est transférée au mode noyau \cite{noauthor_kernel_2020}. Cet espace servira essentiellement à sauvegarder la valeur des registres utilisés avant le changement de contexte de sorte à ce que l'état du mode utilisateur puisse -être correctement restaurer lorsque l'\acrshort{os} aura traiter l'appel système. +être correctement restauré lorsque l'\acrshort{os} aura traité l'appel système. Dans le cas d'un hyperviseur, le mode utilisateur représente l'entièreté des anneaux de privilèges de l'invité. Cette pile sera donc utilisée lorsque l'hyperviseur reprendra le contrôle sur l'exécution après l'interception d'une instruction du côté de l'\acrshort{os} virtualisé. -Suite à cela, deux autres éléments sont alloués: la \gls{gdt} et \gls{idt}. -Respectivement, ces structures de données sont utilisées pour référencer -des segments mémoire ainsi que les droits d'accès à ceux-ci (i.e. accessible -en mode utilisateur ou non, en lecture et/ou en écriture). L'\acrshort{idt}, -quant à elle, est utilisé par le processeur pour déterminer les adresses -mémoire des diverses routines de gestion d'interruption afin qu'il puisse réagir -en conséquence lorsqu'une interruption ou exception survient. +Suite à cela, deux autres éléments sont alloués: la \gls{gdt} et l'\gls{idt}. +La \acrshort{gdt} est utilisée pour référencer des segments mémoire ainsi que +les droits d'accès à ceux-ci (c-à-d. accessible en mode utilisateur ou non, en +lecture et / ou en écriture). L'\acrshort{idt}, quant à elle, est utilisée par le +processeur pour déterminer les adresses mémoire des diverses routines de gestion +d'interruption afin qu'il puisse réagir en conséquence lorsqu'une interruption +ou exception survient. Du fait que la version du code source présenté dans ce rapport est plus récente que l'implémentation originelle de Blue Pill, celle-ci est désormais compatible