Есть вопрос?
Зайди на форум

Поиск:

Denix: русификация Ubuntu и кодеки :: RSS:: Скачать книги Колисниченко в PDF

Англо-русский словарь компьютерных терминов (Д. Колисниченко)

A  B  C  D  E  F  G  H  I  K  L  M  N  O  P  Q  R  S  T  V  W  X  Y  Z 

укрпочта отслеживание посылок перевод денег график отключения света в Кировограде график отключения счета в Киеве график отключения света в Одессе (zip)

Книга Д. Колисниченко Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.

9.2. Пакеты запроса ввода/вывода

IRP (Input/output Request Packages) - это пакеты запроса ввода/вывода. Чтобы взаимодействовать с пользовательской программой (программой пользовательского уровня, которой является наш пользовательский компонент ядра), драйвер устройства (компонент уровня ядра) должен обрабатывать пакетами IRP. Тут ничего сложного нет - это всего лишь структуры данных, содержащие буферы для хранения/передачи данных.

Для аналогии можно привести пример с обычной записью файла. Программа открывает файл. В случае успешного открытия она получает дескриптор файла, который она будет использовать в операциях ввода/вывода с файлом. После этого программа может, например, записать данные в файл или прочитать данные из файла.

На уровне ядра операция записи воспринимается как IRP. Предположим, что пользовательский компонент записал в дескриптор строку "HELLO! I'm here", то компонент уровня ядра получит буфер, содержащий эту строку.

Для обработки IRP компоненту ядра нужна специальная функция-обработчик. Аналогично, как мы устанавливали функцию RUnLoad, мы можем установить функцию для обработки IRP. Предположим, что она называется irp_handler:

NTSTATUS irp_handler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)

{

Irp->IoStatus.Status = STATUS_SUCCESS;

IoCompleteRequest(Irp, IO_NO_INCREMENT);

return STATUS_SUCCESS;

}

 

void RUnload(IN PDRIVER_OBJECT Driver)

{

DbgPrint("Unloading…");

}

 

NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver, IN PUNICODE_STRING RegPath)

{

int I;

Driver->DriverUnload = RUnload;

for (I=0; I < IRP_MJ_MAXIMUM_FUNCTION; I++)

{

Driver->MajorFunction[i] = irp_handler;

}

return STATUS_SUCCESS;

}

На рисунке 9.2 показано, как пользовательская программа будет обращаться к нашему драйверу:

Рис. 9.2. Взаимодействие пользовательского компонента с компонентом уровня ядра через IRP

Обратите внимание на рисунок 9.2. Пользовательская программа просит выполнить драйвер определенные действия - write, read и ioctl. Но драйвер переадресовывает все действия одной и той же функции. Неправильно? Конечно. Такую модель мы сейчас рассматриваем для простоты, чтобы вы поняли, что и как происходит. На практике же для каждого действия должна быть своя собственная функция.

Давайте реализуем более сложную модель, в которой для каждого действия будет реализована своя функция. Предположим, что наш драйвер позволяет выполнять над устройством следующие операции:

Ясно, что сначала нужно объявить все эти функции. Причем сделать это нужно до функции DriverEntry. Пока это будут функции-заглушки - они будут объявлены, но не будут выполнять никаких действий, кроме возвращения статуса операции - STATUS_SUCCESS (операция успешна):

NTSTATUS my_open(IN PDEVICE_OBJECT Device, IN PIRP Irp)

{

return STATUS_SUCCESS;

}

 

NTSTATUS my_close(IN PDEVICE_OBJECT Device, IN PIRP Irp)

{

return STATUS_SUCCESS;

}

 

NTSTATUS my_write(IN PDEVICE_OBJECT Device, IN PIRP Irp)

{

return STATUS_SUCCESS;

}

 

NTSTATUS my_read(IN PDEVICE_OBJECT Device, IN PIRP Irp)

{

return STATUS_SUCCESS;

}

NTSTATUS my_iocontrol(IN PDEVICE_OBJECT Device, IN PIRP Irp)

{

PIO_STACK_LOCATION irp_sp;

ULONG func_code;

irp_sp = IoGetCurrentIrpStackLocation(Irp);

func_code = irp_sp->Parameters.DeviceIoControl.IoControlCode;

switch (func_code)

{

// произвести действие по коду функции

}

return STATUS_SUCCESS;

}

Теперь нужно модифицировать функцию DriverEntry. Удалите цикл

for (I=0; I < IRP_MJ_MAXIMUM_FUNCTION; I++)

{

Driver->MajorFunction[i] = irp_handler;

}

