Идентификация драйверов при анализе дампов

Автор: | 27.02.2015

При анализе проблемных драйверов, часто бывает полезно понять, с какими конкретно драйверами мы имеем дело. То есть хотелось бы знать версию, дату создания и т.д. К сожалению, здесь не все так просто. Версия драйвера является необязательной и для некоторых драйверов она может не отображаться, например, посмотрите на скриншот ниже:

image001

Как видно из скриншота, для драйвера usbccgp.sys у нас есть вся необходимая информация для четкой идентификации:

  • File version;
  • Product version;
  • Company name;
  • Timestamp;
  • CheckSum и т.д.

Такие данные как Fileversion, productversion и т.д. мы можем увидеть например, в свойствах файла в проводнике.

image003

Однако, следует иметь в виду, что то, какая будет информация, зависит от разработчика.

Рассмотрим другой случай, когда все что у нас есть, это timestamp, CheckSum, ImageSize

image005

Как быть в такой ситуации, когда нам все же необходимо идентифицировать драйвер? Timestamp не имеет отношения к атрибутам файловой системы как могло бы показаться сначала, и это логично, поскольку эти данные легко изменить. Timestamp содержит информацию о дате и времени сборки в UTC, которая добавляется туда линковщиком. Поскольку это UTC данные, не забывайте о том, что другие программы могут отображать данные в GMT с учетом настроек часового пояса. В частности, так делает dumpbin.exe. Значение 52BAC25A в круглых скобках за датой и временем – это представление даты и времени в 16-ричном значении. Воспользуйтесь .formats в Windbg для конвертации (скриншот ниже):

image007

ОК, теперь о checksum. Это контрольная сумма, которая записывается линковщиком, когда проект собирается с параметром /Release.Ее значение можно получить, например, с помощью dumpbin.exe

clip_image009

Ну и напоследок,также вполне вероятен самый негативный сценарий (скриншот нижеиз windbg), когда получить данные о временной метке или контрольной суме нет возможности.

image010

Таким образом, для того чтобы понять с каким драйвером мы имеем дело, смотрим в первую очередь на такие данные как Fileversion, Productversion. Если этих данных нет смотрим на Timestamp, CheckSum. Эти данные создаются линковщиком. Если у вас есть бинарные файлы то эти данные для таких бинарных файлов можно получить с помощью dumpbin.exe, которая входит в состав VisualStudio и сравнить с данными из файла дампа. Однако может быть ситуация, когда и этих данных не будет.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *