diff --git a/thesis/chapters/chap3.tex b/thesis/chapters/chap3.tex index 176c350d71f8cdedc0a9d0e8606d2636ee0e24e7..70aaa9bdbc8f2df46b53046d1f3177feec006a6c 100644 --- a/thesis/chapters/chap3.tex +++ b/thesis/chapters/chap3.tex @@ -283,7 +283,7 @@ NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, [...] } \end{minted} - \caption{Fichier \lstinline{common/newbp.c:46}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_driver_entry} + \caption{Fonction \lstinline{DriverEntry()}, fichier \lstinline{common/newbp.c:46}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_driver_entry} \end{figure} Dans la fonction \verb|HvmSwallowBluepill()|, dont le contenu est illustré par @@ -324,7 +324,7 @@ NTSTATUS NTAPI HvmSwallowBluepill ( [...] } \end{minted} - \caption{Fichier \lstinline{common/hvm.c:547}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_hvm_swallow_bp} + \caption{Fonction \lstinline{HvmSwallowBluepill}, fichier \lstinline{common/hvm.c:547}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_hvm_swallow_bp} \end{figure} Après la modification du masque d'affinité, la \textit{callback} \verb|CmSubvert()| @@ -388,7 +388,7 @@ typedef NTSTATUS ( PVOID GuestRsp ); \end{minted} - \caption{Fichier \lstinline{common/common.h:362}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_arch_init_func_ptr} + \caption{Type \lstinline{ARCH_INITIALIZE}, fichier \lstinline{common/common.h:362}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_arch_init_func_ptr} \end{figure} \begin{figure}[tbph!] @@ -421,7 +421,7 @@ typedef struct } HVM_DEPENDENT, *PHVM_DEPENDENT; \end{minted} - \caption{Fichier \lstinline{common/common.h:420}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_hvm_dependent_struct} + \caption{Structure \lstinline{HVM_DEPENDENT}, fichier \lstinline{common/common.h:420}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_hvm_dependent_struct} \end{figure} \newpage @@ -504,7 +504,7 @@ NTSTATUS NTAPI HvmSubvertCpu ( return Status; } \end{minted} - \caption{Fichier \lstinline{common/hvm.c:356}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_hvm_subvert_cpu} + \caption{Fonction \lstinline{HvmSubvertCpu()}, fichier \lstinline{common/hvm.c:356}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_hvm_subvert_cpu} \end{figure} \newpage @@ -542,11 +542,13 @@ appel aux instructions matérielles AMD. L'état de l'\acrshort{os} avant que le \acrshort{cpu} n'ait été virtualisé sera sauvegardé via l'instruction \verb|VMSAVE| appelée à travers le symbole \verb|SvmVmsave| défini en 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, comme l'illustre la -Figure~\ref{fig:code_asm_svm_vmsave}. +\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, comme l'illustre la +% Figure~\ref{fig:code_asm_svm_vmsave}. \begin{figure}[tbph!] \begin{minted} @@ -563,7 +565,7 @@ svm_vmsave MACRO BYTE 0Fh, 01h, 0DBh ENDM \end{minted} - \caption{Fichier \lstinline{amd64/svm-asm.asm:24}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_asm_svm_vmsave} + \caption{Fonction \lstinline{svm_vmsave()}, fichier \lstinline{amd64/svm-asm.asm:24}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_asm_svm_vmsave} \end{figure} @@ -619,7 +621,7 @@ static NTSTATUS NTAPI SvmInitialize ( return STATUS_SUCCESS; } \end{minted} - \caption{Fichier \lstinline{svm/svm.c:940}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_svm_initialize} + \caption{Fonction \lstinline{SvmInitialize()}, fichier \lstinline{svm/svm.c:940}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_svm_initialize} \end{figure} \newpage @@ -676,7 +678,7 @@ static NTSTATUS NTAPI SvmVirtualize ( return STATUS_UNSUCCESSFUL; } \end{minted} - \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} +\caption{Fonction \lstinline{SvmVirtualize()}, 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ée par la Figure~\ref{fig:code_asm_svm_vmrun}, @@ -743,7 +745,7 @@ SvmVmrun PROC SvmVmrun ENDP \end{minted} - \caption{Fichier \lstinline{amd64/svm-asm.c:75}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_asm_svm_vmrun} + \caption{Fonction \lstinline{SvmVmrun}, fichier \lstinline{amd64/svm-asm.c:75}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_asm_svm_vmrun} \end{figure} Arrivant au terme de l'analyse du code source de Blue Pill, il est souhaitable