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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Идем на http://google.com и вводим 30.01.05 22:31  Число просмотров: 1746
Автор: Фдеук Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Писал как-то фиктивный драйвер единственно для доступа к
> kernel mode функциям. Драйвер, конечно, получился из
> семейства белки летяги: летал постоянно, естесснно вместе с
> осью. Недавно нашел время, поохотился на багов, большинство
> повывел. Но остался один особенно злобный: запускается
> драйвер, жмется Ctrl+Alt+Del --> Lock Computer -->
> Винда(WinXP) вылетает в трубу. Кто-нибудь знает, какие PnP
> пакеты идут при этом (другие просто не обрабатываются)?
>
> Немного offtop: А правда, что дляполноценнойотладки
> драйвера нужно вовсю иметь два соединенных компьютера, на
> одном - Debug версия винды, на другом - спецназ debugger.

Идем на http://google.com и вводим
IRP_MJ_PNP
Попадаем на страничку MSDN'а. Там внизу есть ссылка на
Plug and Play Minor IRPs.
Смотрим колонку
Function or Filter Driver for Nonbus Device

Еще можешь глянуть на устройство драйвера в
http://alter.org.ua/soft/win/ntpcidump/index.php
там есть простенький драйвер, который вполне прилично ведет себя под XP,
хотя о PNP ничего не знает. Зато у него корректный Unload().

Как уже правильно заметили - SoftIce справляется с задачей debugging'а и на одной машине.

--
Alter, http://alter.org.ua
<programming>
Driver вылетает при блокировке компа 28.01.05 22:21  
Автор: serge Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Писал как-то фиктивный драйвер единственно для доступа к kernel mode функциям. Драйвер, конечно, получился из семейства белки летяги: летал постоянно, естесснно вместе с осью. Недавно нашел время, поохотился на багов, большинство повывел. Но остался один особенно злобный: запускается драйвер, жмется Ctrl+Alt+Del --> Lock Computer --> Винда(WinXP) вылетает в трубу. Кто-нибудь знает, какие PnP пакеты идут при этом (другие просто не обрабатываются)?

Немного offtop: А правда, что дляполноценнойотладки драйвера нужно вовсю иметь два соединенных компьютера, на одном - Debug версия винды, на другом - спецназ debugger.
Если просто "Lock Computer", то никаких PNP-запросов это не... 31.01.05 00:50  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
Если просто "Lock Computer", то никаких PNP-запросов это не порождает. Другое дело "Hibernate" или "Power off". Скорее всего твой драйвер слегка "пакостит" задолго до этого, a при "Lock Computer" видны последствия.

В PNP все достаточно просто кроме полноценного управления питанием для bus-драйверов.
Искать проблему лучше "от печки" - запускаешь "Driver Verifier" (verifier.exe из командной строки), включаешь проверку для своего творения и вперед. Предварительно полезно включить запись "kernel memory dump".

Чтобы не "тонуть", а хотя-бы "плавать" очень советую два раза прочить доки по DDK. Два раза потому что они так написаны - не зная "конца", не возможно полностью понять "начало".

Отлаживать на одном компе IMHO очень не удобно. Когда дело доходит до трудностей SoftIce уже не поможет. Даже "двух-корпусной" комплект не всегда спасает, например если отлаживать что-то зависящее от IPI на SMP (поднять в драйвер IRQ до HIGH_LEVEL :)

Если нет второго компа, то теоретически VirtualPC или VmWare должно спасти (IMHO первое лучше). По-идее можно соединить COM1 с COM2 нуль-модемным кабелем, отдать COM2 виртуальной машине, а на COM1 посадить WinDbg. Это должно работать без проблем, но я просто не пробовал.

Удачи!
Замечания по поводу виртуальных машин 31.01.05 12:04  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Полностью согласен со всеми замечаниями по сути

> Отлаживать на одном компе IMHO очень не удобно. Когда дело
> доходит до трудностей SoftIce уже не поможет. Даже

