Skip to content
Nelson2410Public

About

Le projet Virtool est un exécutable qui a pour mission de libérer la Virtualisation imbriquée sous Windows. Il est destiné aux étudiants et ingénieurs IT qui travaillent sur des laboratoires sous EVE-NG, GNS3, Proxmox, etc.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Virtool

Diagnostic et remédiation des blocages de virtualisation imbriquée sous Windows.

Si Hyper-V, VBS, HVCI ou Credential Guard monopolisent les extensions matérielles VT-x / AMD-V, les hyperviseurs tiers comme EVE-NG, VMware Workstation ou VirtualBox refusent de démarrer leurs VMs. Virtool identifie la cause, propose un plan de correction et l'applique, avec rollback automatique en cas d'échec.

Télécharger Virtool.exe (68 Mo) · Télécharger virtool-cli.exe (34 Mo)


Sommaire


Le problème résolu

Hyper-V, VBS, HVCI et Credential Guard reposent sur un hyperviseur Microsoft qui prend le contrôle exclusif des extensions de virtualisation matérielle. Tant que cet hyperviseur tourne, EVE-NG, VMware Workstation et VirtualBox ne peuvent pas s'exécuter correctement: soit ils refusent de démarrer, soit leurs VMs tombent en erreur immédiatement.

Désactiver ces mécanismes manuellement demande de modifier le registre, d'ajuster le BCD, de désactiver plusieurs fonctionnalités Windows via DISM, puis de redémarrer pour vérifier. Une erreur dans la séquence peut bloquer le démarrage du système ou casser d'autres usages du poste.

Virtool automatise ce processus et sécurise chaque étape.

Comment fonctionne Virtool

  1. Diagnostic. Onze sondes examinent le registre Windows, le BCD, les services, les fonctionnalités optionnelles et le firmware. Chacune produit un résultat: prêt, avertissement, bloqué ou indéterminé.

  2. Verdict. Les résultats sont agrégés en un verdict global. Un système n'est déclaré prêt que si aucune sonde ne remonte d'état bloqué ou indéterminé. Une incertitude n'est jamais traitée comme un feu vert.

  3. Plan. Les causes de blocage sont traduites en une séquence d'actions concrètes: écriture de registre, modification BCD, arrêt de service, désactivation de fonctionnalité DISM. Chaque action est réversible.

  4. Snapshot. Avant d'appliquer le plan, Virtool capture l'état complet du système dans un fichier JSON horodaté.

  5. Application. Les actions sont exécutées dans l'ordre. Après chaque action, Virtool vérifie que l'effet attendu est bien obtenu.

  6. Rollback. Au premier échec, le rollback restaure l'état d'origine à partir du snapshot, en commençant par la dernière action appliquée.

  7. Rapport. Un rapport complet (JSON et texte) est généré et peut être exporté.

Ce que Virtool fait

Mécanisme Sonde Action corrective
VBS Registre + WMI EnableVirtualizationBasedSecurity à 0, HyperVVirtualizationBasedSecurityOptout à 1
Hyperviseur Windows WMI HypervisorPresent bcdedit /set hypervisorlaunchtype off
HVCI Registre Scenarios\HypervisorEnforcedCodeIntegrity\Enabled à 0
Credential Guard Registre Scenarios\CredentialGuard\Enabled à 0
System Guard Secure Launch Registre Scenarios\SystemGuard\Enabled à 0
Services Hyper-V WMI Win32_Service sc config et sc stop sur vmcompute, HvHost, vmms
Windows Hypervisor Platform WMI Win32_OptionalFeature DISM disable HypervisorPlatform
Hyper-V complet WMI Win32_OptionalFeature DISM disable Microsoft-Hyper-V-All
Plateforme d'ordinateur virtuel WMI Win32_OptionalFeature DISM disable VirtualMachinePlatform
Bac à sable Windows WMI Win32_OptionalFeature DISM disable Containers-DisposableClientVM
BitLocker WMI Win32_EncryptableVolume Avertissement uniquement
Politique Active Directory WMI + registre Action manuelle, Virtool ne contourne pas
Verrou UEFI Registre Action manuelle
Virtualisation firmware WMI Win32_Processor Action manuelle dans le BIOS/UEFI

