Создание VxD на Visual C++ без ассемблерных модулей

       

Создание VxD на Visual C++ без ассемблерных модулей

Создание VxD на Visual C++ без ассемблерных модулей
Создание VxD на Visual C++ без ассемблерных модулей - 2
Смысл и назначение драйвера
Имя и идентификатор драйвера
Статические и динамические драйверы

Порядок загрузки статических драйверов
Системные сообщения драйверу
Сервисные функции драйвера
Интерфейс с прикладными программами
Структура и функционирование драйвера
Секции файла драйвера
Блок описателя драйвера
Контексты
Доступ к памяти
Повторная входимость

Загрузка, работа и выгрузка драйвера
Среда выполнения
Стандартные библиотеки
Вспомогательные функции (wrappers)
Функции, вызываемые извне
Неявные обращения к функциям поддержки
Экспорт ссылки на DDB
Структура DEF-файла для построения VxD
Установки компилятора и компоновщика
Параметры секций

Отладка
Общая схема драйвера VxD
Средства разработки, включаемые файлы и библиотеки
VxD_Desc_Block - блок описателя устройства
Client_Reg_Struc - структура пакета регистров клиента
DIOCParams - параметры запроса DeviceIoControl
Диспетчер системных сообщений
Обработчики сервисных функций
Обработчики вызовов API
DEVICE_INIT - инициализация статического драйвера

SYS_DYNAMIC_DEVICE_INIT - инициализация динамического драйвера
DEVICE_EXIT - завершение динамического драйвера
CREATE_VM - создание новой виртуальной машины
VM_INIT - инициализация новой виртуальной машины
VM_TERMINATE - завершение виртуальной машины
DESTROY_VM - уничтожение виртуальной машины
CREATE_THREAD - создание новой задачи
THREAD_INIT - инициализация новой задачи
TERMINATE_THREAD - завершение задачи
DESTROY_THREAD - уничтожение задачи

SYSTEM_EXIT - завершение работы системы
W32_DEVICEIOCONTROL - запрос от приложения Win32
VMMCall, VMMJmp, VxDCall, VxDJmp - вызов сервисных функций VxD
_SelectorMapFlat - отображение сегментного адреса в линейный
Out_Debug_String - вывод отладочного сообщения
_Sprintf - форматирование строки
Пример построения функции-обертки
Пример простого VxD

Защита информации в Интернет

Когда в лесу падает дерево и никого нет поблизости, в любом случае раздается громкий треск. Однако если компьютерная сеть содержит изъян в системе защиты и никому об этом неизвестно, то на первый взгляд кажется, что такую сеть можно считать надежной. Лишь самый большой идеалист может поспорить с этим утверждением, однако очень скоро вы увидите, что все далеко не так очевидно.
Сеть с изъяном в подсистеме зашиты оказывается незащищенной для тех, кому известно об этой бреши. Если о ней не знает никто, т.е. изъян до настоящего момента еще не был обнаружен, то можно считать, что сеть в безопасности. Если хотя бы один человек узнает об этом слабом месте, то сеть станет для него уязвимой, однако она по-прежнему будет защищенной от всех остальных. Если же о недостатке станет известно производителю оборудования... Если специалисты какой-либо исследовательской группы узнают об этом... Если эта информация попадет в руки сообщества хакеров... В любой из этих ситуаций незащищенность сети возрастет во много раз и эта новость мгновенно станет всеобщим достоянием.
Так ли это на самом деле? Изъян существует независимо от того, известно о нем кому-либо или нет. Опубликование материалов на этот счет напрямую не приводит к незащищенности сети. Подобное утверждение может сбить с толку. Публикация материалов повышает вероятность того, что взломщик воспользуется этим слабым местом, однако это никак не характеризует сам изъян. В то же время информационные сообщения увеличивают и вероятность того, что будут предприняты соответствующие контрмеры. Точно так же, как злоумышленник не сможет воспользоваться неизвестным изъяном, так и защитить сеть нельзя будет до тех пор, пока о ее слабом месте не станет известно.
Так что сохранение информации об обнаруженном изъяне в секрете является далеко не лучшим способом борьбы с ним. Такой подход оказывается полезным лишь до того момента, пока этот секрет таковым и будет оставаться. Однако все, что связано с информацией, приводит к ее распространению. Одни разглашают секреты случайно. Другие — с определенными целями. Иногда секреты попадают в руки третьих лиц. Однако как только эта информация перестала быть секретной, ее уже никогда не удастся спрятать.
Процесс обеспечения безопасности, при котором полученные данные без ограничения предоставляются широкой общественности, оказывается наиболее робастным. Конечно, взломщики тоже узнают об этом, однако они смогут получить требуемую информацию и в любом другом случае. Что более существенно, важные данные станут доступны и специалистам, разрабатывающим системы защиты, производителям программного и аппаратного обеспечения, которые смогут устранить обнаруженные изъяны и выпустить соответствующие модули обновления, и системным администраторам, которые смогут принять требуемые контрмеры. Чем больше людей знают об изъяне, тем больше повышается вероятность его устранения. Настроив себя на предоставление информации, а не на ее сокрытие, вы способствуете повышению уровня защищенности, а не его понижению.

Предварительный сбор данных
Сканирование
Инвентаризация
Уязвимость WINDOWS 95/98/ME
Уязвимость WINDOWS NT
Перехват паролей передаваемых по сети

Уязвимость WINDOWS 2000
Уязвимость NOVELL NETWARE
Уязвимость UNIX
Общедоступные для записи файлы

Содержание раздела