Обнаружение виртуализации - PullRequest
1 голос
/ 27 июля 2010

У меня есть встроенная функция ассемблера, определяет, работает программа на виртуальной машине или нет.Но в 64-битной встроенной сборке больше нет, здесь встроенные функции x64.Есть ли другой способ его обнаружения?

Вот этот код работает для 32-битного VMWare

bool IsInsideVMWare (void) {

bool rc = true;

__ try

{

__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 = false;}

return rc;}

Ответы [ 2 ]

0 голосов
/ 17 февраля 2011

Это вопрос к форуму MASM http://www.masm32.com/board/index.php? вы слишком глубоко погружаетесь в StackOverflow ...

0 голосов
/ 30 июля 2010

Благодаря респонденту я нашел способ создания функции с использованием языка ассемблера и отделил эти функции как файл .asm и добавил его в свое решение.Вот проблема :) Я не знаю, как правильно преобразовать этот код для компиляции с masm (ml.exe) в VS.

...