Ce que Virtool ne fait pas

  • Virtool ne modifie jamais le firmware UEFI ni le BIOS. Si un verrou UEFI empêche la désactivation, Virtool affiche une procédure manuelle.
  • Virtool ne contourne jamais une politique Active Directory. Si une GPO impose VBS, Virtool le signale et vous invite à contacter votre administrateur.
  • Virtool n'envoie aucune donnée sur Internet. Tout reste sur la machine locale.
  • Virtool ne redémarre pas la machine automatiquement. Un bandeau vous prévient quand un redémarrage est nécessaire, vous choisissez le moment.
  • Virtool ne restaure pas les VMs Hyper-V supprimées. Désactiver Hyper-V désactive les VMs Hyper-V existantes. Un avertissement explicite apparaît dans le plan avant application.

Téléchargement et installation

Télécharger Virtool.exe (68 Mo)

Télécharger virtool-cli.exe (34 Mo)

Chaque binaire est publié avec son empreinte SHA256 dans un fichier .sha256 adjacent. Les fichiers .sha256 sont téléchargeables sur la page de la release.

Vérification sous PowerShell:

Get-FileHash Virtool.exe -Algorithm SHA256

Comparez le résultat avec le contenu du fichier Virtool.exe.sha256.

Aucune installation n'est nécessaire. Le binaire est autonome et embarque le runtime .NET 8. Double-cliquez sur Virtool.exe, acceptez l'invite UAC, l'application s'ouvre.

Windows Defender SmartScreen affichera probablement un avertissement « Éditeur inconnu » au premier lancement. Voir la FAQ correspondante pour comprendre pourquoi et comment procéder.

Utilisation, interface graphique

L'application s'ouvre sur la vue Diagnostic.

1. Lancer le diagnostic

Cliquez sur « Lancer le diagnostic ». Onze sondes s'exécutent en parallèle en moins de deux secondes. Chaque sonde affiche son statut:

  • PRÊT (vert) : mécanisme inactif
  • ATTENTION (jaune) : contrainte détectée, non bloquante
  • BLOQUÉ (rouge) : mécanisme actif, bloquant
  • INDÉTERMINÉ (gris) : mesure impossible (droits, WMI muet, etc.)

La barre inférieure affiche le verdict global.

2. Consulter le plan

Si le système est bloqué, cliquez sur « Voir le plan de remédiation ». La liste des actions s'affiche avec leur type (BCD, registre, service, fonctionnalité) et un éventuel avertissement.

3. Confirmation UEFI

Si un verrou UEFI est détecté, un bouton « Instructions UEFI détaillées » apparaît. Il ouvre la procédure manuelle à suivre dans le firmware. Une case à cocher confirme que vous avez effectué l'action. Le plan ne peut pas être appliqué sans cette confirmation.

4. Appliquer le plan

Cliquez sur « Appliquer le plan ». La vue Exécution affiche la progression. Chaque étape est appliquée puis vérifiée.

5. Écran de complétion

En cas de succès, l'écran affiche le nombre d'étapes appliquées et un bouton « Exporter le rapport » (JSON et texte). En cas d'échec, l'écran indique quelle étape a échoué et le résultat du rollback.

Un bandeau jaune indique si un redémarrage est nécessaire.

Utilisation, ligne de commande

virtool-cli.exe offre deux commandes, en lecture seule.

Diagnostic

virtool-cli diagnose

Sortie texte. Code de retour: 0 si le système est prêt, 1 si un blocage est détecté, 2 en cas d'erreur interne.

Diagnostic verbeux

virtool-cli diagnose --verbose

Ajoute le détail de chaque sonde, avec preuve technique.

Sortie JSON

