Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SimpleVisor — Hipervisor mínimo Intel VT-x para Windows y UEFI que virtualiza un host en vivo para introspección, con soporte para hyperjacking dinámico, unhyperjacking, EPT y VPID. | Kitploit
Herramientas/GitHubGitHub/ionescu007/simplevisor
Ingeniería InversaVirtualización de SeguridadAnálisis de MalwareSeguridad de HardwareAnálisis de BinariosPapers e InvestigaciónAprendizaje y Educación
GitHubionescu007/simplevisor

SimpleVisor

Hipervisor mínimo Intel VT-x para Windows y UEFI que virtualiza un host en vivo para introspección, con soporte para hyperjacking dinámico, unhyperjacking, EPT y VPID.

Ver Repositorio
2.0k286hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

SimpleVisor

SimpleVisor es un hipervisor simple y portátil, específico para Intel x64/EM64T VT-x, con dos objetivos concretos: usar la menor cantidad de código ensamblador posible (10 líneas) y tener la menor cantidad de código relacionado con VMX para soportar hyperjacking y unhyperjacking dinámico (es decir, virtualizar el estado del host desde dentro del host) mientras también soporta características avanzadas como EPT y VPID. Actualmente se ejecuta tanto en Windows como en entornos UEFI.

Introducción

¿Siempre has tenido curiosidad por saber cómo construir un hipervisor? ¿La documentación de Intel (los cientos de páginas) te ha desanimado? ¿Los ejemplos que has encontrado en línea solo han complicado más las cosas, o han requerido semanas de lectura de docenas de miles de líneas de código? Si es así, SimpleVisor podría ser el proyecto para ti.

Sin contar los exhaustivos comentarios que explican cada línea de código, y las idiosincrasias específicas relacionadas con Windows o Intel, SimpleVisor consta de aproximadamente 500 líneas de código C y 10 líneas de código ensamblador x64, todo ello con la capacidad de ejecutarse en todas las versiones recientes de Windows de 64 bits, y soportando carga/descarga dinámica en tiempo de ejecución.

Además, SimpleVisor utiliza una biblioteca de sistema operativo ligera para funcionalidades específicas de Windows, separando las partes del hipervisor de las partes específicas de Windows. Aprovechando este diseño portátil, ahora también está disponible una versión UEFI de SimpleVisor. Ten en cuenta, sin embargo, que no tiene soporte robusto para entornos MP debido a problemas con UEFI, y que cargar un sistema operativo eventualmente resultará en un fallo, ya que el SO alcanzará rutas de código no implementadas debido a su reconfiguración de los recursos del procesador. Virtualizar todo el arranque del sistema operativo desde UEFI está fuera del alcance del proyecto.

SimpleVisor se puede compilar con Visual Studio 2015 Update 3, y aunque los compiladores más antiguos/nuevos no han sido probados y no son compatibles, es probable que también puedan compilar el proyecto. Sin embargo, es importante mantener las diversas configuraciones del compilador y del enlazador tal como las ves.

SimpleVisor ha sido probado actualmente con éxito en las siguientes plataformas:

  • Windows 8.1 en un procesador Haswell (PC de escritorio personalizado)
  • Windows 10 Redstone 1 en un procesador Sandy Bridge (portátil Samsung 930)
  • Windows 10 Threshold 2/Redstone 1 en un procesador Skylake (tableta Surface Pro 4)
  • Windows 10 Threshold 2 en un procesador Skylake (Dell Inspiron 11-3153 con SGX)
  • VMWare Workstation 11, pero sin EPT (VMWare no soporta EPT de 1GB)
  • UEFI 2.4 en una placa base Asus Maximus VII Extreme (PC de escritorio personalizado)

En este momento, no ha sido probado en Bochs, pero no hay razón por la que SimpleVisor no pudiera ejecutarse en dicho entorno también. Sin embargo, si tu máquina ya está ejecutándose bajo un hipervisor como Hyper-V o Xen, SimpleVisor no se cargará.

Ten en cuenta que las versiones x86 de Windows no están expresamente soportadas, ni los procesadores anteriores a la microarquitectura Nehalem, ni Windows 7. El soporte para los dos últimos es fácil de añadir y existe en ciertos forks.

Motivación

