\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}
\end{figure}
Dans la fonction \verb|HvmSwallowBluepill()|, dont le contenu est illustré par
Dans la fonction \verb|HvmSwallowBluepill()|, dont le contenu est illustré par
\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}
\end{figure}
Après la modification du masque d'affinité, la \textit{callback}\verb|CmSubvert()|
Après la modification du masque d'affinité, la \textit{callback}\verb|CmSubvert()|
...
@@ -388,7 +388,7 @@ typedef NTSTATUS (
...
@@ -388,7 +388,7 @@ typedef NTSTATUS (
PVOID GuestRsp
PVOID GuestRsp
);
);
\end{minted}
\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}
\end{figure}
\begin{figure}[tbph!]
\begin{figure}[tbph!]
...
@@ -421,7 +421,7 @@ typedef struct
...
@@ -421,7 +421,7 @@ typedef struct
} HVM_DEPENDENT,
} HVM_DEPENDENT,
*PHVM_DEPENDENT;
*PHVM_DEPENDENT;
\end{minted}
\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}
\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}
\end{figure}
\newpage
\newpage
...
@@ -542,11 +542,13 @@ appel aux instructions matérielles AMD. L'état de l'\acrshort{os} avant que
...
@@ -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
le \acrshort{cpu} n'ait été virtualisé sera sauvegardé via l'instruction
\verb|VMSAVE| appelée à travers le symbole \verb|SvmVmsave| défini en
\verb|VMSAVE| appelée à travers le symbole \verb|SvmVmsave| défini en
assembleur. Ce symbole fournira au registre \verb|rax| l'adresse physique du
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
\verb|OriginalVmcb| est exécutera l'instruction \verb|svm_vmsave|.
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
% Du fait que
\say{codant} l'instruction à la main, octet par octet, comme l'illustre la
% les fonctions intrinsèques liées aux instructions matérielles n'étaient pas
Figure~\ref{fig:code_asm_svm_vmsave}.
% 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{figure}[tbph!]
\begin{minted}
\begin{minted}
...
@@ -563,7 +565,7 @@ svm_vmsave MACRO
...
@@ -563,7 +565,7 @@ svm_vmsave MACRO
BYTE 0Fh, 01h, 0DBh
BYTE 0Fh, 01h, 0DBh
ENDM
ENDM
\end{minted}
\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}
\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}
\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}
\end{figure}
La routine \verb|SvmVmrun()|, illustrée par la Figure~\ref{fig:code_asm_svm_vmrun},
La routine \verb|SvmVmrun()|, illustrée par la Figure~\ref{fig:code_asm_svm_vmrun},
...
@@ -743,7 +745,7 @@ SvmVmrun PROC
...
@@ -743,7 +745,7 @@ SvmVmrun PROC
SvmVmrun ENDP
SvmVmrun ENDP
\end{minted}
\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}
\end{figure}
Arrivant au terme de l'analyse du code source de Blue Pill, il est souhaitable
Arrivant au terme de l'analyse du code source de Blue Pill, il est souhaitable