информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsВсе любят медСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 700 с лишним git-серверов пострадало... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Спасибо. 05.09.01 08:29  Число просмотров: 907
Автор: sergei_btf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо, за ответы.
<programming>
DDK : Как связаться с драйвером? 31.08.01 01:21  
Автор: sergei_btf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Здравствуйте.
У меня такая проблема, я связываюсь с драйвером клавиатуры путем вызова функции CreateFile() (имя драйвера получаю путем вызовов SetupDiGetClassDevs(), SetupDiEnumDeviceInterfaces(), SetupDiGetInterfaceDeviceDetail() ). Когда режим доступа при вызове CreateFile() установлен в “GENERIC_READ | GENERIC_WRITE” или одно из них, функция взращает код ошибки, если же режим доступа установить в 0 то все нормально. Пробовал открывать игровой порт и дисковод все нормально открывается с режимом доступа “GENERIC_READ | GENERIC_WRITE”, а с мышкой то же что и с клавиатурой. Попытался связаться с драйвером фильтром клавиатуры (kdbfilter) (зарегистрировал интерфейс, включил его, в реестре все нормально прописалось) ситуация аналогичная, не хочет открывать. Сравнивал исходники драйверов игрового порта и клавиатуры, но вроде все что есть в игровом порте, то есть и в клавиатуре.
Я работаю под Win 2k, ddk то же под Win 2k.
Если кто ни будь знает в чем здесь проблема помогите пожалуйста.
DDK : Как связаться с драйвером? 31.08.01 08:27  
Автор: leo <Леонид Юрьев> Статус: Elderman
Отредактировано 31.08.01 08:40  Количество правок: 1
<"чистая" ссылка>
А какие ошибки возвращаются, access denied или что-то еще ?
И если не секрет, зачем тебе это надо ?

Вот вырезка из кода (kbdclass.c):
// We do not allow user mode opens for read. This includes services (who
// have the TCB privilege).
//
if (Irp->RequestorMode == UserMode &&
(irpSp->Parameters.Create.SecurityContext->DesiredAccess & FILE_READ_DATA)
) {
status = STATUS_ACCESS_DENIED;
goto KeyboardClassCreateEnd;
}

Совет такой:
Откомпилируй debug-версию kb-драйвера, поставь TRAP на входе в KeyboardClassCreate() и посмотри что происходит при CreateFile() из user-mode.
DDK : Все работает! 01.09.01 14:42  
Автор: sergei_btf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Все работает!

Просто закомментировал проверку и о-па! все работает. А то я пять дней бьюсь над этой ошибкой, уже начал пробовать вариант связи через другой драйвер, который открывается, но зато я много чего интересного узнал про DDK (нет худа без добра). Сейчас буду дальше теснить.
На всякий случай, если это нужно, код возвращаемой ошибки 0xffffffff (-1) чему соответствует макрос INVALID_HANDLE_VALUE.
Вообще-то секрет. У нас тут с мужиками есть небольшой проектик (поскольку я когда-то занимался программированием для защищенного режима на меня лег весь груз низкоуровневого программирования и по совместительству должность «тормоза проекта»). В плане закона все в порядке. Просто, мы решили, особо не распространятся. Это связано с некоторой спецификой проекта и относится больше к нашим знакомым.

Leo (или кто знает) если тебе не сложно, ответь пожалуйста еще на несколько вопросов.

Как можно установить свеже скомпилированный драйвер без перезагрузки компьютера?
Я делаю так, предварительно удаляю файл driver.cab, и просто копирую мой драйвер в папку C:\WINNT\system32\drivers, после чего windows выдает сообщение о неродном драйвере, игнорирую его, и затем перезагружаюсь.

Можно ли как ни будь отлаживать драйвер без host machine.

И еще. Что такое TRAP.

Спосибо за совет.
DDK : Все работает! 02.09.01 03:06  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
TRAP это макрос вставляющий int3 в DEBUG-версии, в RELEASE - ничего.

Чтобы система не говорила о "чужом" файле, проще выключить систему защиты системных файлов.

Чтобы обновить драйвер без перезагрузки нужно сделать disable device, скопировать новый sys-файл, и потом enable device. В отношении клавиатуры это придеться делать через setup-функции, см. DDK HELP.
Если в Event Viewer были просмотренны события записанные в журнал драйвером, то sys-файл будет занят и надо закрыть Event Viewer.

"Убивание" проверки в драйвере это потенциальная дыра в безопасности, скорее всего то что вам необходимо можно сделать другими, легальными путями.

Удачи.
Спасибо. 05.09.01 08:29  
Автор: sergei_btf Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо, за ответы.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach