Realer
Гость
|
|
« : 28-04-2009 09:20 » |
|
Здравствуйте, Форумчане! Занимаюсь изучением различного рода программирования чуть более года. За это время успел изучить html/js/php/c-c++/ASM/, создавал вэб-, виндовс приложения. Месяца 1.5-2 назад решил поизучать создание драйверов под Windows, программирование в режиме ядра, да и вообще найти применения своим знаниям на этом непростом занятии. Почему именно драйвера?, наверное не мне вам объяснять насколько это интереснее, занятнее и перспективнее программирования окошек в пользовательском уровне. Так вот. Успел прочитать пол книги WDM от Oney, также пытался читать Солдатова, Сорокину, Комиссарову, различные статьи на Васме и других подоных источниках. Документацию WDK читать не начинал( но думаю на днях начну, так как в любом случае понимаю, что это наиболее обильный источник информации по сабжу). Наибольшую сложность я испытываю в отсутствии живых примеров. То есть количество теоретических знаний с каждой прочитаной страницей документации все больше и больше превосходит количество практических навыков. То бишь теория без практики в моей голове не укладывается никак. Хотел бы попросить вас выложить какой-нибудь полный комментированный код простого драйвера, что бы мне было что разобрать. Просто я никак не могу понять, вот есть драйвер, загружается инициализируется функцией DriverEntry, а вот что дальше происходит мне не ведомо. Поступают всякие IRP пакеты, но откуда и как они обрабатываются, что должны делать фунуции их обработки понять не могу. Надеюсь вы поняли, что я попытался вам донести своим постом. Заранее спасибо за советы и подсказки!
|
|
|
Записан
|
|
|
|
Рыжий Тигра
Гость
|
|
« Ответ #1 : 28-04-2009 09:40 » |
|
Realer > Поступают всякие IRP пакеты, но откуда и как они обрабатываются, что должны делать фунуции их обработки понять не могу.Я в твои годы начинал с драйверов под Linux. Есть классная книга - Alessandro Rubini "Linux device drivers", издательство свободно распространяет pdf'ы. Это для врубиться в что такое драйвер и какими концами он взаимодействует с устройством, операционкой и пользовательскими программами. После Рубини хорошо видно, что в windows общение с устройством чуть-чуть сложнее, обращения к операционке - ничего страшного (просто набор API здорово отличается и от WinAPI, и от стандартно-сишного), но зато обработка запросов и от программ, и от ОС - это кошмар и сплошная проктология. Мне тут пришёл на помощь NuMega DriverStudio c его способностью генерировать жизнеспособный скелет драйвера и комментариями намекать "вставь в это место свой обработчик (открытия/закрытия, чтения/записи, прерывания от ус-ва, и т.д.). Попробуй тот же путь.
|
|
|
Записан
|
|
|
|
Realer
Гость
|
|
« Ответ #2 : 28-04-2009 10:38 » |
|
Благодарю Вас Рыжий Тигра Книжку немного пролистал, сегодня дома поизучаю. Жаль только что на английском, но ничего, будет опыт чтения данного вида литературы на языке оригинале, что несомненно окажется полезным в дальнейшем.
|
|
|
Записан
|
|
|
|
Рыжий Тигра
Гость
|
|
« Ответ #3 : 28-04-2009 14:54 » |
|
Realer > Жаль только что на английскомСуществует в природе перевод нескольких глав второго издания Рубини (предпоследнего) на русский язык, но ничего внятного про перевод сказать не могу, не читал.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #4 : 28-04-2009 22:41 » |
|
Realer > Жаль только что на английском
Кнопка "Цитировать" рулит!
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Realer
Гость
|
|
« Ответ #5 : 29-04-2009 06:07 » |
|
Realer > Жаль только что на английскомСуществует в природе перевод нескольких глав второго издания Рубини (предпоследнего) на русский язык, но ничего внятного про перевод сказать не могу, не читал. Да я сразу же посмотрел в интернетах и нашел подобные рукоделия. но сразу же стало понятно, что читать таким образом нет смысла, так как во-первых переведеный лишь отрывки, которые сложнос смысленно связать, а во-вторых, так это просто больше мороки будет, чем читать на английском и само собой количество усвоеной информации будет порядком меньше.
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #6 : 29-04-2009 21:49 » |
|
сразу в драйвера лезть не стоит.. мне кажется... начните со структуры win(если идет речь про win). почитайте про API. попрактикуйтесь с написанием чистого Си кода с использованием чистого API без MFC, дельфи и прочих борландов.... когда освоите это на уровне "знаю КАК найти решение любой задачи и где искать", и что надо делать(как пример) для записи на диск в асинхронном режиме и как осуществить межпросессную (межнитевую) синхронизацию - читайте Руссиновича. и ТОЛЬКО с этим багажом стоит начинать изучать драйвера. иначе как в анекдоте будет "про паровоз то я все понял... а вот куда тут лошадь запрягать?" мне кажется так... ИМХО.
а про линукс я не знаток) не работал с ним) PS если где то я не прав - скажите)
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
DrGluck
|
|
« Ответ #7 : 06-05-2009 09:13 » |
|
У Они вроде вполне внятные примеры. Солдатова сразу не читай, т.к. он про WDM не пишет, а WDM - это наше все. А потом ставишь Syser, там есть удобная утилита для запуска драйвера, и вперед... Кстати, сисер и исходники показывает нормально, тока что проверил.
|
|
|
Записан
|
Good user - dead user
|
|
|
Ochkarik
|
|
« Ответ #8 : 06-05-2009 11:41 » |
|
DrGluck, а я syser таки поставил, немного поигрался и он у меня систему в BSOD кинул) сыроват все таки...
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
DrGluck
|
|
« Ответ #9 : 06-05-2009 13:02 » |
|
Syser в БСОД кидает почемуто когда ставишь брякпоинт на стандартные функции винды, типа MessageBoIndirect. У меня так во всяком случае. С драйвером пока проблем не было. И потом, вроде как альтернативы нет. Особенно под 64.
|
|
|
Записан
|
Good user - dead user
|
|
|
Realer
Гость
|
|
« Ответ #10 : 09-05-2009 05:46 » |
|
Доброго дня,форумчане! Тут в поисках статей в интернете по сабжу наткнулся на это, http://www.pcports.ru/articles/ddk2.php . Просьба к бывалым в этом деле, скажи годно ли? С Днем Побебы! Кстати хотел сказать спасибо за рекомендации в сосебднем топике человеку, который посоветовал почитать К.Касперского "Фундаментальные основы хакерства". Очень приятный, полезный , а главное практичный учебник. Спасибо!
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #11 : 11-05-2009 15:26 » |
|
Realer, доброго времени) годно, - отчего ж нет... но смотря для чего)
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
Realer
Гость
|
|
« Ответ #12 : 16-05-2009 12:41 » |
|
Realer, доброго времени) годно, - отчего ж нет... но смотря для чего)
Годно для понимания концепции взаимодействия прикладных программ с драйверами режима ядра. ====================================== А еще у меня вопрос по SoftIceУ меня такая проблема ставлю софт айс с драйвер студии и он уменя пишет error code 31 - присоединенное к системе устройство не работает.Please check the event viewer for more informaion. В журнале я ничего не нашел. Интернет облазил. Читал васм, краклаб но толком ничего подхоядщего, мне понятно, для решния проблеммы не нашел. Не подумайте, что я кроме как написать сообщение в форум ничего не делал. Я попытался установить другой айс(с краклаба), но он тоже не запускался. Патчил, крутел вертел и все равно ничего. Помогите мне с айсом пожалуйста!
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #13 : 17-05-2009 13:30 » |
|
айс не поддерживает нового оборудования и всяческих SP на XP... посмотрите подробнее вашу конфигурацию OC. SP2/SP3 - стоит? что за железо - что за проц, что за видеокарта? потом для айса много обновлений выходило- касательно новых процессоров. файлы назывались osinfo.dat. правда это уже после инсталяции. но в вашем случае 31 ошибка - драйвер не найден или не смог загрузиться. почему не смог - видимо ему не понравилось оборудование или компоненты OC. попробуйте Syser использовать вместо айса... это конечно жалкое подобие, но куда деваться его по крайней мере поддерживают. а с айсом - увы, если у вас не совсем старый ПК и вам отладчик нужен не на один раз, то лучше не теряйте с ним времени... пользуйтесь другим.
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
Realer
Гость
|
|
« Ответ #14 : 17-05-2009 18:21 » |
|
Спасибо, Ochkarik! Да на самом деле винда второго пака, комп, а вернее ноут скажем так, не старый, но и не с особыми наворотами: -Intel Celeron 500(2 GHz) -Mobile Intel Graphics Media accelerator X3100 Сегодня попытался поставить оставшиеся две сборки Айса которые нашел на краклабе и разумеется ничего не вышло, патчил, перезагружал, переустанавлива, никаких ошибок, никаких окошек - просто не работает.
На самом деле, мне как человеку, который никогда не занимался отладкой кода режима ядра, не принципиально какой будет отладчик, мне важно, что бы я смог на нем что-то делать из примеров которые книг из статей, которые разумеется точены под Айс. А вообще я уже сегодня думал пытаться заюзать другой отладчик, типа виндебагер( кстати очень хотелось бы узнать мнение профессионала по последнему) и продолжать изучение ядра на ином, отличным от айса.
Syser - сегодня же найду в интернетах и попытаюсь подружиться с ним.
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #15 : 17-05-2009 19:59 » |
|
виндебагом не работал... когда была необходимость - еще айс работал и поддерживался. syser - недавно ставил ради интереса, по принципу работы похож на софтайс, но пока еще сыроват: в общем после 5 минут его изучения он упал и завалил мне винду(версия 1.99).. с айсом такого не было, но айс сколько времени развивался. надеюсь и Syser доведут со временем.... хотя с другой стороны windbg можно сказать нативный инструмент... устойчивый) из советов - попробуйте виртуальную машину поставить. VMWare какой нибудь... ну по крайней мере подумайте в эту сторону.... помню, мне по началу приходилось раз по 30-40 в день перезагружаться. несколько выводит из себя))) впрочем сейчас и книги и литературы много - да и в нете много статей и ресурсов... или может я такой дикий был)))
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
Ochkarik
|
|
« Ответ #16 : 20-05-2009 20:05 » |
|
ЗЫ тут встретил фразу... по айсу... Ошибка 31. Присоединенное к системе устройство не работает Чтобы её небыло, надо удалить Daemon Tools и Alcohol, а также файл sptd.sys из папки ...\system32\drivers
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
Realer
Гость
|
|
« Ответ #17 : 22-05-2009 12:39 » |
|
Огромное тебе Спасибо Ochkarik!!! Милионы лучей добра и света тебе, добрый человек! Все запустилось! Сегодня буду целый вечер и всю ночь заниматься изучением! Я тебе очень благодарен!
|
|
|
Записан
|
|
|
|
DrGluck
|
|
« Ответ #18 : 11-06-2009 09:52 » |
|
Кстати таки да, когда демон ставишь он же ругается если отладчик режима ядра стоит. Я кстати сам всегда про это забывал когда айс ставил.
|
|
|
Записан
|
Good user - dead user
|
|
|
|