![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отличить виртуальный привод от реального? [D7, WinXP]
r@bbit © (2006-06-15 09:26:00)вот задался вопросом - такое вообще возможно? или штатными средствами винды никак не получится? и к слову - какая функция ядра добавляет виртуальный диск к списку дисков? ну как алкоголь делает. подскажите кто знает, заранее благодарен
r@bbit (2006-06-22 17:26:00) [1]ёлки блин - DeviceName. перепутал малость :)
tesseract (2006-06-22 09:10:00) [2]
> Нет. У виртуальных (любых) отсутствует DriverName :)
хм. Странно. Хотя я видел некоторые вещи с отсутсвующим.
r@bbit (2006-06-21 21:10:00) [3]Нет. У виртуальных (любых) отсутствует DriverName :)
tesseract (2006-06-21 16:30:00) [4]
> r@bbit (20.06.06 18:34) [23]
Просто внёс ID "виртуальщиков" в чёрный список?
Дмитрий Белькевич (2006-06-21 02:14:00) [5]Самое главное, что бы на реальные сидюки как на виртуальные не ругалась, т.к. это гораздо хуже. Я на месте юзера очень долго бы ругался на такую 'защиту'.
r@bbit (2006-06-20 18:34:00) [6]Агроменное СПАСИБО всем за советы, не бросившим меня в беде! Защита получилась, не старфорс конечно, но чтобы сломать придётся малость попыхтеть, и этого для институтских админов вполне достаточно.
>Игорь Шевченко
отдельно спасибо, работает, именно сканируя реестровые ключи... жаль что обращения к реестру отлавливаются куда проще, чем к портам, но пока сойдёт и так. проверял - защита успешно ругается на все доступные мне виртуальщики. что и требовалось :)
Belorus (2006-06-19 20:44:00) [7]Хехе. Вопрос на 10 баллов.
Как отличить виртуальный привод от реального.
Ты у создателей старфорс спроси. Они много лет бьются и на данный момент только FrontLine что-то делает. А родимый StarForce 3.x и тот ломается.
А товарищ захотел пару строчек кода чтобы привод отличить.
Молодец.
В орехи.
evvcom (2006-06-19 14:24:00) [8]> \Device\Ide\IdePort(n) - для реального привода
> \Device\Scsi\sojuscsi(n) - для виртуальника
Если реальный SCSI повесишь, наверняка разочаруешься в своих выводах. Ищи драйвера, тебе говорят.
Игорь Шевченко (2006-06-19 13:19:00) [9]Я бы обратил внимание на реестр :) Виртуальных CD-ROM у меня нет, так что направлений определеннее подсказать не могу. Список драйверов - он в реестре.
r@bbit (2006-06-19 12:33:00) [10]покопавшись? выяснил следующее:
1. QueryDosDevices с именем диска возвращает \Device\CdRom(n)
2. QueryDosDevices с именем виртуального SCSI (например SCSI1:) возвращает:
\Device\Ide\IdePort(n) - для реального привода
\Device\Scsi\sojuscsi(n) - для виртуальника
т.е. различие есть
вопрос возник такой - можно ли по имени из пункта 1 получить виртуальный SCSI порт, к которому это устройство подключено? какой функцией, если она есть конечно? в пункте 2 как я понял возвращается имя драйвера устройства, встречалось либо IdeChnDr(n) либо IdePort(n). Подскажите плз, чую что рядом с решением топчусь да всё никак
Игорь Шевченко (2006-06-16 10:46:00) [11]
> через утилиту objdir.exe. С ее помощью получаем список устройств
> и шины на которых они "висят".
Winobj.exe от SysInternals вроде показывает только список устройств, без шин. Сдается мне, что проще искать по списку аппаратных устройств реестре - HKLM\HARDWARE\DESCRIPTION
r@bbit (2006-06-16 09:13:00) [12]В принципе различия есть - судя по статейке из книги К.Касперски - например через утилиту objdir.exe. С ее помощью получаем список устройств и шины на которых они "висят". С реальными приводами всё нормально возвращается ...\Ide0 или Ide1, а вот виртуальники естественно никаких физических шин не имеют! Какой функцией можно узнать с какой именно шиной связано устройство и есть ли она вообще (шина у устройства)? От устройства имеем дескриптор. Или хотя бы получить имя драйвера с которым устройство связано... в общем сплошная головная боль. помогите кто может, плиз.
r@bbit (2006-06-16 07:58:00) [13]На реальный привод в буфер получил Device\CdRom0
на виртуальник такое Device\CdRom1
и что с этим делать не знаю... :(
r@bbit (2006-06-15 15:47:00) [14]>Игорь Шевченко
спасибо ! думаю всё получится :)
Игорь Шевченко (2006-06-15 15:27:00) [15]r@bbit (15.06.06 14:55) [12]
Спроси QueryDosDevice на букву сидюка
r@bbit (2006-06-15 14:58:00) [16]т.е. DeviceIoControl :)
r@bbit (2006-06-15 14:55:00) [17]hCD = CreateFile('\\\\.\буква сидюка.... и т.д.
ну это было в примере по юзанию IoDeviceControl
Игорь Шевченко (2006-06-15 14:45:00) [18]
> хэндл устройства получаю
Как ?
r@bbit (2006-06-15 14:41:00) [19]да, с черным списком идея хороша и вроде даже не очень сложна в реализации... хэндл устройства получаю а как дальше быть? как получить имя драйвера который это устройство обслуживает? извиняйте если туповатые вопросы просто раньше такого не делал.
Ihor Osov'yak (2006-06-15 12:38:00) [20]в конце концов можно подсадить свой фильтр на драйвер, который обслуживает идешные и скази шины, может еще юсб - и посмотреть, будут проходить запросы на соотв. шины, когда мы со своего приложения попытаемся обратится к СД приводу.. думаю, это тоже может быть критерием..