【问题标题】:Detecting Virtualization检测虚拟化
【发布时间】:2010-07-27 08:27:35
【问题描述】:

我有一个内联汇编函数检测程序是否在虚拟机上运行。但是在 64 位内联汇编中不再可用,现在这里是 x64 内在函数。有没有其他检测方法?

这是适用于 32 位 VMWare 的代码

bool IsInsideVMWare(void) {

bool rc = true;

__尝试

{

__asm
{

  push   edx
  push   ecx
  push   ebx

  mov    eax, 'VMXh'
  mov    ebx, 0 // any value but not the MAGIC VALUE
  mov    ecx, 10 // get VMWare version
  mov    edx, 'VX' // port number

  in     eax, dx // read port
                 // on return EAX returns the VERSION
  cmp    ebx, 'VMXh' // is it a reply from VMWare?
  setz   [rc] // set return value

  pop    ebx
  pop    ecx
  pop    edx
}

} __except(filter(GetExceptionCode()))

{ rc = 假; }

返回 rc; }

【问题讨论】:

    标签: 64-bit vmware virtual-machine detect


    【解决方案1】:

    感谢响应者,我找到了一种使用汇编语言创建函数并将这些函数分离为 .asm 文件并将其添加到我的解决方案的方法。这里是问题:) 我不知道如何正确转换这些代码以在 VS 中使用 masm (ml.exe) 进行编译。

    【讨论】:

      【解决方案2】:

      这是 MASM 论坛的问题 http://www.masm32.com/board/index.php? 你对 StackOverflow 的潜水有点太深了......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        相关资源
        最近更新 更多