
Hipervisor de investigación para Windows x64 que utiliza Intel VT-x y hooks EPT por CPU para interceptar rutinas Nt/Ex/Mm, aplicar políticas de solicitud y transmitir telemetría del kernel en vivo.
Virtualización Intel VT-x, hooking EPT y telemetría de kernel interactiva en C y ensamblador x64.
Velum lleva un kernel de Windows en ejecución a la operación no-root de VMX y ofrece a los investigadores una forma interactiva de observar llamadas nativas, inspeccionar la actividad del kernel y aplicar políticas de solicitudes. Sus hooks EPT reproducen las instrucciones originales en hardware, mientras que los helpers del invitado capturan metadatos y un worker diferido entrega eventos legibles a la consola o a DebugView.
Úsalo para seguir una operación de archivo desde los argumentos de entrada hasta una decisión de política, comparar una solicitud permitida con una denegada, o explorar la identidad del procesador y la configuración de temporización sin reiniciar el hipervisor. La implementación incluye arranque y apagado por CPU, transferencia de estado CET, reinyección de eventos y gestión de la caché de traducción.
Primeros pasos | Guías de uso | Documento técnico | Capturas en tiempo de ejecución | Licencia MIT
| Área | Qué puedes hacer |
|---|---|
| Hooks EPT | Habilitar y deshabilitar hooks de entradas exportadas con reproducción de instrucciones originales y restauración mediante MTF |
| Telemetría de llamadas nativas | Inspeccionar IDs de llamador, rutas, metadatos de proceso y argumentos de entrada decodificados |
| Políticas de solicitudes | Denegar solicitudes Nt coincidentes usando criterios de llamador, ruta y campos de entrada |
| Reducción de acceso | Eliminar los derechos solicitados explícitamente para NtCreateFile, NtOpenFile, NtCreateSection, NtOpenProcess y NtDuplicateObject |
| Observación del kernel | Seguir la asignación/liberación de pool, el mapeo de memoria y las entradas de copia; inspeccionar resúmenes de módulos/tags |
| Registro | Elegir salida por consola en vivo o DebugView y configurar filtros por objetivo |
| CPUID | Aplicar y consultar reglas de identidad, y luego restaurar los valores predeterminados |
| TSC | Aplicar un desplazamiento fijo con signo con traducción de plazos y restablecer a cero |
| Ciclo de vida | Verificar cada CPU participante y devolver Windows a la ejecución nativa mediante el flujo de apagado |
El catálogo de objetivos contiene 12 rutinas Nt y 12 rutinas Ex/Mm. La consola resuelve las exportaciones disponibles y las direcciones de entrada compartidas en el kernel en ejecución. Consulta el índice de objetivos para ver los campos y las acciones compatibles de cada objetivo.
El runtime está optimizado en torno a una propiedad de estado explícita y una ruta de salida de VM reducida. Una capa de ensamblador x64 de aproximadamente 1.000 líneas gestiona la preservación de registros, las transiciones VMX, la transferencia de estado CET y el retorno nativo. Las estructuras por CPU y las reservas EPT preasignadas mantienen la asignación fuera de la ruta de salida; el formateo de eventos se ejecuta en un worker diferido a nivel PASSIVE. Las compilaciones de release usan optimización del compilador, mientras que la interceptación selectiva evita atrapar operaciones ordinarias innecesariamente.
Los manejadores raíz gestionan las transiciones de VMCS y EPT. Los helpers del invitado elegibles capturan argumentos y evalúan políticas en el contexto de Windows. El formateo se ejecuta más tarde en el worker de drenaje. Una llamada permitida ejecuta su instrucción de entrada original bajo un mapeo EPT temporal; MTF devuelve el control para restaurar la sombra. Las llamadas denegadas usan un retorno real al invitado para que la pila normal y la shadow stack CET avancen juntas.
Para una explicación en profundidad, lee Velum: preserving Windows execution across VMX transitions. El artículo recorre el arranque de VMX, los controles de VMCS, los hooks EPT, CET, el manejo de NMI/eventos, la telemetría y el apagado a través del código fuente. Incluye evidencia de WinDbg de la investigación en Windows 10 y explica la corrección del alias ExFreePool/ExFreePoolWithTag. Las notas de ingeniería más breves resumen esas decisiones.
Las capturas a continuación provienen de una sesión física de Windows 11 build 26300.9711 en un Intel i7-12700F con 20 procesadores lógicos. La sesión incluye 20/20 comprobaciones de diagnóstico de CPU, denegación de escritura de archivos con alcance definido, reducción de acceso, configuración del procesador y apagado verificado. Galería completa y animaciones | Detalles de la sesión y hashes.
Habilite los hooks, configure las políticas, inspeccione el estado de la CPU y gestione el runtime desde una única consola.

Una solicitud NtWriteFile controlada de seis bytes con su llamador, ruta y campos de entrada.

El acceso solicitado 0x12019F se convierte en 0x120199 tras eliminar la máscara 0x6. La apertura
tiene éxito, y la sonda confirma que el handle resultante no puede escribir. Este compuesto etiquetado
empareja la salida del monitor con el resultado de la aplicación.



Descargar v0.1.0 para Windows x64 (ZIP) | Notas de la versión y sumas de comprobación SHA-256
El ZIP contiene velum.sys y velum-console.exe. Siga la guía de configuración a continuación
antes de cargar el controlador, o compile desde el código fuente: