2010-07-27 4 views
1

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

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

BOOL IsInsideVMWare (аннулируются) {

BOOL гс = истина;

__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 (фильтр (GetExceptionCode()))

{ гс = ложь; }

возвращение rc; }

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^