Respire profondément — ce README décrit, pas-à-pas, tout ce qu’il faut faire pour signer, installer et tester le pilote kernel HardShadow.sys sur une machine de test. Suis les sections dans l’ordre.
IMPORTANT : les instructions ci‑dessous réduisent temporairement la sécurité (test-signing, désactivation de Secure Boot ou Memory Integrity). Ne les applique QUE sur des machines de TEST.
HardShadow.sys— binaire du pilote (généré dans.\build\).signe.ps1— script PowerShell fourni pour copier, signer (auto‑signé) et tenter de charger le pilote.HardShadow.inf— INF d’installation (si présent).hardShadow.c— code source du pilote.
- Windows x64 (avec les droits Administrateur).
- Visual Studio 2022 pour reconstruire le projet (si nécessaire) — ouvrir la solution et exécuter Build > Build Solution.
- PowerShell lancé en mode Administrateur.
- (Optionnel) Windows SDK /
signtool.exepour vérifications avancées.
Ouvre PowerShell en administrateur et exécute les commandes suivantes pour connaître l’état courant :
-
Vérifier l’état de Secure Boot (si UEFI) :
Get-SecureBootPolicy -
Vérifier si le mode testsigning est activé :
bcdedit /enum testsigning -
Vérifier l’intégrité mémoire (Memory integrity / Core isolation) — interface graphique recommandée :
- Ouvre Windows Security → Device security → Core isolation details → Memory integrity.
- Si tu veux uniquement vérifier via registre (avancé), limite-toi aux lectures ; modifications manuelles peuvent nécessiter un redémarrage et peuvent être risquées.
Si tu veux tester rapidement ton pilote localement sans passer par attestation Microsoft, tu as 3 options (choisis UNE seule et fais un reboot si nécessaire) :
Option A — Activer test-signing (cycle rapide)
bcdedit /set testsigning onPour désactiver ensuite :
bcdedit /set testsigning offOption B — Désactiver Memory Integrity (Core isolation) — recommandé via UI
- Ouvre Windows Security → Device security → Core isolation details → Désactive Memory integrity → Redémarre.
- Éviter de modifier directement le registre sauf si tu sais ce que tu fais.
Option C — Désactiver Secure Boot (nécessite UEFI firmware)
- Impossible depuis Windows : redémarre dans le firmware UEFI/BIOS et désactive Secure Boot manuellement. Sauvegarde et redémarre.
- Procédure dépend du fabricant (Dell/HP/ASUS/Lenovo…). Utilise une VM sans Secure Boot pour tests rapides.
Le script automatise :
- création d’un certificat auto‑signé (si absent),
- import du certificat dans
LocalMachine\RootetTrustedPublisher, - signature avec
Set-AuthenticodeSignature, - copie du
.sysversC:\Windows\System32\drivers, - création et tentative de démarrage du service kernel (
sc create/sc start).
- Ouvre PowerShell en mode Administrateur.
- Positionne-toi dans le dossier du projet contenant
signe.ps1etHardShadow.sys. - Permets l’exécution temporaire de scripts et lance :
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process .\signe.ps1
- Observe les messages affichés. Le script vérifie la signature, importe le certificat si nécessaire, copie le pilote et tente
sc create/sc start. Vérifie les logs si l’activation échoue.
Si tu préfères signer manuellement ou vérifier les étapes, voici une procédure type (exemple pédagogique — manipule avec soin) :
- Créer un certificat auto-signé pour le code signing :
New-SelfSignedCertificate -Type CodeSigning -Subject "CN=HardShadowDriver" -KeySize 2048 -HashAlgorithm sha256 -CertStoreLocation "cert:\LocalMachine\My"
- Exporter le certificat (optionnel) puis l’importer dans
Trusted RootetTrustedPublisher:# Récupérer le certificat nouvellement créé $cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -eq "CN=HardShadowDriver" } # Exporter en .cer Export-Certificate -Cert $cert -FilePath "C:\chemin\vers\HardShadowDriver.cer" -Force # Importer dans les magasins nécessaires Import-Certificate -FilePath "C:\chemin\vers\HardShadowDriver.cer" -CertStoreLocation "Cert:\LocalMachine\Root" Import-Certificate -FilePath "C:\chemin\vers\HardShadowDriver.cer" -CertStoreLocation "Cert:\LocalMachine\TrustedPublisher"
- Signer le binaire
.sys(si le fichier est déjà copié dansdrivers) :Set-AuthenticodeSignature -FilePath "C:\Windows\System32\drivers\HardShadow.sys" -Certificate $cert
- Vérifier la signature (optionnel avec signtool) :
signtool verify /v /pa "C:\Windows\System32\drivers\HardShadow.sys"
Note : un certificat auto‑signé ne chaînera pas vers une racine Microsoft. Sur une machine avec Code Integrity en enforcement (Secure Boot activé), Windows refusera le chargement même si la signature est « valide » localement.
Après avoir signé et copié le fichier vers C:\Windows\System32\drivers :
# Chemin du pilote
$driverPath = "C:\Windows\System32\drivers\HardShadow.sys"
# Création du service
sc create HardShadow type= kernel binPath= "$driverPath"
# Démarrage du service
sc start HardShadowAprès un sc start, si le chargement échoue, vérifie l’Event Viewer → System logs (sources CodeIntegrity et Service Control Manager) pour la raison exacte.
Sur des machines avec Secure Boot / Code Integrity en enforcement, il faut un binaire signé par une autorité acceptée par Microsoft (attestation signing) :
- Obtenir un certificat EV (Extended Validation) code‑signing.
- Préparer le package driver (INF +
.sys). - Soumettre le package au Windows Hardware Dev Center / Partner Center pour attestation signing.
- Microsoft renverra un binaire/catalog signé qui chaînera vers une racine Microsoft et sera accepté par Code Integrity sur les machines Secure Boot.
Ressources utiles :
signtool(Windows SDK) — pour vérifications avancées.- Documentation Partner Center / Hardware Dev Center pour attestation signing.
- Event Viewer → System logs (CodeIntegrity / Service Control Manager).
- Test sur une VM sans Secure Boot ou avec testsigning activé pour cycle rapide.
- Vérifie toujours les logs System après un
sc start— ils donnent la cause exacte du rejet. - Si la signature semble correcte mais le pilote est refusé, vérifie :
- Secure Boot activé (bloque les certificats non attestés).
- Catalogue (.cat) si tu utilises INF + catalog.
- Chaîne de certification (certificat auto-signé ne suffit pas).
- Ne distribue jamais un pilote kernel non-attestation-signed sur des machines en production ou avec Secure Boot activé.
# Vérifier l'état de Secure Boot
Get-SecureBootPolicy
# Vérifier si test-signing est activé
bcdedit /enum testsigning
# Activer test-signing (développement local)
bcdedit /set testsigning on
# Désactiver test-signing
bcdedit /set testsigning off
# Désactiver Memory Integrity (interface graphique recommandée)
# Ou via PowerShell (risqué, redémarrage possible nécessaire)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender\Features" -Name "MemoryIntegrityEnabled" -Value 0 -Type DWord
# Désactiver Secure Boot (nécessite un accès au firmware UEFI)
# Pas de commande PowerShell, voir documentation UEFI de la machine
# Exécuter le script de signature et d'installation
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
.\signe.ps1
# Vérifier la signature du pilote (après signature)
signtool verify /v /pa "C:\Windows\System32\drivers\HardShadow.sys"Si tu veux que je corrige une version spécifique du script signe.ps1 ou que je génère un exemple d’INF adapté à HardShadow.sys, indique le contenu actuel et je t’aiderai à l’améliorer.