Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécution dans une VM

3 réponses
Avatar
Didier
Bonjour,

Une piste SVP : j'ai besoin de savoir si l'application que je développe (en
C++), et qui tourne sous Windows XP/VISTA et + tard Seven, est en train de
s'exécuter dans une Machine Virtuelle ?

J'ai déjà trouvé une solution simple pour VMware avec la présence des
périphériques virtuels.

Mais je cherche une solution générique. Est ce que par exemple, avec la mise
en place graduelle des hyperviseurs, quelques API spécifiques permettent de
savoir dans quel noyau windows, émulé ou non, se trouve le processus ?

Merci
Didier

3 réponses

Avatar
Christian ASTOR
On 27 jan, 10:23, "Didier" wrote:
Bonjour,

Une piste SVP : j'ai besoin de savoir si l'application que je développe (en
C++), et qui tourne sous Windows XP/VISTA et + tard Seven, est en train d e
s'exécuter dans une Machine Virtuelle ?

J'ai déjà trouvé une solution simple pour VMware avec la présence des
périphériques virtuels.

Mais je cherche une solution générique. Est ce que par exemple, avec la mise
en place graduelle des hyperviseurs, quelques API spécifiques permetten t de
savoir dans quel noyau windows, émulé ou non, se trouve le processus ?



Il y a éventuellement la méthode avec l'instruction STR =>
(non testé dans VM)

#include<stdio.h>
int main()
{
unsigned char uMem[4] = {0};
__asm str uMem;
if ((uMem[0] == 0x00) && (uMem[1] == 0x40))
printf("Dans Virtual Machinen");
else
printf("Hors Virtual Machinen");
return 0;
}
Avatar
Didier
> "Christian ASTOR" a écrit dans le message
de news:




Il y a éventuellement la méthode avec l'instruction STR =>
(non testé dans VM)

#include<stdio.h>
int main()
{
unsigned char uMem[4] = {0};
__asm str uMem;
if ((uMem[0] == 0x00) && (uMem[1] == 0x40))
printf("Dans Virtual Machinen");
else
printf("Hors Virtual Machinen");
return 0;
}




Merci beaucoup, ça marche....

Je ne comprends pas trop comment et pourquoi la valeur du Task Register peut
changer selon l'environnement VM ou pas VM, je ne suis pas suffisamment calé
en assembleur x86....

Question subsidiaire optionnelle : Est ce qu'on peut considérer que cette
méthode est fiable ?
Avatar
Christian ASTOR
On 27 jan, 15:19, "Didier" wrote:

Question subsidiaire optionnelle : Est ce qu'on peut considérer que cet te
méthode est fiable ?- Masquer le texte des messages précédents -



Sans doute pas à 100%, selon le type de VM.
Il y a d'autres méthodes :
http://flierlu.blogspot.com/2008/04/virtualization-detection.html