А также объявление переменной I - ни цикл, ни переменная нам больше не нужна. Сейчас мы заполним массив MajorFunction вручную:

Driver->MajorFunction[IRP_MJ_CREATE] = my_open;

Driver->MajorFunction[IRP_MJ_CLOSE] = my_close;

Driver->MajorFunction[IRP_MJ_READ] = my_read;

Driver->MajorFunction[IRP_MJ_DEVICE_CONTROL] = my_iocontrol;

Как вы уже догадались, IRP_MJ_* - это константы, содержащие коды функций открытия, закрытия, записи, чтения и управления устройством. Можно было бы использовать и числовые значения, но так будет нагляднее.

Также можно удалить функцию irp_handler - она там тоже больше не понадобится.

После того, как вы все это проделаете, наша схема обработчиков IRP-пакетов будет выглядеть так:

Рис. 9.3. Измененная схема взаимодействия пользовательской программы и драйвера

На главную

Мне нравится!

Сегодня: 16/01

Именинники:  Андрюха aka host

Последние посты форума

Интересная картинка

Samsung Galaxy J2 Prime (SM-G532F)

дааа

Обучение PHP-программированию

Новый дизайн сайта

Возвращение на динамическую страницу сайта

С Новым Годом!

Бесплатный хостинг, SSL сертификат, не ограниченно

капец погода в ноябре у нас

Посоветуйте хостинг

флэшмобы

вот люди где живут... экстрим

авто-дилеры

Программы для Linux

книга Командная строка Linux и автоматизация рутинных задач

Совет:

Книги Д. Колисниченко:

Linux

Linux-сервер своими руками, изд. 1-4Linux-сервер своими руками, изд. 1-4
Все о настройке Linux-сервера на базе дистрибутивов Linux Mandriva и Fedora Core. В четвертом издании книга была немного дополнена и существенно обновлена. Книга давно устарела. Рекомендую "Серверное примерение" (издательство БХВ)                                                                       

Android для пользователя. Полезные программы и советы. 2-е издAndroid для пользователя. Полезные программы и советы. 2-е изд
Рассмотрены самые интересные, полезные и наиболее популярные среди отечественных пользователей Android-приложения. Даны советы, как превратить Android-устройство в пульт дистанционного управления компьютером, организовать покадровую съемку, загружать                                                   

Серверное применение Linux, 2 изд. Серверное применение Linux, 2 изд.
Для администраторов Linux описана настройка различных типов серверов: Web, FTP, DNS, DHCP, почтового сервера, сервера баз данных. Подробно рас-смотрена установка и тонкая настройка операционной системы. Описана настройка связки Apache + MySQL + PHP.                                                    

PHP

PHP и MySQL. Разработка Web-приложений. 4-е издPHP и MySQL. Разработка Web-приложений. 4-е изд
Даны начала программирования на PHP: установка и настройка Apache, PHP, MySQL и кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка и самые полезные функции PHP 5.4. Рассмотрено создание собственного движка сайта и ряда дополни                                                   

PHP 5/6 и MySQL 6. Разработка Web-приложений. 3-е издPHP 5/6 и MySQL 6. Разработка Web-приложений. 3-е изд
Даны начала программирования на PHP: установка и настройка PHP и MySQL, выбор редактора PHP-кода, основы синтаксиса и самые полезные функции PHP.                                                                                                                                                            

PHP 5/6 и MySQL 6. Разработка Web-приложений. 2-е издPHP 5/6 и MySQL 6. Разработка Web-приложений. 2-е изд
На практических примерах описана разработка Web-приложений на языке PHP версий 5 и 6. Большая часть кода примеров совместима с обеими версиями PHP, но особое внимание уделено новым функциям PHP 6. Даны начала программирования на PHP: установка и наст                                                   

Интернет/CMS

Интернет: от Интернет: от "чайника" к пользователю. - 3-е изд
Книга предназначена для начинающего домашнего пользователя, поможет ему самостоятельно освоить основы Интернета и начать уверенную работу. Рассмотрены все аспекты работы в Интернете: выбор подключения, настройка подключения обычного, ADSL- и 3G-модем                                                   

Выбираем лучший бесплатный движок для сайта. CMS Joomla! и Drupal Выбираем лучший бесплатный движок для сайта. CMS Joomla! и Drupal
Книга ориентирована как на обычных пользователей Интернета, которым нужно в кратчайшие сроки создать свой сайт, так и на разработчиков, которые заинтересованы в построении собственной CMS                                                                                                                  

