![]() |
Дано: W2k, некая boot-execute программа
Требуется: осуществить ввод данных с клавиатуры, как это делает chkdsk, запрашивая подтвеждение своих действий. Предполагаемые пути решения: "открыть драйвер", связать его с ранее созданным портом завершения ввода/вывода, поместить ожидание события от клавиатуры в отдельный поток, где и обрабатывать. Вопрос: Как начать работу с драйвером? Как его проинициализировать (интересует конкретные управляющие коды и структуры) и заставить выдавать данные? Какие статьи/ссылки/форумы/книги следует почитать, чтобы поднять эрудицию в данном вопросе? То же самое интересует для считывания информации от мыши. |
masta
Дизассемблировать autochk той же IDA-ой. Там все более чем тривиально. Описание функций - см. у Garry Nebbett или тут могу подкинуть если не найдешь. |
Описания функций - то у меня есть, и книга, собственно, тоже...
Но вот в дизассемблировании я не очень силён... |
masta
Запускаешь IDA. Открываешь им autochk.exe (советую скопировать в отдельную папку). Выбираешь в опциях анализировать UNICODE_STRING-и. После анализа ищешь \Device\KeyboardClass0 и смотришь что с ним делается, ничего сложнее ZwCreateFile / ZwReadFile / ZwWriteFile / ZwDeviceIoControlFile / ZwFsControlFile там быть не должно в принципе. Если совсем все плохо, тогда жди, дома погляжу. |
Спасибо за совет, посмотрю...
(хоть всё совсем плохо, учиться-то надо) [s]Исправлено: masta, 19:25 19-11-2002[/s] |
Ну вобщем, так это делается.
Открывается \Device\KeyboardClass0 Потом для каждой итерации ожидания ZwReadFile и ZwWaitForSingleObject. Потом ZwClose. Все, больше ничего не надо. Работающий пример кода тут: http://zw.nightmail.ru/_bootexe.htm |
Время: 11:30. |
Время: 11:30.
© OSzone.net 2001-