Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
SimpleVisor — Hyperviseur Intel VT-x minimal pour Windows et UEFI qui virtualise un hôte actif à des fins d'introspection, prenant en charge l'hyperjacking dynamique, l'unhyperjacking, l'EPT et le VPID. | Kitploit
Outils/GitHubGitHub/ionescu007/simplevisor
Rétro-ingénierieVirtualisation de SécuritéAnalyse de MalwareSécurité MatérielleAnalyse de BinairesArticles et RechercheApprentissage et Éducation
GitHubionescu007/simplevisor

SimpleVisor

Hyperviseur Intel VT-x minimal pour Windows et UEFI qui virtualise un hôte actif à des fins d'introspection, prenant en charge l'hyperjacking dynamique, l'unhyperjacking, l'EPT et le VPID.

Voir le dépôt
2.0k286il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

SimpleVisor

SimpleVisor est un hyperviseur simple et portable, spécifique à Intel x64/EM64T VT-x, avec deux objectifs précis : utiliser le moins de code assembleur possible (10 lignes) et disposer de la plus petite quantité de code lié à VMX pour prendre en charge le hyperjacking et le unhyperjacking dynamiques (c'est-à-dire virtualiser l'état de l'hôte depuis l'intérieur de l'hôte) tout en prenant également en charge des fonctionnalités avancées telles que EPT et VPID. Il fonctionne actuellement à la fois sous Windows et dans des environnements UEFI.

Introduction

Avez-vous toujours été curieux de savoir comment construire un hyperviseur ? La documentation d'Intel (les nombreuses centaines de pages) vous a-t-elle découragé ? Les exemples que vous avez trouvés en ligne n'ont-ils fait que rendre les choses plus confuses, ou ont-ils nécessité des semaines de lecture à travers des dizaines de milliers de lignes de code ? Si oui, SimpleVisor pourrait être le projet qu'il vous faut.

Sans compter les commentaires exhaustifs qui expliquent chaque ligne de code, ainsi que les idiosyncrasies spécifiques à Windows ou à Intel, SimpleVisor totalise environ 500 lignes de code C et 10 lignes de code assembleur x64, tout en étant capable de fonctionner sur toutes les versions récentes de Windows 64 bits, et en prenant en charge le chargement/déchargement dynamique à l'exécution.

De plus, SimpleVisor utilise une bibliothèque OS légère pour les fonctionnalités spécifiques à Windows, séparant les parties de l'hyperviseur des parties spécifiques à Windows. Tirant parti de cette conception portable, une version UEFI de SimpleVisor est également désormais disponible. Notez toutefois qu'elle ne dispose pas d'un support robuste pour les environnements MP en raison de problèmes avec UEFI, et que le chargement d'un système d'exploitation finira par provoquer un crash, car l'OS atteindra des chemins de code non implémentés en raison de sa reconfiguration des ressources du processeur. Virtualiser l'intégralité du démarrage du système d'exploitation depuis UEFI dépasse le cadre du projet.

SimpleVisor peut être compilé avec Visual Studio 2015 Update 3, et bien que les compilateurs plus anciens/récents n'aient pas été testés et ne soient pas pris en charge, il est probable qu'ils puissent également compiler le projet. Il est toutefois important de conserver les différents paramètres du compilateur et de l'éditeur de liens tels que vous les voyez.

SimpleVisor a actuellement été testé avec succès sur les plateformes suivantes :

  • Windows 8.1 sur un processeur Haswell (PC de bureau personnalisé)
  • Windows 10 Redstone 1 sur un processeur Sandy Bridge (ordinateur portable Samsung 930)
  • Windows 10 Threshold 2/Redstone 1 sur un processeur Skylake (tablette Surface Pro 4)
  • Windows 10 Threshold 2 sur un processeur Skylake (Dell Inspiron 11-3153 avec SGX)
  • VMWare Workstation 11, mais sans EPT (VMWare ne prend pas en charge les EPT de 1 Go)
  • UEFI 2.4 sur une carte mère Asus Maximus VII Extreme (PC de bureau personnalisé)

À l'heure actuelle, il n'a pas été testé sur Bochs, mais il n'y a aucune raison pour que SimpleVisor ne puisse pas fonctionner dans un tel environnement également. Cependant, si votre machine fonctionne déjà sous un hyperviseur tel que Hyper-V ou Xen, SimpleVisor ne se chargera pas.

Gardez à l'esprit que les versions x86 de Windows ne sont expressément pas prises en charge, tout comme les processeurs antérieurs à la microarchitecture Nehalem, ni Windows 7. La prise en charge de ces deux derniers est facile à ajouter et existe dans certaines forks.

Motivation

Trop de projets d'hyperviseurs sont soit extrêmement compliqués ([Xen][1], KVM, VirtualBox) et/ou à code source fermé (VMware, Hyper-V), ainsi que fortement orientés vers le développement ou les systèmes basés sur Linux. De plus, la plupart (à l'exception de Hyper-V) sont expressément conçus dans le but de permettre l'exécution de machines virtuelles, et non la virtualisation d'un système en cours d'exécution, afin d'effectuer de l'introspection ou d'autres tâches liées à la sécurité sur celui-ci.