Смотря какие трудности. SIce - весьма удобная штука и на нем я перелопатил не один драйвер. Но потом перелез на KD/ WinDbg - они гораздо мощнее

> Если нет второго компа, то теоретически VirtualPC или
> VmWare должно спасти (IMHO первое лучше). По-идее можно
> соединить COM1 с COM2 нуль-модемным кабелем, отдать COM2
> виртуальной машине, а на COM1 посадить WinDbg. Это должно
> работать без проблем, но я просто не пробовал.

Не обязательно. И VMware и VirtualPC умеют перенаправлять виртуальный порт в пайп. В то же время и SoftICE и WinDbg поддерживают удаленную отладку через пайп. Именно так я и делаю уже полтора года.
Теперь о самих виртуальных машинах. В VirtualPC радуют diff (или как они там называются) диски. Это когда новый виртуальный диск создается поверх старого и все изменения пишутся туда. Если блок не был изменен - он читается из старого диска, если был изменен - из нового. Кроме того, субъективно в VPC гораздо лучше реализована работа с перенаправлением COM-порта в пайп (WinDbg гораздо шустрее), но совершенно не радует невозможность создания персистентного снапшота, то есть снапшота из которого размораживаться можно больше одного раза. В VMware же есть постоянный снапшот (очень удобная штука для тестирования нестабильных драйверов - вместо постоянной перезагрузки и создания рабочей среды для отладки драйвера достаточно сделать это один раз и заснепшотить уже загруженную машину). А в 5-й версии (которая пока только бета) появилась возможность организовывать снепшоты в виде дерева, да и работа с COM-портом улучшилась

Так что, несмотря на более приятные ощущения от работы с VPC сижу все таки на VMware
Про возможность использовать пайпы я как-то совсем забыл... 31.01.05 15:08  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
Про возможность использовать пайпы я как-то совсем забыл. Если бы в VPC/WmWare можно было вставлять невиртуальное "железо", то давно бы пересел :)

Кстати, при отладке нестабильных драйверов давно пользуюсь простейшей "уловкой": DriverLoad проверяет uptime системы, и если меньше минуты то драйвер просто не запускается.
Виртуальная машина дает еще преимущество по времени... 31.01.05 15:46  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Кстати, при отладке нестабильных драйверов давно пользуюсь
> простейшей "уловкой": DriverLoad проверяет uptime системы,
> и если меньше минуты то драйвер просто не запускается.
Виртуальная машина дает еще преимущество по времени. Восстановление из снепшота уже готовой для тестирования системы - секунд 5, а перезагрузка, запуск и настройка среды - не меньше минуты рутинных действий
Конечно... 31.01.05 16:03  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
Конечно...
Ну дак я говоря что пересел бы, если в "виртуалку" можно было вставить PCI-карточку с master-dma :)
А ты virtutech simics не смотрел? 07.02.05 11:29  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Конечно...
> Ну дак я говоря что пересел бы, если в "виртуалку" можно
> было вставить PCI-карточку с master-dma :)
ИМХО это именно то, что тебе надо. Полностью детерминистичная машина, может эмулировать кучу процессоров (в смысле моделей процессоров), многопроцессорные машины и прочая. Кроме всего прочего (список эмулируемого железа не маленький) есть SDK с помощью которого можно дописывать свое железо. К достоинством (и одновременно недостаткам для медленных хост-машин) стоит отнести, что это не виртуальная машина, а эмулятор. Следовательно можно ставить произвольное количество точек прерывания на доступ

Полазь по сайту www.virtutech.com (без хттп, чтобы не палить реферер). Если заинтересует версию 1.6.10 (~60 метров) я за полчаса скачал из осла (всего 4 юзера расшарили, зато один из них мгновенно начал аплоадить мне симикс на скорости 30кб/с), а кряк написал сам - обращайся на мыло и приват. Могу также выслать доки от него
Спасибо, интересная вещь, как-нибудь обязательно гляну... 07.02.05 13:44  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
Спасибо, интересная вещь, как-нибудь обязательно гляну (сейчас нет времени).

