Универсальные способы детектирования вирт. машин

Тема в разделе "WASM.BEGINNERS", создана пользователем _nic, 14 фев 2012.

  1. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    После долгого гугления самое удовлетворительное что я нашол,это - "VBOX HARDDRIVE,QEMU HARDDISK,VMWARE VIRTUAL IDE HARD DRIVE,VIRTUAL HD"
    В итоге ничего кроме
    Код (Text):
    1. bool VmDetect()
    2. {
    3.     //char ids[]="VBOX HARDDRIVE,QEMU HARDDISK,VMWARE VIRTUAL IDE HARD DRIVE,VIRTUAL HD";
    4.     char vbox[]="VBOX";
    5.     char qemu[]="QEMU";
    6.     char vmw[]="VMWARE";
    7.     char unkn[]="VIRTUAL HD";
    8.     GUID h=GUID_DEVCLASS_DISKDRIVE;
    9.     DWORD rg,rsz;
    10.     char *buf=(char*)malloc(4096);
    11.     SP_DEVINFO_DATA devinfo;
    12.     devinfo.cbSize=sizeof(SP_DEVINFO_DATA);
    13.     HDEVINFO devs=SetupDiGetClassDevs(&h,NULL,NULL,DIGCF_PRESENT);
    14.     SetupDiEnumDeviceInfo(devs,0,&devinfo);
    15.     SetupDiGetDeviceRegistryPropertyA(devs,&devinfo,SPDRP_FRIENDLYNAME,&rg,(BYTE*)buf,4096,&rsz);
    16.     //MessageBoxA(0,buf,"",MB_OK);
    17.     if(strstr(buf,vbox)!=NULL ||
    18.         strstr(buf,qemu)!=NULL ||
    19.         strstr(buf,vmw)!=NULL || strstr(buf,unkn)!=NULL)
    20.     {
    21.         free(buf);
    22.         return true;
    23.     }
    24.     else
    25.     {
    26.         free(buf);
    27.         return false;
    28.     }
    29. }
    Сообразить не вышло.Вроде не слишком универсально (((
    Теперь ломаю голову - должен ли биос виртуалки всегда отличаться от биоса реального железа,и причем в одном и том же месте.Кто что думает по этому поводу?
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _nic
    ща точно не помню, у рутковской какой-то прикольный способ был..
     
  3. Psionic

    Psionic Member

    Публикаций:
    0
    Регистрация:
    25 сен 2008
    Сообщения:
    156
    ИМХО, помойму проще запросить вендор биоса, у виртульных машин я не в стречал настоящих производителей прошивок.
     
  4. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    Сие реликт и уже не актуально. Вендоры в камни запилили это, посему хардварная эмуляция и её нет смысла детектить.
     
  5. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    Эмуляция чего?Хостового биоса ???
     
  6. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    _nic
    Эмуляция всего. На всяких варях, вайнах и прочих архитектурах ваш код с детектором работать не будет. Следовательно он не портабельный, а значит никому не нужен. Я например юзаю софт на варе, если он не работает, то я беру другой. Если малварку пишите, то также смысла нет детектить. Он может быть только для триала, но это конечно не задача.
     
  7. Satsura

    Satsura S4(uR4 __r00tw0rm__

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    374
    Адрес:
    Узбекистон, бляать!!11 :D
    Причем тут вайн? Вайн не эмулятор так даже акроним гласит .: WINE - WINE NOT EMULATOR.
     
  8. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    Satsura
    Софт или железо, которое что то эмулирует завётся эмулятором. Например дос на нт это эмуляция, одновременно хардварная(V8086) и софтверная(NTVDM).
     
  9. Satsura

    Satsura S4(uR4 __r00tw0rm__

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    374
    Адрес:
    Узбекистон, бляать!!11 :D
    Ну тогда не полноценный эмуль, хотя я никогда его таковым не считал. Это всего лишь прослойка win вызовов над ядром никсов (самопальные хаки с ndis и ntoskrnl не в счет). А есче для просветвления могу посоветовать почитать в вики на тему вайна.
     
  10. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.186
    Адрес:
    подполье
    /me прочитал на вики и осветлилса
     
  11. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    А еще можно "тиражировать" софт с привязкой к железу,при помощи виртуалок.В общем присекать нада установку на виртуалки.
     
  12. SEC70R_VA

    SEC70R_VA New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2011
    Сообщения:
    78
    _nic
    А вирт.машины аппаратные инструкций виртуализации тоже эмулируют?
     
  13. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Есть вроде способ с RDTSC
     
  14. f2065

    f2065 Eugene

    Публикаций:
    0
    Регистрация:
    18 авг 2010
    Сообщения:
    24
    Адрес:
    Russia,Moscow
    Ну например у vmware есть различия в CPUID.
    mov eax, 1
    cpuid

    ebx = 03040800 = на хосте 4 ядерник реально;
    ebx = 00000800 = на vmware… CPU count = 0 ?!
    Есть у меня небольшая база по CPUID-дампам… в ebx либо полный ноль (например у атлонов сокет-А), либо если в младших 16 битах не ноль - то поле CPU count реальное (где 1 проц, где 2, и т.п., но не 0).

    ecx = 00802009 = на хосте
    ecx = 80802001 = на vmware… 31бит в описаниях значится как reserved
    Реальный процов с этим битов не видел… Но это вероятно только у vmware, может какой-то magic-бит для её самой.
    В прочих регистрах тоже есть различия, но не столь явные. Например под vmware пропадает бит FXSR и т.п.

    надо на других виртуалках тоже всё это проверить.

    Детект по имени производителя HDD который в первом посте описан кстати может провалится, у vmware можно ведь физический диск в виртуалку отдать… Понятно что так мало кто делает, но тем не менее…

    wine детектить можно через бэкдоры в его дллках.
    LoadLibrary 'kernel32.dll'
    GetProcAddress 'wine_get_unix_file_name'
     
  15. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    f2065
    Интересно. Поделишся с народом? )