[Детект Parallels Workstation]. Много написано было про VmWare, а про детект этой вм ничего не видела, а так как юзаю не варю, а ее, то стало интересно. Нашла по крайней мере 2 способа ее сдетектить ОС: Windows XP (SP2,SP3) 1)Виртуальный cdrom и hdd В системе, установленной на Parallels присутствуют символические ссылки с именами ~(у меня) IDE#CdRomPRL_Virtual_CD-ROM______________________R102____#4&2eac1 2a2&0&0.1.0#{53f56308-b6bf-11d0-94f2-00a0c91efb8b} IDE#DiskVirtual__HDD_[0]________________________FWR10003#31303134 39353632333538353739333933323438#{53f56307-b6bf-11d0-94f2-00a0c91efb8b} на реальном компе (также только частный случай) IDE#CdRomATAPI_DVD_A__DH20A4P____________________9P54____#5&3b5e6 249&0&0.1.0#{1186654d-47b8-48b9-beb9-7df113ae3c67} IDE#DiskHitachi_HDS721616PLA380_________________P22OABEA#5&1bbc6d 1b&0&0.0.0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b} (см скрины) http://img530.imageshack.us/my.php?image=parllsuv1.jpg как видно, юзала Winobj. понятное дело, что часть CdRomPRL_ и DiskVirtual__HDD_ постоянна на остальное закладываться не стоит (я проверку на эту часть строки делала, но в принципе можно проверять CdRomPRL_Virtual_CD-ROM). Здесь вывод: идем по дереву объектов (используя NtOpenDirectoryObject и NtQueryDirectoryObject) и ищем SymbolicLink. Потом парсим строку и если находим подстроку DiskVirtual__HDD_ или CdRomPRL_, то мы под Paralles. Результат работы моей проги под эмулятором детектед http://img266.imageshack.us/my.php?image=dethd2.jpg 2. Через реестр в VideoBiosVersion права Parallels(R) Ключ: HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System Параметр: "VideoBiosVersion" Значение(у меня): 2Parallels(R) VGA-Compatible BIOS Version 1.05 Id: vgabios.c,v 1.61 2005/05/24 16:50:50 vruppert Exp Думаю, в следующем коде все понятно Code: BOOL DetectBios(void){ BOOL rslt = FALSE; HKEY hkey; wchar_t lpData[500]; if(!RegOpenKey(HKEY_LOCAL_MACHINE,L"HARDWARE\\Description\\System",&hkey)) { DWORD Type = REG_MULTI_SZ,lpcbData = 500; if(!RegQueryValueEx(hkey,L"VideoBiosVersion",0,&Type,(LPBYTE)&lpData,&lpcbData)) { wprintf(L"Value name = %s\n",lpData); //ищем подстроку Parallels(R) в строке со значением if(checkLink(lpData,L"Parallels(R)",12)){ wprintf(L"Registry value detected\n"); } } else wprintf(L"Error in RegQueryValueEx\n"); RegCloseKey(hkey); } else wprintf(L"Cannot open key\n"); return rslt; } program download http://rapidshare.com/files/168272284/ParallelsDetect.rar.html
слишком явный метод, строки палятся вот если бы какие-либо порты задействовать или еще что-нибудь экзотическое
несуть, порты или строки, сигну всеравно повесят на кодес. на собственном примере поведаю, был кодес, невинный посути, добавил детек сандбоксов и варей тому подобных, 4ерез недели 2 смотрю палится вебером, каспером, авастом. эмпири4еским путем было выяснено 4то сигны детекта были навешаны на детект с именем какого-то о4ередного "Agent.XXX" и им пофиг 4то мой код "нормальный" =\ с таким подходом, скоро каждого медика будут упрятывать в тюрьму, ведь у них в арсенале есть шприцы, а шприцы потенциально могут содержать в себе капли крови-ви4 позитивных лодей. так4то лу4ше упрятать пока никого не заразили)
wtf? "слишком явный метод, строки палятся"- кто юзает строки? Возьми свой полином и захешируй. Ничего палиться не будет (не вечно конечно, но достаточно долго). А если еще криптор-пакер или хотя бы простенький полиморф - пол-года я думаю актуальность будет обеспечена.
простенький полиморф, пол года - да что вы батенька по сабжу, есть более красивые методы детекта, работающие под гостем.