Demasiados proyectos de hipervisores ahí fuera son o extremadamente complicados ([Xen][1], KVM, VirtualBox) y/o de código cerrado (VMware, Hyper-V), además de estar fuertemente enfocados hacia el desarrollo o sistemas basados en Linux. Adicionalmente, la mayoría (excepto Hyper-V) están expresamente construidos con el propósito de permitir la ejecución de máquinas virtuales, y no la virtualización de un sistema en vivo y en ejecución, para realizar introspección u otras tareas relacionadas con la seguridad sobre él.

Sin embargo, algunos proyectos destacan del resto, como el original [Blue Pill][2] de Joanna, o proyectos como [VirtDbg][3] y [HyperDbg][4]. Desafortunadamente, la mayoría de estos ya son bastante antiguos, y algunos solo funcionan en procesadores x86, y no soportan sistemas operativos más nuevos como Windows 10. Otro ejemplo bastante simple, similar a Blue Pill en algunos aspectos, pero que en realidad ofrece un buen ejemplo del uso de EPT para "Split-TLB" es [MoRE][7] de Jacob Torrey/AIS.

El proyecto más cercano que realmente ofrece un hipervisor centrado en Windows, moderno y soportado es [HyperPlatform][5], y recomendamos encarecidamente su uso como punto de partida para un desarrollo de hipervisores de tipo investigación más ampliamente utilizable. Sin embargo, al intentar crear una "plataforma" genérica que sea más ampliamente robusta, HyperPlatform también adolece de cierta hinchazón, lo que dificulta entender cuáles son realmente las necesidades básicas de un hipervisor, y cómo inicializar uno. En una vena similar, y mostrando un amor igual por STL/C++, pero también incluyendo un cargador ELF y soporte UEFI/Linux junto con pruebas unitarias y aún más robustez está [Bareflank][8], también de AIS. Más allá de eso, probablemente estés entrando en la complejidad de nivel de Xen.

El objetivo expreso de este proyecto, como se indicó anteriormente, era minimizar el código de cualquier manera posible, sin causar efectos secundarios negativos, y centrándose en las necesidades de 'bare-metal'. Esto incluye:

  • Minimizar el uso de código ensamblador. Si no fuera por la falta de un intrínseco __lgdt, y un workaround para el comportamiento de una API de Windows, solo las primeras 4 instrucciones del punto de entrada del hipervisor requerirían ensamblador. Tal como está, el proyecto tiene un total de 10 instrucciones, repartidas en 3 funciones. Esto es un alejamiento masivo de otros proyectos de hipervisores, que a menudo tienen múltiples cientos de líneas de código ensamblador. Se utilizan una variedad de trucos específicos del SO y atajos del compilador para lograr este resultado.
  • Reducir las comprobaciones de errores que es poco probable que ocurran. Dado un conjunto de datos de entrada configurado correctamente y de confianza, instrucciones como vmx_vmwrite y vmx_vmread nunca deberían fallar, por ejemplo.
  • Eliminar el soporte para x86, que complica las cosas y causa un manejo especial en torno a campos de 64 bits.
  • Reducir expresamente todas las posibles VM-Exits solo al mínimo definido arquitectónicamente por Intel (CPUID, INVD, VMX Instructions y XSETBV). Esto se hace a propósito para mantener el hipervisor lo más pequeño posible, así como el código de inicialización.
  • Sin soporte para VMCALL. Muchos hipervisores usan VMCALL como una forma de salir del hipervisor, lo que requiere programación en ensamblador (no hay intrínseco) y manejo adicional de salidas. SimpleVisor usa una trampa CPUID en su lugar.
  • Confiar en funciones del SO poco conocidas para simplificar el desarrollo del hipervisor, como los Generic DPCs y los contextos de hibernación en Windows, o el protocolo PI MP en UEFI.
  • Soportar EPT/VPID de una manera muy simple, para demostrar una base sólida de la implementación más simple posible de la característica.
  • Portabilidad y aislamiento de rutinas específicas del SO.

Otro objetivo implícito era soportar lo más reciente en características de hardware, ya que incluso [Bochs][6] no siempre tiene las instrucciones y/o definiciones VMX de Intel más recientes. Estas se encuentran a menudo en archivos de cabecera como "vmcs.h" y "vmx.h" que varios proyectos tienen en varios niveles de definición. Por ejemplo, Xen master tiene algunas razones de VM Exit no publicadas, pero no ciertas publicadas, que Bochs sí tiene, ¡aunque no tiene las no publicadas! Un ejemplo de ello es el uso de entradas EPT de 1GB, que por ejemplo VMWare no virtualiza correctamente.

Descargar herramienta