Quelques projets se démarquent cependant, comme le [Blue Pill][2] original de Joanna, ou des projets tels que [VirtDbg][3] et [HyperDbg][4]. Malheureusement, la plupart de ceux-ci sont devenus assez anciens maintenant, et certains ne fonctionnent que sur des processeurs x86, et ne prennent pas en charge les systèmes d'exploitation plus récents tels que Windows 10. Un autre exemple assez simple, similaire à Blue Pill à certains égards, mais offrant en réalité un bon exemple d'utilisation d'EPT pour le « Split-TLB » est [MoRE][7] de Jacob Torrey/AIS.

Le projet le plus proche qui offre réellement un hyperviseur centré sur Windows, moderne et pris en charge est [HyperPlatform][5], et nous recommandons fortement son utilisation comme point de départ pour un développement d'hyperviseur de type recherche plus largement utilisable. Cependant, en tentant de créer une « plateforme » générique plus largement robuste, HyperPlatform souffre également d'un peu de gonflement, ce qui rend plus difficile de comprendre quels sont véritablement les besoins de base d'un hyperviseur, et comment en initialiser un. Dans une veine similaire, et montrant un amour égal pour STL/C++, mais incluant également un chargeur ELF et un support UEFI/Linux en plus de tests unitaires et d'une robustesse encore plus grande, on trouve [Bareflank][8], également d'AIS. Au-delà de cela, vous entrez probablement dans la complexité de niveau Xen.

L'objectif exprès de ce projet, comme indiqué ci-dessus, était de minimiser le code de toutes les manières possibles, sans causer d'effets secondaires négatifs, et en se concentrant sur les besoins « bare-metal ». Cela inclut :

  • Minimiser l'utilisation de code assembleur. Sans l'absence d'un intrinsèque __lgdt, et une solution de contournement pour le comportement d'une API Windows, seules les 4 premières instructions du point d'entrée de l'hyperviseur nécessiteraient de l'assembleur. En l'état, le projet compte un total de 10 instructions, réparties dans 3 fonctions. C'est un écart massif par rapport aux autres projets d'hyperviseurs, qui comportent souvent plusieurs centaines de lignes de code assembleur. Une variété d'astuces spécifiques à l'OS et de raccourcis du compilateur sont utilisés pour atteindre ce résultat.
  • Réduire les vérifications d'erreurs peu susceptibles de se produire. Étant donné un ensemble de données d'entrée correctement configuré et fiable, des instructions telles que vmx_vmwrite et vmx_vmread ne devraient jamais échouer, par exemple.
  • Supprimer la prise en charge de x86, ce qui complique les choses et entraîne une gestion spéciale autour des champs 64 bits.
  • Réduire expressément toutes les VM-Exits possibles au minimum défini architecturalement par Intel (CPUID, INVD, VMX Instructions et XSETBV). Cela est fait délibérément pour garder l'hyperviseur aussi petit que possible, ainsi que le code d'initialisation.
  • Aucune prise en charge de VMCALL. De nombreux hyperviseurs utilisent VMCALL comme moyen de sortir de l'hyperviseur, ce qui nécessite de la programmation en assembleur (il n'existe pas d'intrinsèque) et une gestion supplémentaire des sorties. SimpleVisor utilise à la place un piège CPUID.
  • S'appuyer sur des fonctions OS peu connues pour simplifier le développement de l'hyperviseur, telles que les Generic DPCs et les contextes d'hibernation sous Windows, ou le protocole PI MP sous UEFI.
  • Prendre en charge EPT/VPID de manière très simple, afin de démontrer une base solide de l'implémentation la plus simple possible de cette fonctionnalité.
  • Portabilité et isolation des routines spécifiques à l'OS.
Télécharger l’outil