
Hyperviseur de recherche Windows x64 utilisant Intel VT-x et des hooks EPT par CPU pour intercepter les routines Nt/Ex/Mm, appliquer des politiques de requêtes et diffuser en continu la télémétrie du noyau en temps réel.
Virtualisation Intel VT-x, hooking EPT et télémétrie noyau interactive en C et en assembleur x64.
Velum place un noyau Windows en cours d'exécution en mode non-root VMX et offre aux chercheurs un moyen interactif d'observer les appels natifs, d'inspecter l'activité du noyau et d'appliquer des politiques de requêtes. Ses hooks EPT rejouent les instructions d'origine dans le matériel, tandis que des helpers invités capturent les métadonnées et qu'un worker différé délivre des événements lisibles à la console ou à DebugView.
Utilisez-le pour suivre une opération de fichier depuis les arguments d'entrée jusqu'à une décision de politique, comparer une requête autorisée avec une requête refusée, ou explorer l'identité du processeur et les paramètres de timing sans redémarrer l'hyperviseur. L'implémentation inclut le démarrage et l'arrêt par CPU, le transfert d'état CET, la réinjection d'événements et la gestion du cache de traduction.
Premiers pas | Guides d'utilisation | Article technique | Captures d'exécution | Licence MIT
| Domaine | Ce que vous pouvez faire |
|---|---|
| Hooks EPT | Activer et désactiver les hooks d'entrées exportées avec rejeu des instructions d'origine et restauration MTF |
| Télémétrie des appels natifs | Inspecter les ID d'appelant, les chemins, les métadonnées de processus et les arguments d'entrée décodés |
| Politiques de requêtes | Refuser les requêtes Nt correspondantes selon des critères d'appelant, de chemin et de champ d'entrée |
| Réduction des accès | Retirer les droits explicitement demandés pour NtCreateFile, NtOpenFile, NtCreateSection, NtOpenProcess et NtDuplicateObject |
| Observation du noyau | Suivre les allocations/libérations de pool, le mappage mémoire et les entrées de copie ; inspecter les résumés de modules/tags |
| Journalisation | Choisir la sortie vers la console en direct ou DebugView et configurer des filtres par cible |
| CPUID | Appliquer et interroger des règles d'identité, puis restaurer les valeurs par défaut |
| TSC | Appliquer un décalage signé fixe avec traduction des échéances et réinitialisation à zéro |
| Cycle de vie | Vérifier chaque CPU participant et rendre Windows à l'exécution native via le flux d'arrêt |
Le catalogue de cibles contient 12 routines Nt et 12 routines Ex/Mm. La console résout les exports disponibles et les adresses d'entrée partagées sur le noyau en cours d'exécution. Consultez l'index des cibles pour les champs et les actions prises en charge de chaque cible.
Le runtime est optimisé autour d'une propriété d'état explicite et d'un chemin de sortie VM réduit. Une couche d'assembleur x64 d'environ 1 000 lignes gère la préservation des registres, les transitions VMX, le transfert d'état CET et le retour natif. Les structures par CPU et les réserves EPT préallouées gardent l'allocation hors du chemin de sortie ; le formatage des événements s'exécute dans un worker différé au niveau PASSIVE. Les builds de release utilisent l'optimisation du compilateur, tandis qu'une interception sélective évite d'intercepter inutilement les opérations ordinaires.
Les gestionnaires racine gèrent les transitions VMCS et EPT. Les helpers invités éligibles capturent les arguments et évaluent les politiques dans le contexte Windows. Le formatage s'exécute plus tard dans le worker de vidage. Un appel autorisé exécute son instruction d'entrée d'origine sous un mappage EPT temporaire ; MTF rend le contrôle pour restaurer l'ombre. Les appels refusés utilisent un véritable retour invité afin que la pile normale et la pile d'ombre CET avancent ensemble.
Pour une explication approfondie, lisez Velum : préserver l'exécution Windows à travers les transitions VMX. L'article suit le démarrage VMX, les contrôles VMCS, les hooks EPT, CET, la gestion des NMI/événements, la télémétrie et l'arrêt à travers le code source. Il inclut des preuves WinDbg issues de l'investigation sous Windows 10 et explique le correctif d'alias ExFreePool/ExFreePoolWithTag. Les notes d'ingénierie plus courtes résument ces décisions.
Les captures ci-dessous proviennent d'une session physique Windows 11 build 26300.9711 sur un Intel i7-12700F avec 20 processeurs logiques. La session comprend 20/20 vérifications de diagnostic CPU, un refus d'écriture de fichier ciblé, une réduction d'accès, une configuration de processeur et un arrêt vérifié. Galerie complète et animations | Détails de la session et hachages.
Activez les hooks, configurez les politiques, inspectez l'état du CPU et gérez le runtime depuis une seule console.

Une requête NtWriteFile contrôlée de six octets avec son appelant, son chemin et ses champs d'entrée.

L'accès demandé 0x12019F devient 0x120199 après suppression du masque 0x6. L'ouverture
réussit, et la sonde confirme que le handle résultant ne peut pas écrire. Ce composite annoté
associe la sortie du moniteur au résultat de l'application.



Télécharger v0.1.0 pour Windows x64 (ZIP) | Notes de version et sommes de contrôle SHA-256
Le ZIP contient velum.sys et velum-console.exe. Suivez le guide d'installation ci-dessous
avant de charger le pilote, ou compilez depuis les sources :