Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
SimpleVisor — Hypervisor Intel VT-x minimale per Windows e UEFI che virtualizza un host live per l'introspezione, supportando hyperjacking dinamico, unhyperjacking, EPT e VPID. | Kitploit
Strumenti/GitHubGitHub/ionescu007/simplevisor
Reverse EngineeringVirtualizzazione per la SicurezzaAnalisi MalwareSicurezza HardwareAnalisi di BinariPaper e RicercaApprendimento e Formazione
GitHubionescu007/simplevisor

SimpleVisor

Hypervisor Intel VT-x minimale per Windows e UEFI che virtualizza un host live per l'introspezione, supportando hyperjacking dinamico, unhyperjacking, EPT e VPID.

Vedi Repository
2.0k2862 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

SimpleVisor

SimpleVisor è un hypervisor semplice e portabile, specifico per Intel x64/EM64T VT-x, con due obiettivi precisi: utilizzare la minor quantità possibile di codice assembly (10 righe) e avere la minor quantità possibile di codice relativo a VMX per supportare l'hyperjacking e l'unhyperjacking dinamico (ovvero, virtualizzare lo stato dell'host dall'interno dell'host) supportando al contempo funzionalità avanzate come EPT e VPID. Attualmente funziona sia su Windows che in ambienti UEFI.

Introduzione

Sei sempre stato curioso di sapere come costruire un hypervisor? La documentazione di Intel (le molte centinaia di pagine) ti ha scoraggiato? Gli esempi che hai trovato online ti hanno solo confuso ulteriormente, o hanno richiesto settimane di lettura attraverso decine di migliaia di righe di codice? Se è così, SimpleVisor potrebbe essere il progetto che fa per te.

Senza contare gli esaustivi commenti che spiegano ogni singola riga di codice, e le specifiche idiosincrasie legate a Windows o a Intel, SimpleVisor conta circa 500 righe di codice C e 10 righe di codice assembly x64, il tutto con la capacità di funzionare su ogni versione recente di Windows a 64 bit, e supportando il caricamento/scaricamento dinamico a runtime.

Inoltre, SimpleVisor utilizza una libreria OS leggera per le funzionalità specifiche di Windows, separando le parti relative all'hypervisor da quelle specifiche di Windows. Sfruttando questo design portabile, è ora disponibile anche una versione UEFI di SimpleVisor. Nota tuttavia che non ha un supporto robusto per ambienti MP a causa di problemi con UEFI, e che il caricamento di un sistema operativo finirà per causare un crash poiché il SO incontrerà percorsi di codice non implementati a causa della sua riconfigurazione delle risorse del processore. Virtualizzare l'intero avvio del sistema operativo da UEFI è al di fuori dello scopo del progetto.

SimpleVisor può essere compilato con Visual Studio 2015 Update 3, e sebbene compilatori più vecchi/nuovi non siano stati testati e non siano supportati, è probabile che possano compilare il progetto altrettanto. È importante, tuttavia, mantenere le varie impostazioni del compilatore e del linker come le vedi.

SimpleVisor è stato attualmente testato con successo sulle seguenti piattaforme:

  • Windows 8.1 su un processore Haswell (desktop personalizzato)
  • Windows 10 Redstone 1 su un processore Sandy Bridge (laptop Samsung 930)
  • Windows 10 Threshold 2/Redstone 1 su un processore Skylake (tablet Surface Pro 4)
  • Windows 10 Threshold 2 su un processore Skylake (Dell Inspiron 11-3153 con SGX)
  • VMWare Workstation 11, ma senza EPT (VMWare non supporta EPT da 1GB)
  • UEFI 2.4 su una scheda madre Asus Maximus VII Extreme (desktop personalizzato)

Al momento, non è stato testato su Bochs, ma non c'è motivo per cui SimpleVisor non possa funzionare anche in un tale ambiente. Tuttavia, se la tua macchina è già in esecuzione sotto un hypervisor come Hyper-V o Xen, SimpleVisor non si caricherà.

Tieni presente che le versioni x86 di Windows non sono espressamente supportate, né lo sono i processori precedenti alla microarchitettura Nehalem, né Windows 7. Il supporto per questi ultimi due è facile da aggiungere ed esiste in alcuni fork.

Motivazione

Troppi progetti di hypervisor là fuori sono estremamente complicati ([Xen][1], KVM, VirtualBox) e/o closed-source (VMware, Hyper-V), oltre che fortemente orientati allo sviluppo o ai sistemi basati su Linux. Inoltre, la maggior parte di essi (a parte Hyper-V) è espressamente costruita allo scopo di consentire l'esecuzione di macchine virtuali, e non la virtualizzazione di un sistema vivo e in esecuzione, al fine di eseguire introspezione o altre attività legate alla sicurezza su di esso.

Alcuni progetti si distinguono tuttavia dalla massa, come il [Blue Pill][2] originale di Joanna, o progetti come [VirtDbg][3] e [HyperDbg][4]. Sfortunatamente, la maggior parte di questi è ormai piuttosto datata, e alcuni funzionano solo su processori x86, e non supportano sistemi operativi più recenti come Windows 10. Un altro esempio piuttosto semplice, simile a Blue Pill per alcuni aspetti, ma che in realtà fornisce un buon esempio di utilizzo di EPT per "Split-TLB" è [MoRE][7] di Jacob Torrey/AIS.

Il progetto più vicino che fornisce effettivamente un hypervisor incentrato su Windows, moderno e supportato è [HyperPlatform][5], e raccomandiamo vivamente il suo utilizzo come punto di partenza per uno sviluppo di hypervisor di tipo ricerca più ampiamente utilizzabile. Tuttavia, nel tentativo di creare una "piattaforma" generica più ampiamente robusta, HyperPlatform soffre anche di un po' di bloat, rendendo più difficile capire quali siano veramente le esigenze di base di un hypervisor, e come inizializzarne uno. In modo simile, e mostrando un uguale amore per STL/C++, ma includendo anche un loader ELF e il supporto UEFI/Linux insieme a unit test e ancora più robustezza, c'è [Bareflank][8], sempre di AIS. Oltre a ciò, probabilmente si entra nella complessità di livello Xen.

L'obiettivo espresso di questo progetto, come affermato sopra, era minimizzare il codice in ogni modo possibile, senza causare effetti collaterali negativi, e concentrandosi sulle esigenze "bare-metal". Questo include:

  • Minimizzare l'uso del codice assembly. Se non fosse per la mancanza di un intrinsic __lgdt, e per un workaround al comportamento di un'API di Windows, solo le prime 4 istruzioni del punto di ingresso dell'hypervisor richiederebbero assembly. Così com'è, il progetto ha un totale di 10 istruzioni, distribuite in 3 funzioni. Questa è una massiccia deviazione da altri progetti di hypervisor, che spesso hanno diverse centinaia di righe di codice assembly. Vengono utilizzati vari trucchi specifici del SO e scorciatoie del compilatore per ottenere questo risultato.
  • Ridurre i controlli per errori improbabili. Dato un insieme di dati di input configurato correttamente e fidato, istruzioni come vmx_vmwrite e vmx_vmread non dovrebbero mai fallire, per esempio.
  • Rimuovere il supporto per x86, che complica le cose e causa una gestione speciale attorno ai campi a 64 bit.
  • Ridurre espressamente tutti i possibili VM-Exit al solo minimo definito architetturalmente da Intel (CPUID, INVD, VMX Instructions e XSETBV). Questo è fatto intenzionalmente per mantenere l'hypervisor il più piccolo possibile, così come il codice di inizializzazione.
  • Nessun supporto per VMCALL. Molti hypervisor usano VMCALL come modo per uscire dall'hypervisor, il che richiede programmazione assembly (non esiste un intrinsic) e una gestione aggiuntiva delle uscite. SimpleVisor usa invece una trap CPUID.
  • Affidarsi a funzioni del SO poco conosciute per semplificare lo sviluppo dell'hypervisor, come i Generic DPC e i contesti di ibernazione su Windows, o il protocollo PI MP su UEFI.
  • Supportare EPT/VPID in modo molto semplice, per dimostrare una solida base della più semplice implementazione possibile della funzionalità.
  • Portabilità e isolamento delle routine specifiche del SO.

Un altro obiettivo implicito era supportare le più recenti funzionalità hardware, dato che persino [Bochs][6] non ha sempre le istruzioni e/o le definizioni Intel VMX più recenti. Queste si trovano spesso in file header come "vmcs.h" e "vmx.h" che vari progetti hanno a vari livelli di definizione. Per esempio, Xen master ha alcuni motivi di VM Exit non rilasciati, ma non certi rilasciati, che Bochs ha, sebbene non abbia quelli non rilasciati! Un esempio di ciò è l'uso di voci EPT da 1GB, che per esempio VMWare non virtualizza correttamente.

Infine, SimpleVisor è pensato per essere uno strumento educativo -- ha commenti esaustivi che spiegano tutta la logica dietro ogni riga di codice, e specifici suggerimenti e trucchi su Windows o Intel VMX che gli permettono di ottenere il risultato desiderato. Vari bug o comportamenti scarsamente documentati vengono esplicitamente segnalati.

Installazione su Windows

Scarica lo strumento