From ec9e892a57575089e317ecdbb2643786493c17ec Mon Sep 17 00:00:00 2001 From: "iliya.saroukha" <iliya.saroukhanian@etu.hesge.ch> Date: Fri, 28 Mar 2025 20:06:10 +0100 Subject: [PATCH] fix: typos in chap 3 --- thesis/chapters/chap3.tex | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/thesis/chapters/chap3.tex b/thesis/chapters/chap3.tex index fdbac3b..0853fc5 100644 --- a/thesis/chapters/chap3.tex +++ b/thesis/chapters/chap3.tex @@ -364,10 +364,10 @@ que l'implémentation originelle de Blue Pill, celle-ci est désormais compatibl non-seulement avec les extensions AMD-V mais aussi Intel VT-x. Dans l'optique de rendre cette implémentation \say{générique}, une grande quantité d'appels directs aux fonctions ont été masqués par une indirection supplémentaire via -une structure du nom de \verb|HVM_DEPENDENT| dont le contenu partiel est -présenté dans la Figure~\ref{fig:code_hvm_dependent_struct}. Les divers types -des champs définis dans cette structure sont en réalité des pointeurs de -fonctions comme l'illustre la Figure~\ref{fig:code_arch_init_func_ptr}. +une structure du nom de \verb|HVM_DEPENDENT| dont le contenu est présenté dans +la Figure~\ref{fig:code_hvm_dependent_struct}. Les divers types des champs +définis dans cette structure sont en réalité des pointeurs de fonctions comme +l'illustre la Figure~\ref{fig:code_arch_init_func_ptr}. \begin{figure}[tbph!] \begin{minted} @@ -433,7 +433,7 @@ seront interceptés par l'hyperviseur via \verb|ArchRegisterTraps|, puis d'initialiser l'état de l'invité (de l'\acrshort{os} natif à migrer) à l'aide du pointeur de fonctions \verb|ArchInitialize|. Finalement, la dernière action de \verb|HvmSubvertCpu()| sera de virtualiser le \acrshort{cpu} sur lequel -s'exécute le bout de code actuel et de ce fait, lancé sur celui-ci l'hyperviseur. +s'exécute le bout de code actuel et de ce fait, lancer sur celui-ci l'hyperviseur. Ces actions seront effectuées par la fonction appelé par le pointeur \verb|ArchVirtualize|. @@ -514,7 +514,7 @@ NTSTATUS NTAPI HvmSubvertCpu ( La fonction \verb|SvmInitialize()| appelée par \verb|ArchInitialize|, présentée dans la Figure~\ref{fig:code_svm_initialize}, aura pour but d'allouer le \gls{vmcb} de l'invité. Cette structure de données, dont la nomenclature du côté -d'Intel varie légérement (\gls{vmcs}), est subdivisé en deux sections : une +d'Intel varie légèrement (\gls{vmcs}), est subdivisée en deux sections : une section de \say{contrôle} et une de \say{sauvegarde d'état} (\textit{state save area}). Principalement, ce sera la zone de sauvegarde qui aura un intérêt particulier car celle-ci sera utilisée afin de conserver l'état @@ -531,7 +531,7 @@ lui sera utilisé plus tard comme argument fourni à l'instruction \verb|VMRUN|. Après que cet élément fut alloué, sa zone de contrôle sera configurée via la fonction \verb|SvmSetupControlArea| puis l'initialisation de l'état de -l'invité pourra être entamé. Ceci sera accompli par la fonction +l'invité pourra être entamée. Ceci sera accompli par la fonction \verb|SvmInitGuestState()| à laquelle sera fourni en argument : l'instance \verb|Cpu| de la structure \verb|PCPU| contenant les \acrshort{vmcb}s qui y sont associés, le pointeur d'instruction de l'invité ainsi que son @@ -545,7 +545,8 @@ assembleur. Ce symbole fournira au registre \verb|rax| l'adresse physique du \verb|OriginalVmcb| est exécutera l'instruction \verb|svm_vmsave|. Du fait que les fonctions intrinsèques liées aux instructions matérielles n'étaient pas proposées par les compilateurs de l'époque, celles-ci ont dû être répliquées en -\say{codant} l'instruction à la main, octet par octet. +\say{codant} l'instruction à la main, octet par octet, comme l'illustre la +Figure~\ref{fig:code_asm_svm_vmsave}. \begin{figure}[tbph!] \begin{minted} @@ -641,7 +642,7 @@ En ce qui concerne la fonction \verb|SvmVirtualize()|, son rôle sera de fournir à \verb|SvmVmrun()| en argument l'entièreté de l'instance \verb|Cpu| de la structure de type \verb|PCPU| qui contiendra notamment le \acrshort{vmcb} initialisé avec l'état de l'\acrshort{os} afin que celui-ci puisse reprendre -son exécution à la suite de l'exécution de l'instruction \verb|VMRUN|. +son exécution de l'instruction \verb|VMRUN|. % Il est nécessaire de garder en tête que l'état de l'\acrshort{os} fut déjà % stocké dans un \acrshort{vmcb} à part entière. Afin que celui-ci puisse @@ -678,16 +679,16 @@ static NTSTATUS NTAPI SvmVirtualize ( \caption{Fichier \lstinline{svm/svm.c:1174}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_svm_virtualize} \end{figure} -La routine \verb|SvmVmrun()|, illustré par la Figure~\ref{fig:code_asm_svm_vmrun}, +La routine \verb|SvmVmrun()|, illustrée par la Figure~\ref{fig:code_asm_svm_vmrun}, quant à elle est séparée en plusieurs phases. La première consistera à allouer suffisamment de place sur la pile pour pouvoir stocker tous les registres de travaux de l'invité lorsque l'hyperviseur reprendra la main sur l'exécution. Puis, la valeur de l'adresse physique -stockée dans le champ \verb|VmcbToContinuePA| est fourni à l'instruction +stockée dans le champ \verb|VmcbToContinuePA| est fournie à l'instruction \verb|svm_vmload| afin de charger l'état du \acrshort{cpu} stocké à l'adresse -de \acrshort{vmcb}. La troisième étape, se résume à une boucle qui va +du \acrshort{vmcb}. La troisième étape, se résume à une boucle qui va continuellement exécuter l'instruction \verb|VMRUN| avec la même adresse -physique du \acrshort{vmcb} mentionné précédemment. À partir de ce moment, +physique du \acrshort{vmcb} mentionnée précédemment. À partir de ce moment, l'\acrshort{os} natif de la machine reprendra son exécution dans une \acrshort{vm} contrôlée par l'hyperviseur. -- GitLab