Как отобразить сообщение пользователю в ядре, в то время как сообщение может быть доступно только ядру - PullRequest
0 голосов
/ 07 марта 2012

В настоящее время я разрабатываю драйвер Windows, который может защитить пароль пользователя. Я хочу отобразить одно сообщение пользователю, когда пользователь активирует защиту, указывая, что драйвер начал работать.Но это сообщение не может быть доступно пользовательскому пространству, в случае, если вредоносное программное обеспечение может подделать это сообщение, в то время как драйвер фактически не работает вообще.И это сообщение определяется пользователем, поэтому я не могу записать его в драйвер.Я искал ответ в Интернете, но не смог.Я пытался использовать bcdedit.exe для редактирования параметров запуска, но я не знаю, как я могу получить это сообщение в драйвере.У кого-нибудь есть хорошие идеи?Пока приложения пользовательского пространства не могут получить доступ к сообщению, а это сообщение от пользователя.Спасибо!

1 Ответ

0 голосов
/ 08 марта 2012

(Вот ответ, но прочитайте сноску о модели угрозы)

  1. В вашем фильтре вызовите FltCreateCommunicationPort.Параметр PFLT_MESSAGE_NOTIFY MessageNotifyCallback является указателем на функцию обратного вызова для обмена сообщениями.
  2. Ваш клиент вызовет FilterSendMessage, чтобы отправить сообщение водителю
  3. В обратном вызове вашего драйверафункция (MessageNotifyCallback), сохранить сообщение, выбранное пользователем.Остерегайтесь выравнивания памяти.
  4. При необходимости ваш клиент снова вызывает FilterSendMessage, на этот раз, чтобы получить строку, отправленную драйверу.
  5. Вызов FltCloseCommunicationPortи другие функции очистки.

Введите findstr /s FltCreateCommuncationPort *.c в каталоге src вашей установки WDK.Найдите любой образец фильтра Microsoft, чтобы попробовать свою идею, он быстро заработает.Когда закончите, скопируйте рабочий код в свой фильтр.

Но подумайте о модели вашего потока .Либо я чего-то не понимаю (вполне возможно;), либо что это не стоит затраченных усилий.Почему бы не проверить, установлен ли ваш драйвер и работает ли его цифровая подпись?

Может быть, вы можете обновить свой OP, сообщив нам, как код пользовательского режима узнает, что он отправляет строку (сообщение для отображения) в первую очередь законному драйверу?

...