При анализе проблемных драйверов, часто бывает полезно понять, с какими конкретно драйверами мы имеем дело. То есть хотелось бы знать версию, дату создания и т.д. К сожалению, здесь не все так просто. Версия драйвера является необязательной и для некоторых драйверов она может не отображаться, например, посмотрите на скриншот ниже:
Как видно из скриншота, для драйвера usbccgp.sys у нас есть вся необходимая информация для четкой идентификации:
- File version;
- Product version;
- Company name;
- Timestamp;
- CheckSum и т.д.
Такие данные как Fileversion, productversion и т.д. мы можем увидеть например, в свойствах файла в проводнике.
Однако, следует иметь в виду, что то, какая будет информация, зависит от разработчика.
Рассмотрим другой случай, когда все что у нас есть, это timestamp, CheckSum, ImageSize
Как быть в такой ситуации, когда нам все же необходимо идентифицировать драйвер? Timestamp не имеет отношения к атрибутам файловой системы как могло бы показаться сначала, и это логично, поскольку эти данные легко изменить. Timestamp содержит информацию о дате и времени сборки в UTC, которая добавляется туда линковщиком. Поскольку это UTC данные, не забывайте о том, что другие программы могут отображать данные в GMT с учетом настроек часового пояса. В частности, так делает dumpbin.exe. Значение 52BAC25A в круглых скобках за датой и временем – это представление даты и времени в 16-ричном значении. Воспользуйтесь .formats в Windbg для конвертации (скриншот ниже):
ОК, теперь о checksum. Это контрольная сумма, которая записывается линковщиком, когда проект собирается с параметром /Release.Ее значение можно получить, например, с помощью dumpbin.exe
Ну и напоследок,также вполне вероятен самый негативный сценарий (скриншот нижеиз windbg), когда получить данные о временной метке или контрольной суме нет возможности.
Таким образом, для того чтобы понять с каким драйвером мы имеем дело, смотрим в первую очередь на такие данные как Fileversion, Productversion. Если этих данных нет смотрим на Timestamp, CheckSum. Эти данные создаются линковщиком. Если у вас есть бинарные файлы то эти данные для таких бинарных файлов можно получить с помощью dumpbin.exe, которая входит в состав VisualStudio и сравнить с данными из файла дампа. Однако может быть ситуация, когда и этих данных не будет.