1

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

这是适用于 32 位 VMWare 的代码

bool IsInsideVMWare(void) {

布尔 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(过滤器(GetExceptionCode()))

{ rc = 假;}

返回rc;}

4

2 回答 2

-1

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

于 2011-02-17T05:46:59.580 回答
-1

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

于 2010-07-30T11:44:22.127 回答