virtool-cli diagnose --json

Sortie structurée, exploitable par jq ou un script:

virtool-cli diagnose --json | jq '.isReady'

Dernier rapport

virtool-cli report

Affiche le dernier rapport de remédiation enregistré.

Le CLI ne dispose pas de manifest administrateur. Sans privilèges élevés, certaines sondes (BCD, BitLocker) retourneront « indéterminé ». C'est un comportement volontaire : le CLI signale ce qu'il ne peut pas mesurer au lieu de le supposer.

Modifications apportées au système

Virtool peut modifier les éléments suivants, uniquement après confirmation de l'utilisateur et après capture d'un snapshot.

Registre Windows

  • HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard (EnableVirtualizationBasedSecurity, HyperVVirtualizationBasedSecurityOptout, RequirePlatformSecurityFeatures, Locked)
  • HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity
  • HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard
  • HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SystemGuard

Configuration de démarrage (BCD)

  • hypervisorlaunchtype

Services Windows

  • vmcompute, HvHost, vmms

Fonctionnalités optionnelles (DISM)

  • HypervisorPlatform, Microsoft-Hyper-V-All, VirtualMachinePlatform, Containers-DisposableClientVM

Aucune autre zone du système n'est touchée. Aucune valeur n'est écrite sans avoir été capturée dans le snapshot.

Sécurité, snapshots et rollback

Snapshot avant modification

Avant chaque application de plan, Virtool capture l'état complet des zones qu'il peut modifier et l'enregistre dans %ProgramData%\Virtool\snapshots\. Le fichier JSON est écrit atomiquement (fichier temporaire puis renommage) pour ne jamais être corrompu en cas de crash.

Refus si capture dégradée

Si le snapshot est manifestement incomplet (BCD illisible, registre inaccessible, WMI muet), Virtool refuse l'application du plan. Mieux vaut ne rien faire que de risquer un rollback impossible.

Rollback automatique

Au premier échec d'application ou de vérification, Virtool restaure les étapes déjà appliquées, dans l'ordre inverse. Le rollback est best-effort : si une restauration individuelle échoue, les autres sont quand même tentées. Le rapport final indique combien d'étapes ont pu être restaurées.

Rapports persistants

Chaque exécution produit un rapport JSON et TXT, enregistré dans %ProgramData%\Virtool\reports\. Ces fichiers peuvent être supprimés à tout moment. Ils ne sont jamais transmis à l'extérieur.

Rapports et journaux

Emplacements des fichiers:

Contenu Dossier
Snapshots %ProgramData%\Virtool\snapshots\
Rapports d'exécution %ProgramData%\Virtool\reports\

Chaque rapport contient : verdict du diagnostic, snapshot complet, plan prévu, résultat de chaque étape (application et vérification), rapport de rollback, résultat final.

Le bouton « Exporter le rapport » ouvre une boîte de dialogue qui copie le JSON et le texte vers un emplacement de votre choix. Ces deux fichiers peuvent être joints à un ticket support sans risque de fuite d'information sensible.

Prérequis système

  • Windows 10 ou Windows 11, x64
  • Privilèges administrateur (nécessaires pour WMI Win32_DeviceGuard, bcdedit, DISM)
  • 100 Mo d'espace disque
  • Aucune dépendance externe (le runtime .NET 8 est embarqué)

Le binaire est actuellement construit pour win-x64. Une version win-arm64 peut être produite depuis les sources.

Compiler depuis les sources

Nécessite .NET 8 SDK.

git clone https://github.com/Nelson2410/virtool.git
cd virtool
dotnet build
dotnet test

Publier les binaires

powershell -ExecutionPolicy Bypass -File build/publish.ps1

Le script produit :

  • dist/Virtool/Virtool.exe (interface graphique)
  • dist/Virtool.Cli/virtool-cli.exe (interface ligne de commande)

Chaque binaire est accompagné de son empreinte SHA256.

Structure du dépôt

