Как правильно отладить драйвер ядра Windows? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь настроить среду Windows VM для отладки драйвера ядра.

Я создал образец драйвера ядра в Visual Studio 2017. File-> Новый проект-> Драйвер режима ядра ( базовый проект ; только для тестирования - автоматически сгенерированный макрос трассировки, необходимые процедуры и т. Д.) И его необходимо протестировать на целевой машине .

Мои шаги ( целевая машина ):

  1. Установка Windows 10 на виртуальную машину (VirtualBox);
  2. Включите тестовый режим и установите BCDEdit как локальный ;
  3. Установка WDK ;
  4. Загрузка Загрузчик OSR ;
  5. Копировать файлы после сборки на виртуальную машину (C: \ DriverTest \ TestKernelDriver2 \; .cer , .inf , .pdb , .sys );
  6. Создание папки traces ;C: \ DriverTest \ TestKernelDriver2 \ traces \
  7. Установить сертификат - TestKernelDriver2.sys ;( Режим знака : Тестовый знак )
  8. Запуск Загрузчик драйверов OSR , выберите драйвер, нажмите Регистрация службы ( Успех ).
  9. Запуск tracelog с параметрами (GUID был сгенерирован шаблонами; нет с помощью Инструменты-> Создать GUID ) - success :

    tracelog -start TestKernelDriver2 -guid #0f4fbb98-1569-495b-88d1-f654b1e2d68e -f C:\DriverTest\TestKernelDriver2\traces\trace.etl -flag 2 -level 0xFFFF

  10. Проверьте C: \ DriverTest \ TestKernelDriver2 \ traces \ trace.etl;(существует - 64 КБ размер)

  11. Загрузчик драйверов OSR: нажмите Запуск службы ( ошибка ).Сообщение об ошибке: Указанная процедура не найдена.
  12. Стоп tracelog - success :

    tracelog -stop TestKernelDriver2

  13. Открыть Просмотр событий . Журналы Windows-> Система .Последняя ошибка:

    The TestKernelDriver2 service failed to start due to the following error: The specified procedure could not be found.

    Details: EventData param1 TestKernelDriver2 param2 %%127 54006500730074004B00650072006E0065006C0044007200690076006500720032000000

  14. Открыть C: \ DriverTest \ TestKernelDriver2 \ traces \ trace.etl через Просмотр событий и не вижу никаких журналов.

Как я могу узнать, что процедура была пропущена?

Я пытался исследовать ее с помощью Зависимость Уокер и обнаружил, что некоторые .sys файлы отсутствуют ( WppRecorder.sys , WdfLdr.sys , msrpc.sys , EXT-МС-WIN-* +1134 * ### * +1135 * .DLL * * тысяча сто тридцать шесть).Эти поля находятся в C: \ Windows \ System32 \ drivers.Я скопировал файлы в C: \ Windows \ System32 и Dependency Walker успокоился.Что насчет EXT-MS-WIN - *. DLL - я прочитал в этой теме , что эти файлы могут быть пропущены.

Благодаря @ magicandre1981.Я установил свой драйвер через PnPUtil .Но теперь я вижу это в списке команды pnputil / enum-drivers .

enter image description here

Но когда я запускаю следующеекоманды в WinDbg , я не вижу своего драйвера в списке:

!load wdfkd.dll
!wdfkd.wdfldr

enter image description here

Я пытаюсьвыполните шаги сеанса 1 из этого руководства Microsoft .

1 Ответ

0 голосов
/ 07 марта 2019

Я нашел решение с помощью генератора tracefmt и приложения TraceView .

Шаг 0 : создание файла tmf по команде:

tracefmt С:\TestDriver\TestKernelDriver2\TestKernelDriver2.etl -i С:\TestDriver\TestKernelDriver2\TestKernelDriver2.sys -r С:\TestDriver\TestKernelDriver2\TestKernelDriver2 -p С:\TestDriver\TestKernelDriver2\tmfs -o С:\TestDriver\TestKernelDriver2\TestKernelDriver2.txt -v

Шаг 1 : создать сеанс в TraceView: Файл -> Создать новый сеанс .Заполните GUID, введенный вручную .( 0f4fbb98-1569-495b-88d1-f654b1e2d68e )

Шаг 2 : Выбор источника информации о формате WPP ( Установить TMFПуть поиска (опция) и путь заполнения: C: \ DriverTest \ TestKernelDriver2 \ tmfs

Шаг 3 : Далее , заполнение Имя сеанса журнала и Отображение в реальном времени проверено. Готово .

TraceView settings

...