PDA

Показать полную графическую версию : Boot-execute программа, ввод с клавиатруры


masta
18-11-2002, 18:12
Дано: W2k, некая boot-execute программа
Требуется: осуществить ввод данных с клавиатуры, как это делает chkdsk, запрашивая подтвеждение своих действий.
Предполагаемые пути решения: "открыть драйвер", связать его с ранее созданным портом завершения ввода/вывода, поместить ожидание события от клавиатуры в отдельный поток, где и обрабатывать.
Вопрос: Как начать работу с драйвером? Как его проинициализировать (интересует конкретные управляющие коды и структуры) и заставить выдавать данные? Какие статьи/ссылки/форумы/книги следует почитать, чтобы поднять эрудицию в данном вопросе?

То же самое интересует для считывания информации от мыши.

vasketsov
19-11-2002, 17:19
masta
Дизассемблировать autochk той же IDA-ой.
Там все более чем тривиально.
Описание функций - см. у Garry Nebbett или тут могу подкинуть если не найдешь.

masta
19-11-2002, 18:09
Описания функций - то у меня есть, и книга, собственно, тоже...
Но вот в дизассемблировании я не очень силён...

vasketsov
19-11-2002, 18:15
masta
Запускаешь IDA.
Открываешь им autochk.exe (советую скопировать в отдельную папку).
Выбираешь в опциях анализировать UNICODE_STRING-и.
После анализа ищешь \Device\KeyboardClass0 и смотришь что с ним делается, ничего сложнее ZwCreateFile / ZwReadFile / ZwWriteFile / ZwDeviceIoControlFile / ZwFsControlFile там быть не должно в принципе.
Если совсем все плохо, тогда жди, дома погляжу.

masta
19-11-2002, 18:22
Спасибо за совет, посмотрю...
(хоть всё совсем плохо, учиться-то надо)


Исправлено: masta, 19:25 19-11-2002

vasketsov
20-11-2002, 11:42
Ну вобщем, так это делается.
Открывается \Device\KeyboardClass0
Потом для каждой итерации ожидания ZwReadFile и ZwWaitForSingleObject.
Потом ZwClose.
Все, больше ничего не надо.

Работающий пример кода тут:
http://zw.nightmail.ru/_bootexe.htm




© OSzone.net 2001-2012