Dossier Rôle
src/Virtool.Core/ Moteur de diagnostic et de remédiation (aucune dépendance UI)
src/Virtool.App/ Interface graphique WPF
src/Virtool.Cli/ Interface ligne de commande
src/Virtool.Core.Tests/ Tests unitaires du moteur
src/Virtool.App.Tests/ Tests unitaires des ViewModels
build/ Scripts de publication

Questions fréquentes

Windows Defender bloque Virtool.exe. Que faire ?

Windows Defender peut réagir à un exécutable inconnu demandant des privilèges administrateur. Acceptez l'exécution via « Informations complémentaires » puis « Exécuter quand même ». Si Defender met le fichier en quarantaine, restaurez-le manuellement. Voir la question suivante sur la signature.

Virtool est-il signé numériquement ?

Non, le binaire n'est pas signé pour la version 0.1.x.

La signature de code avec un certificat reconnu (OV ou EV) coûte entre 200 € et 800 € par an, ce qui n'est pas justifié pour un projet personnel à diffusion limitée. Un certificat auto-signé est gratuit mais n'apporte aucun bénéfice SmartScreen : l'avertissement « Éditeur inconnu » persiste à l'identique. Signer avec un certificat auto-signé serait de la fausse sécurité.

Comment vérifier l'intégrité du binaire sans signature ?

Chaque binaire est accompagné d'un fichier .sha256 contenant son empreinte SHA256. Pour vérifier :

Get-FileHash Virtool.exe -Algorithm SHA256

Comparez le résultat à la première colonne du fichier Virtool.exe.sha256. Si les deux empreintes correspondent, le fichier n'a pas été altéré pendant le téléchargement. Les empreintes officielles sont aussi publiées avec chaque version.

Une version future sera-t-elle signée ?

Une publication sur le Microsoft Store est envisagée pour une version ultérieure. Depuis 2025, le Store accepte les applications Win32 packagées en MSIX et signe automatiquement le binaire avec son propre certificat de confiance, sans aucun coût pour le développeur. Cette option reste à l'étude et n'est pas planifiée pour la version 0.1.x.

J'utilise Hyper-V pour d'autres VMs. Virtool va-t-il tout casser ?

Virtool affiche un avertissement explicite avant de désactiver les fonctionnalités Hyper-V. Sauvegardez vos VMs Hyper-V avant de continuer. Si vous avez besoin d'Hyper-V en parallèle, Virtool n'est probablement pas l'outil adapté.

Virtool redémarre-t-il la machine automatiquement ?

Non. Virtool détecte les changements qui nécessitent un redémarrage et affiche un bandeau. Vous redémarrez quand vous le souhaitez.

Est-ce que mes données sont envoyées quelque part ?

Non. Aucun appel réseau, aucune télémétrie, aucun envoi automatique. Les rapports sont enregistrés localement et exportés uniquement sur votre demande.

Que faire si le rollback échoue ?

Le rapport d'échec indique précisément quelles étapes n'ont pas pu être annulées. Les valeurs d'origine sont dans le snapshot JSON de %ProgramData%\Virtool\snapshots\. Elles peuvent être restaurées manuellement.

Quelle est la différence entre Virtool.exe et virtool-cli.exe ?

Virtool.exe offre l'interface graphique et peut appliquer un plan de remédiation. virtool-cli.exe offre seulement le diagnostic et la lecture de rapports, sans modification du système. Le CLI est conçu pour l'automatisation en lecture seule.

Licence

Ce projet est sous licence MIT.

Copyright (c) 2026 Nelson Bandos.

Voir les détails

Auteur

Nelson Bandos | Réseaux & Infrastructure IT

Développement assisté par DeepSeek.

About

Le projet Virtool est un exécutable qui a pour mission de libérer la Virtualisation imbriquée sous Windows. Il est destiné aux étudiants et ingénieurs IT qui travaillent sur des laboratoires sous EVE-NG, GNS3, Proxmox, etc.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages