-[3. Creation du shellcode](#3-creation-du-shellcode)
-[4. Injection du shellcode](#4-injection-du-shellcode)
-[4.1.1 Trouver le point d'entrée du programme](#411-trouver-le-point-dentrée-du-programme)
-[4.1.2 Trouver un code cave](#412-trouver-un-code-cave)
-[4.1.3 Rediriger le point d'entrée du programme vers le code cave](#413-rediriger-le-point-dentrée-du-programme-vers-le-code-cave)
-[4.1.4 Sauvegarder les registres et les flags](#414-sauvegarder-les-registres-et-les-flags)
-[4.1.5 Injecter le shellcode](#415-injecter-le-shellcode)
-[4.1.6 Retourner à l'adresse du point d'entrée du programme](#416-retourner-à-ladresse-du-point-dentrée-du-programme)
-[4.1.7 Generation du 1er patch](#417-generation-du-1er-patch)
-[4.1.8 Regler le crash](#418-regler-le-crash)
-[4.1 Trouver le point d'entrée du programme](#411-trouver-le-point-dentrée-du-programme)
-[4.2 Trouver un code cave](#412-trouver-un-code-cave)
-[4.3 Rediriger le point d'entrée du programme vers le code cave](#413-rediriger-le-point-dentrée-du-programme-vers-le-code-cave)
-[4.4 Sauvegarder les registres et les flags](#414-sauvegarder-les-registres-et-les-flags)
-[4.5 Injecter le shellcode](#415-injecter-le-shellcode)
-[4.6 Retourner à l'adresse du point d'entrée du programme](#416-retourner-à-ladresse-du-point-dentrée-du-programme)
-[4.7 Generation du 1er patch](#417-generation-du-1er-patch)
-[4.8 Regler le crash](#418-regler-le-crash)
-[5 Resultat](#5-resultat)
## 2. Introduction
...
...
@@ -56,26 +56,26 @@ Pour injecter le shellcode dans le programme de test, j'ai utilisé x64dbg.
Ouvrire le programme de test dans x64dbg.
#### 4.1.1 Trouver le point d'entrée du programme
#### 4.1 Trouver le point d'entrée du programme
J'ai d'abord trouver l'adresse du point d'entrée du programme : `00B2CA45`

#### 4.1.2 Trouver un code cave
#### 4.2 Trouver un code cave
J'ai ensuite, chercher l'adresse du debut du code cave (l'endroit ou on va injecter le shellcode).
par exemple ici l'adresse est `00B57465`

#### 4.1.3 Rediriger le point d'entrée du programme vers le code cave
#### 4.3 Rediriger le point d'entrée du programme vers le code cave
Il faut maintenant modifier l'instruction de point d'entrée du programme pour qu'elle pointe vers le code cave.
`call B2D0EF` -> `jmp E67465`
#### 4.1.4 Sauvegarder les registres et les flags
#### 4.4 Sauvegarder les registres et les flags
Apres cela, j'ai ecrit quelque instructions afin de sauvegarder les registres et les flags dans la stack :
`pushad` : sauvegarde les registres
...
...
@@ -83,7 +83,7 @@ Apres cela, j'ai ecrit quelque instructions afin de sauvegarder les registres et

#### 4.1.5 Injecter le shellcode
#### 4.5 Injecter le shellcode
Ouvrire le fichier du shellcode avec HxD et copier le contenu.
...
...
@@ -102,7 +102,7 @@ popad
popfd
```
#### 4.1.6 Retourner à l'adresse du point d'entrée du programme
#### 4.6 Retourner à l'adresse du point d'entrée du programme

...
...
@@ -110,7 +110,7 @@ Ajouter une instruction pour retourner à l'adresse du point d'entrée du progra

#### 4.1.7 Generation du 1er patch
#### 4.7 Generation du 1er patch
Générer le patch du programme avec le shellcode injecté.
...
...
@@ -119,7 +119,7 @@ En premier lieu, j'ai essayé de trouver a quel moment le program crashait.
Pour cela j'ai réutilisé x32dbg.
En faisant des points d'arrêt sur les instructions `call` du shellcode je remarqué que tout le shellcode c'est bien exécuté apres le `call edp` ci dessous.