J'ai besoin d'un VM Hypervisor qui ne fuit pas à l'invité que c'est dans une machine virtuelle. L'invité devrait croire que c'est sur une machine physique complète.
Apparemment VirtualBox échoue à cela , le long de avec PC virtuel et VMware . Avant de plonger dans des monstres comme Xen, y a-t-il des hyperviosr qui peuvent faire cela?
xen , par définition, est virtualisé. Il suppose un code d'invité spécifique pour le noyau du système d'exploitation. Il n'essaie pas de cacher la présence de la virtualisation, cela la publie clairement. Ce n'est pas le VM vous recherchez.
Un hyperperviseur entièrement invisible est théoriquement réalisable, mais pas bon marché. Le problème est avec le timing. Un hyperviseur fonctionne en pouvant intercepter certaines "opérations sensibles", notamment liées à l'accès à la mémoire et modifier leur comportement. L'altération est effectuée avec des logiciels, qui peuvent rester efficacement masqués en bloquant certains accès à la mémoire, émulant une absence de RAM au lieu. Cependant, une telle interception prend un peu de temps: la manipulation d'une mémoire interceptée L'accès utilisera quelques cycles d'horloge supplémentaires sur ce qu'un appel non intercepté sur "Hardware RAW". Comme le code peut accéder à une horloge avec précision de cycle d'horloge (non précision) via le rdtsc
OPCODE, l'interception peut être détectée. Sauf interception de l'opcode rdtsc
_ opcode, pour le rendre "plus lent".
En effet, notre hyperperviseur invisible ne peut rester invisible que par "ralentissement" de la machine virtuelle, de sorte qu'il obtient suffisamment de "cycles supplémentaires" cachés pour ses interceptions. Donc, le système d'exploitation invité doit:
En tant que cas extrême, envisagez émulateurs . Les émulateurs pour les systèmes plus anciens et les systèmes d'ère des années 1980 peuvent avoir une précision du cycle d'horloge, c'est-à-dire que l'émulation est parfaitement parfaite que le code exécuté n'est pas capable de détecter qu'il ne s'exécute pas sur le matériel authentique. Mais ils ne peuvent rien faire que en jetant beaucoup de pouvoir informatique; Les frais généraux sont énormes (nous parlons d'une perte de puissance informatique de 10x ou 20x ou 20 fois). De plus, l'émission d'effets de synchronisation pour un Atari ST est une tâche relativement simple car il n'y a pas de cache dans une telle machine.
La la pilule bleue est une démonstration d'un tel soi-disant "hyperviseur invisible", et il a généré un débat chaud (comme on dit "avec plus de chaleur que la lumière"), principalement parce qu'il n'y a pas d'égalité Entre compétences à la programmation du système de montage et capacité à expliquer les choses à d'autres personnes à la pédagogie et à la sérénité. Néanmoins, la "pilule bleue" devrait être détectable, bien que la recherche de code réel qui le fait, publié sur le Web, pourrait être difficile.
Un point intéressant soulevé par le développeur de pilules bleue est que les hyperviseurs sont censés devenir grand public et "normal", de sorte que la présence d'un hyperviseur ne soit pas, à long terme , indique que la virtualisation est survenue. Il est concevable, et même probable que les futurs systèmes d'exploitation seront toujours toujours activer un hyperviseur lors de l'heure de démarrage, détectant ainsi que la virtualisation est en place n'indiquerait plus Possibilité de jeu stimulant. Nous n'avons pas encore atteint ce point, cependant.
Ce n'est pas faisable à 100% en X86. Il y a quelques instructions qui ne sont pas virtualisables, donc si vous savez quoi vérifier, vous pouvez toujours déterminer si vous exécutez un métal virtualisé ou nu.
Voici quelques sources à lire sur: http://fr.wikipedia.org/wiki/popek_and_goldberg_virtualization_Requirements est le meilleur point de départ de ce sujet.
Un autre bon est http://www.usenix.org/events/sec2000/full_papers/robin/robin.pdf