首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows 8任务管理器虚拟化选项

windows 8任务管理器虚拟化选项
EN

Stack Overflow用户
提问于 2013-10-25 19:40:11
回答 2查看 1.1K关注 0票数 0

我正在尝试找到一种编程方式来检测我的程序是否在虚拟机上运行,据我所知,parallels没有通用的方法来做到这一点。

Windows 8任务管理器性能选项卡显示“虚拟化”选项,这是什么意思?当我在虚拟机中运行windows8时,它会变成虚拟处理器和虚拟机:是的,那么windows8是如何检测到它在虚拟机中运行的呢?有没有可能通过编程获得这些信息?我在parallels和vm软件上都试过了,两者都工作得很好。

EN

回答 2

Stack Overflow用户

发布于 2013-10-25 22:10:21

你应该看一看Joanna Rutkowska写的这篇有趣的文章Red Pill... or how to detect VMM using (almost) one CPU instruction,它曾经是here,但现在已经死了,只能用waybackmachine hereSteven McElweeVirtualization: Red Pill or Blue?查看,它也曾经是here,但现在只能查看here

代码如下:

代码语言:javascript
复制
int swallow_redpill()
{
    unsigned char m[2+4], rpill[] = "\x0f\x01\x0d\x00\x00\x00\x00\xc3";
    *((unsigned*)&rpill[3]) = (unsigned)m;
    ((void(*)())&rpill)();
    return (m[5]>0xd0) ? 1 : 0;
}

如果在虚拟机中运行,则应返回1;如果未在虚拟机中运行,则返回0。

编辑:它可能会返回假阳性-在现代的tests和它的apparently better to combine几个cpus在一起,以确保结果是真实的。

票数 1
EN

Stack Overflow用户

发布于 2013-10-26 04:12:51

在VMware上,您可以检查CD驱动器供应商-应该是"VMware“或"VMware,Inc.”。或者像这样的东西。

我不知道VMware工作站,但在ESXi上,你的MAC地址一般是以"00:50:56“开头的。您也可以利用这一点。

看看virt-what吧。也许你可以把它移植到Windows上。

也许How to detect install is running on a VM?能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19588838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档