Facebook. Полное руководствоFacebook. Полное руководство
Эта книга — простое и эффективное учебное пособие по изучению, освоению и успешному использованию всех доступных инструментов популярной социальной сети Facebook                                                                                                                                            

Компьютер/Windows

Первые шаги с Windows 7. Руководство для начинающих (+Видеокурс на CD)Первые шаги с Windows 7. Руководство для начинающих (+Видеокурс на CD)
Просто и понятно для начинающих пользователей описана операционная система Windows 7 и ее новые возможности. Рассказано, как установить Windows 7 (в том числе на нетбук)                                                                                                                                    

Секреты, настройка и оптимизация реестра Windows 7Секреты, настройка и оптимизация реестра Windows 7
Рассмотрено устройство, настройка и оптимизация реестра, секреты и трюки при работе с ним, параметры популярных Windows-приложений. Описаны программы для мониторинга...                                                                                                                                     

Супер Флешка. 150 лучших программ, игр и утилит, работающих прямо с флешкиСупер Флешка. 150 лучших программ, игр и утилит, работающих прямо с флешки
На сегодняшний день практически у каждого пользователя компьютера имеется флешка, которая используется для переноса файлов                                                                                                                                                                                   

Сети

Беспроводная сеть дома и в офисеБеспроводная сеть дома и в офисе
Книга поможет начинающему администратору домашней или офисной сети в кратчайшие сроки развернуть, настроить или модернизировать беспроводную сеть. Отличный выбор для построения сети SOHO                                                                                                                   

Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.
Книга о настройке сети в Windows (98,NT,XP) и Linux. Является превосходным практическим руководством по созданию и обслуживанию компьютерных сетей.                                                                                                                                                          

Самоучитель системного администратора. 4-е изд.Самоучитель системного администратора. 4-е изд.
Изложены основные задачи системного администрирования, описаны базовые протоколы, даны рекомендации по выбору оборудования и проведению ежедневных рутинных операций. Подробно раскрыты технологии, используемые при построении информационных систем, опи                                                   

Безопасность

Анонимность и безопасность в Интернете. От Анонимность и безопасность в Интернете. От "чайника" к пользователю
Простым и понятным языком рассказано, как скрыть свое местонахождение и IP-адрес, используя анонимные сети Tor и I2P, посетить заблокированные администратором сайты, защитить личную переписку от посторонних глаз                                                                                          

Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.
-                                                                                                                                                                                                                                                                                                            

Автомобили

150 ситуаций на дороге, которые должен уметь решать каждый водила150 ситуаций на дороге, которые должен уметь решать каждый водила
Опытный инструктор кратко и четко расскажет, что следует делать водителю в 150 самых различных ситуациях на дороге, которые могут опустошить ваш кошелек, испортить нервы или здоровье                                                                                                                       

Новичок за рулем. Советы психолога, юриста, инструктора.Новичок за рулем. Советы психолога, юриста, инструктора.
Книга первая. Рекомендуется всем начинающим водителям. Текст этой книги бесплатно доступен в моем блоге http://dkws.net                                                                                                                                                                                      

Что делать, чтобы не надули в автосервисе. Советует и рекомендует президент клуба BMWЧто делать, чтобы не надули в автосервисе. Советует и рекомендует президент клуба BMW
В этой книге речь пойдет о том, как правильно выбрать СТО; о преимуществах и недостатках гарантии; о том, как не дать в автосалоне навязать себе дополнительную комплектацию                                                                                                                                

Переводные книги

Переводные книгиПереводные книги
Данные книги были переведены мною на русский язык (с английского и чешского). Надеюсь качество перевода вам понравится!                                                                                                                                                                                      

Android

Планшет и смартфон на базе Android для ваших родителей, 2-е изд.Планшет и смартфон на базе Android для ваших родителей, 2-е изд.
Книга знакомит читателя с мобильными устройствами на базе Android. Она написана простым и понятным языком для людей среднего и старшего возраста                                                                                                                                                             

Планшет и смартфон на базе Android для ваших родителейПланшет и смартфон на базе Android для ваших родителей
Книга рассчитана на людей среднего и старшего возраста. Она поможет освоить современный «карманный компьютер» на базе Android, в котором все новое и "не так, как в Windows". Доступным языком описывается, как включить и выключить смартфон и т.д.                                                         

Безопасный Android: защищаем свои деньги и данные от кражиБезопасный Android: защищаем свои деньги и данные от кражи
Рассмотрены различные способы обеспечения безопасности Android-устройств: шифрование персональной информации, хранящейся на устройстве, шифрование передаваемых данных, VPN-соединения, анонимизация трафика                                                                                             

Статьи

Rambler's Top100