Objectif
Apprendre à provoquer (de manière contrôlée), capturer et analyser un Blue Screen of Death (BSOD) - compétence critique pour le dépannage avancé.
AVERTISSEMENT IMPORTANT
Cet atelier va volontairement crasher votre VM. C'est normal et attendu. Assurez-vous d'avoir créé un point de contrôle avant de continuer.
POINT DE CONTRÔLE OBLIGATOIRE
Avant de continuer, créez un point de contrôle :
- Dans Hyper-V, clic droit sur votre VM > Point de contrôle
- Nommez-le : 03-Avant-BSOD-Lab
- Attendez la confirmation
Étape 1 : Téléchargement et Installation des Outils
1.1 Télécharger NotMyFault (Sysinternals) :
# Créer un dossier pour les outils Sysinternals
New-Item -Path "C:\LabEDST\Tools\Sysinternals" -ItemType Directory -Force
# Télécharger Sysinternals Suite (contient NotMyFault)
# Méthode 1 : Via navigateur
# Allez sur : https://download.sysinternals.com/files/SysinternalsSuite.zip
# Téléchargez et extrayez dans C:\LabEDST\Tools\Sysinternals
# Méthode 2 : Via PowerShell (si disponible)
$url = "https://download.sysinternals.com/files/SysinternalsSuite.zip"
$output = "C:\LabEDST\Tools\Sysinternals.zip"
Invoke-WebRequest -Uri $url -OutFile $output
# Extraire
Expand-Archive -Path $output -DestinationPath "C:\LabEDST\Tools\Sysinternals" -Force
1.2 Télécharger BlueScreenView (NirSoft) :
# Créer un dossier pour BlueScreenView
New-Item -Path "C:\LabEDST\Tools\BlueScreenView" -ItemType Directory -Force
# Via navigateur : https://www.nirsoft.net/utils/bluescreenview.zip
# Téléchargez et extrayez dans C:\LabEDST\Tools\BlueScreenView
# OU via PowerShell
$url = "https://www.nirsoft.net/utils/bluescreenview.zip"
$output = "C:\LabEDST\Tools\BlueScreenView.zip"
Invoke-WebRequest -Uri $url -OutFile $output
# Extraire
Expand-Archive -Path $output -DestinationPath "C:\LabEDST\Tools\BlueScreenView" -Force
1.3 Vérifier les outils :
# Vérifier que NotMyFault est présent
Test-Path "C:\LabEDST\Tools\Sysinternals\notmyfault.exe"
Test-Path "C:\LabEDST\Tools\Sysinternals\notmyfaultc.exe"
# Vérifier que BlueScreenView est présent
Test-Path "C:\LabEDST\Tools\BlueScreenView\BlueScreenView.exe"
Étape 2 : Configuration du Système pour Capturer les Crashdumps
Avant de provoquer un BSOD, configurons Windows pour créer des minidumps (fichiers de diagnostic du crash).
1. Vérifier la configuration actuelle :
# Afficher les paramètres de dump mémoire
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl"
Notez les valeurs de :
- CrashDumpEnabled : Type de dump (0=None, 1=Complete, 2=Kernel, 3=Small/Minidump)
- DumpFile : Emplacement du fichier dump complet
- MinidumpDir : Emplacement des minidumps
2. Configurer pour capturer les minidumps (normalement déjà configuré) :
# S'assurer que les minidumps sont activés
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl" -Name "CrashDumpEnabled" -Value 3 -Type DWord
# S'assurer que le dossier minidump existe
New-Item -Path "C:\Windows\Minidump" -ItemType Directory -Force
# Définir le dossier minidump
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl" -Name "MinidumpDir" -Value "%SystemRoot%\Minidump" -Type ExpandString
# Vérifier la configuration
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl"
Types de dumps :
- Complete Memory Dump (1) : Tout le contenu de la RAM (~8 Go dans notre VM)
- Kernel Memory Dump (2) : Mémoire utilisée par le kernel uniquement (~300-400 Mo)
- Small Memory Dump/Minidump (3) : Informations minimales (~256 Ko) - Recommandé
Étape 3 : Lancer NotMyFault et Provoquer un BSOD
DERNIÈRE CHANCE - Sauvegardez tout travail ouvert !
Nous allons maintenant crasher volontairement le système.
1. Lancer NotMyFault en tant qu'Administrateur :
# Naviguer vers le dossier
cd C:\LabEDST\Tools\Sysinternals
# Lancer l'interface graphique
.\notmyfault.exe
2. Interface de NotMyFault :
L'application s'ouvre avec plusieurs options de crash. Nous allons utiliser l'option la plus simple et sûre.
- Onglet "Crash" (doit être sélectionné par défaut)
- Options disponibles :
- High IRQL fault (Kernel-mode)
- Buffer overflow
- Code overwrite
- Stack trash
- etc.
3. Provoquer le BSOD :
- Sélectionnez "High IRQL fault (Kernel-mode)" (c'est une erreur typique de pilote défaillant)
- Cochez "Crash" (pas Hang, qui bloquerait juste le système)
- Cliquez sur le bouton "Crash"
BOOM ! Votre écran devient immédiatement bleu avec le message :
:(
Your PC ran into a problem and needs to restart. We're just collecting
some error info, and then we'll restart for you.
X% complete
If you'd like to know more, you can search online later for this error:
DRIVER_IRQL_NOT_LESS_OR_EQUAL
Stop code: 0x000000D1
4. Observer le processus :
- Le pourcentage augmente jusqu'à 100% (collecte des infos du crash)
- Le système redémarre automatiquement
- Windows 11 démarre normalement (peut prendre 2-3 minutes)
Étape 4 : Vérifier que le Minidump a été Créé
Après le redémarrage :
1. Vérifier la présence du minidump :
# Lister les minidumps
Get-ChildItem "C:\Windows\Minidump" | Sort-Object LastWriteTime -Descending | Select-Object -First 5 Name, LastWriteTime, Length
# Copier le dernier minidump dans notre dossier de lab
$lastDump = Get-ChildItem "C:\Windows\Minidump" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Copy-Item $lastDump.FullName -Destination "C:\LabEDST\Logs\" -Force
Write-Host "Minidump copié vers: C:\LabEDST\Logs\$($lastDump.Name)" -ForegroundColor Green
2. Vérifier les événements système :
# Chercher l'événement de BSOD dans le journal Système
Get-EventLog -LogName System -EntryType Error -Newest 10 | Where-Object {$_.EventID -eq 1001 -or $_.Source -like "*BugCheck*"} | Format-List TimeGenerated, EntryType, Source, EventID, Message
Vous devriez voir un événement Event ID 1001 (BugCheck) avec les détails du crash.
Étape 5 : Analyse du Crashdump avec BlueScreenView
5.1 Lancer BlueScreenView :
C:\LabEDST\Tools\BlueScreenView\BlueScreenView.exe
5.2 Interface de BlueScreenView :
L'outil s'ouvre et charge automatiquement tous les minidumps trouvés.
Partie supérieure : Liste des BSOD
- Dump File : Nom du fichier minidump
- Crash Time : Date et heure du crash
- Bug Check String : Nom de l'erreur (ex: DRIVER_IRQL_NOT_LESS_OR_EQUAL)
- Bug Check Code : Code stop (ex: 0x000000d1)
- Parameter 1, 2, 3, 4 : Paramètres spécifiques au type d'erreur
- Caused By Driver : Pilote ayant causé le crash (ex: notmyfault.sys)
Partie inférieure : Détails du crash sélectionné
- Liste des pilotes chargés en mémoire au moment du crash
- Colonnes importantes :
- Filename : Nom du fichier du pilote
- Address In Stack : Le pilote était-il dans la pile d'appels du crash ?
- From Address / To Address : Plage d'adresses mémoire occupées
- Size : Taille du pilote en mémoire
- Time Stamp : Date de compilation du pilote
- Product Name / Company : Informations sur l'éditeur
5.3 Analyser le crash NotMyFault :
1. Identifier le pilote fautif :
- Dans la partie supérieure, regardez la colonne "Caused By Driver"
- Vous devriez voir : notmyfault.sys ou notmyfaultc.sys
- C'est le pilote qui a volontairement provoqué le crash
2. Examiner le Bug Check :
- Bug Check String : DRIVER_IRQL_NOT_LESS_OR_EQUAL
- Bug Check Code : 0x000000D1
- Signification : Un pilote a tenté d'accéder à une zone mémoire paginée alors qu'il était à un niveau IRQL trop élevé (erreur typique de pilote mal programmé)
3. Analyser les drivers dans la pile :
- Dans la partie inférieure, les pilotes marqués en rose/rouge sont dans la pile d'appels
- notmyfault.sys devrait être marqué en rose
- Les autres pilotes système (ntoskrnl.exe, hal.dll) peuvent aussi apparaître (c'est normal, ils gèrent le crash)
4. Exporter le rapport :
- Menu File > Save Selected Items
- Sauvegardez dans
C:\LabEDST\Logs\BSOD-Analysis.txt
Étape 6 : Comprendre les Codes Stop Courants
Maintenant que vous savez analyser un BSOD, voici les codes stop les plus fréquents :
| Code Stop |
Nom |
Cause Typique |
Action |
| 0x000000D1 |
DRIVER_IRQL_NOT_LESS_OR_EQUAL |
Pilote accédant mal à la mémoire |
Mettre à jour/remplacer le pilote identifié |
| 0x0000007E |
SYSTEM_THREAD_EXCEPTION_NOT_HANDLED |
Exception non gérée dans un thread système |
Vérifier pilotes, vérifier mémoire RAM |
| 0x0000007F |
UNEXPECTED_KERNEL_MODE_TRAP |
Erreur matérielle ou overclocking |
Tester RAM, vérifier températures, désactiver OC |
| 0x0000009F |
DRIVER_POWER_STATE_FAILURE |
Pilote ne répondant pas à une requête d'alimentation |
Pilote de périphérique défaillant, souvent réseau ou USB |
| 0x000000A5 |
ACPI_BIOS_ERROR |
Erreur BIOS ACPI |
Mettre à jour le BIOS/UEFI |
| 0x000000C2 |
BAD_POOL_CALLER |
Erreur d'allocation mémoire du pool kernel |
Pilote corrompu ou malware |
| 0x000000F4 |
CRITICAL_OBJECT_TERMINATION |
Processus système critique terminé |
Corruption système, malware, ou défaillance matérielle |
| 0x00000050 |
PAGE_FAULT_IN_NONPAGED_AREA |
Accès à une adresse mémoire invalide |
RAM défectueuse ou pilote corrompu |
Étape 7 : Simulation de Diagnostic en Entreprise
Scénario réaliste : Un utilisateur vous contacte : "Mon PC a planté avec un écran bleu hier. Que s'est-il passé ?"
Votre démarche :
- Se connecter à distance au PC (ou accès physique)
- Vérifier la présence de minidumps :
Get-ChildItem "C:\Windows\Minidump" | Sort-Object LastWriteTime -Descending
- Si aucun minidump : Vérifier la configuration
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl"
- Analyser le dernier minidump avec BlueScreenView (ou WinDbg pour analyse avancée)
- Identifier le pilote fautif :
- Si c'est un pilote tiers : Vérifier les mises à jour du pilote sur le site du fabricant
- Si c'est un pilote Microsoft : Vérifier Windows Update
- Si c'est ntoskrnl.exe : Problème plus complexe (corruption système, RAM défectueuse)
- Actions correctives :
- Mettre à jour le pilote identifié
- Si récurrent : Utiliser Driver Verifier pour test approfondi
- Si lié au matériel (ex: RAM) : Lancer un test mémoire
- Documenter dans le ticket avec le fichier minidump et l'analyse
- Suivi :
- Surveiller si le problème se reproduit
- Si oui : Investigation plus poussée (WinDbg, tests matériels)
Question d'Atelier 13
Vous analysez un minidump et identifiez que le pilote nvlddmkm.sys a causé un BSOD avec le code 0x000000D1.
- a) À quel fabricant appartient ce pilote ? (Indice : nv = ...)
- b) Quel type de matériel ce pilote contrôle-t-il ?
- c) Quelles seraient vos 3 premières actions pour résoudre ce problème ?
Réponse attendue
a) Fabricant : NVIDIA (nv = NVIDIA)
b) Type de matériel : Carte graphique NVIDIA (pilote d'affichage)
c) 3 actions pour résolution :
- Mettre à jour le pilote graphique NVIDIA :
- Aller sur nvidia.com/drivers
- Télécharger la dernière version stable (pas beta)
- Désinstaller l'ancienne version avec DDU (Display Driver Uninstaller) si nécessaire
- Installer la nouvelle version
- Vérifier les températures et la stabilité GPU :
- Utiliser GPU-Z ou HWInfo
- Vérifier que le GPU ne surchauffe pas (>85°C)
- Vérifier l'overclocking (réinitialiser aux valeurs d'usine)
- Tester la RAM vidéo :
- Utiliser un outil comme OCCT ou MemtestG80
- Si erreurs détectées : problème matériel (RMA de la carte graphique)
Actions supplémentaires si échec :
- Rollback vers une version antérieure stable du pilote
- Désactiver hardware acceleration dans les applications problématiques
- Vérifier l'alimentation (PSU suffisante pour le GPU)
- Tester la carte graphique sur un autre PC
Étape 8 : Nettoyage et Restauration
1. Désinstaller le pilote NotMyFault (pour éviter des crashs accidentels futurs) :
# Vérifier si le pilote est chargé
Get-WmiObject Win32_SystemDriver | Where-Object {$_.Name -like "*notmyfault*"}
# Supprimer les fichiers
Remove-Item "C:\LabEDST\Tools\Sysinternals\notmyfault.sys" -Force -ErrorAction SilentlyContinue
Remove-Item "C:\LabEDST\Tools\Sysinternals\notmyfaultc.sys" -Force -ErrorAction SilentlyContinue
2. Archiver les minidumps pour référence future :
# Créer une archive
$archiveName = "BSOD-Lab-$(Get-Date -Format 'yyyyMMdd-HHmm').zip"
Compress-Archive -Path "C:\Windows\Minidump\*" -DestinationPath "C:\LabEDST\Backups\$archiveName"
Write-Host "Minidumps archivés dans: C:\LabEDST\Backups\$archiveName" -ForegroundColor Green
Compétences Validées - Atelier BSOD :
- Configuration du système pour capturer les minidumps
- Utilisation de NotMyFault pour provoquer un BSOD contrôlé
- Vérification de la création d'un minidump
- Installation et utilisation de BlueScreenView
- Analyse d'un crashdump pour identifier le pilote fautif
- Compréhension des codes stop courants
- Méthodologie de diagnostic de BSOD en entreprise
Points Clés à Retenir :
- Les BSOD sont causés par des erreurs au niveau kernel (souvent pilotes)
- Les minidumps contiennent les informations nécessaires au diagnostic
- BlueScreenView est un outil simple et efficace pour une première analyse
- Le pilote identifié comme "Caused By" est généralement le coupable
- Les codes stop donnent des indices sur le type de problème
- En entreprise, toujours documenter les BSOD et les actions correctives