Но это всё равно мне не подходит. Я имел ввиду, что "настоящую" не-виртуальную, "железную" карточку по-определению в виртуалку не вставить. Делать же мост реальность-виртуальность, или эмулятор карточки - гораздо волокитнее чем отлаживаться "на железе".
Хозяин - барин 07.02.05 14:21  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Но это всё равно мне не подходит. Я имел ввиду, что
> "настоящую" не-виртуальную, "железную" карточку
> по-определению в виртуалку не вставить. Делать же мост
> реальность-виртуальность, или эмулятор карточки - гораздо
> волокитнее чем отлаживаться "на железе".
Хотя как по мне, именно ОТЛАЖИВАТЬ (когда драйвер не просто неправильно работает, но валится при каждом удобном случае) лучше в виртуальной машине. По аналогии с mock object-ами сделать mock девайс, написать хотя бы десяток тестов и заставить их работать в этой среде. И только после более-менее приемлимой стабилизации переходить на реальное железо (собственно так и делаю - никогда не выпускаю драйвер в продакшн, пока не потещу на реальной машине, даже если он безукоризненно работает в виртуальной)
Идем на http://google.com и вводим 30.01.05 22:31  
Автор: Фдеук Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Писал как-то фиктивный драйвер единственно для доступа к
> kernel mode функциям. Драйвер, конечно, получился из
> семейства белки летяги: летал постоянно, естесснно вместе с
> осью. Недавно нашел время, поохотился на багов, большинство
> повывел. Но остался один особенно злобный: запускается
> драйвер, жмется Ctrl+Alt+Del --> Lock Computer -->
> Винда(WinXP) вылетает в трубу. Кто-нибудь знает, какие PnP
> пакеты идут при этом (другие просто не обрабатываются)?
>
> Немного offtop: А правда, что дляполноценнойотладки
> драйвера нужно вовсю иметь два соединенных компьютера, на
> одном - Debug версия винды, на другом - спецназ debugger.

Идем на http://google.com и вводим
IRP_MJ_PNP
Попадаем на страничку MSDN'а. Там внизу есть ссылка на
Plug and Play Minor IRPs.
Смотрим колонку
Function or Filter Driver for Nonbus Device

Еще можешь глянуть на устройство драйвера в
http://alter.org.ua/soft/win/ntpcidump/index.php
там есть простенький драйвер, который вполне прилично ведет себя под XP,
хотя о PNP ничего не знает. Зато у него корректный Unload().

Как уже правильно заметили - SoftIce справляется с задачей debugging'а и на одной машине.

--
Alter, http://alter.org.ua
Про PnP ничего не скажу - не знаю. А то что драйвер летит -... 28.01.05 23:25  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
Про PnP ничего не скажу - не знаю. А то что драйвер летит - так отладь его. СофтАйс нормально с драйверами работает.

> Немного offtop: А правда, что дляполноценнойотладки
> драйвера нужно вовсю иметь два соединенных компьютера, на
> одном - Debug версия винды, на другом - спецназ debugger.

ИМХО айса вполне достаточно.
Юзай DbgPrint и читай их прогой DbgView -... 28.01.05 22:57  
Автор: ih8u <i hate you> Статус: Member
<"чистая" ссылка>
> Немного offtop: А правда, что дляполноценнойотладки
> драйвера нужно вовсю иметь два соединенных компьютера, на
> одном - Debug версия винды, на другом - спецназ debugger.

Юзай DbgPrint и читай их прогой DbgView - http://www.sysinternals.com
Самый простой вариант!!
Или ты хочешь полноценную отладку с пошаговой трассировкой? Помоему это не реально :-\
1






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


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