На главную страницу
Форум txt.version   




Статья :: Программирование систем защиты: Процедура распределения IRP_MJ_DEVICE_CONTROL драйвера контроля доступа
 

Процедура распределения IRP_MJ_DEVICE_CONTROL драйвера контроля доступа

Для взаимодействия с драйвером модифицированная библиотека GINA может использовать определенные контрольные коды, которые должен обрабатывать драйвер, например:

tdefine TDRV_hook (ULONG) CTL_CODE( FILEJ)EVICE_TDRV, 0x00,
METHOD_BUFFERED, FILE_ANY_ACCESS )
#define TDRV_unhook (ULONG)
METHOD_BUFFERED, FILE_ANY_ACCESS
#define TDRV_setkey (ULONG)
METHOD_BUFFERED, FILE_WRITE_ACCESS )
#define TDRV_test (ULONG) CTL_CODE( FILE_DEVICE_TDRV, 0x03,
METHOD_BUFFERED, FILE_WRITE_ACCESS ) .

Тогда процедура обработки контрольных кодов драйвера Tdrv может быть следующей:

BOOLEAN TdrvDeviceCon.trol ( IN PFILE_OBJECT FileObject, IN BOOLEAN Wait,
.IN PVOID InputBuffer, IN ULONG InputBufferLength, OUT PVOID OutputBuffer, IN ULONG OutputBufferLength,
IN ULONG loControlCode, OUT PIO_STATUS_BLOCK loStatus, IN PDEVICE_OBJECT DeviceObject ) { UCHAR ProcName[256] ;
int tg_gina_work, i;
IoStatus->Status = STATUS_SUCCESS; IoStatus->Information = 0; switch ( loControlCode ) { case TDRV_version:
//возвратить версию драйвера контроля доступа *(ULONG *)OutputBuffer = TDRVVERSION; IoStatus->Information = sizeof(ULONG);
break;
case TDRV_hook:
//заменить обработчики открытия, //создания и удаления файлов HookFileOperation() ; break;
case TDRV_unhook:
//восстановить обработчики открытия, //создания и удаления файлов UnhookRegistry(); break;
case TDRV_test:
//протестировать криптографические функции в //процедуре test_crypto {
tg_no_work=0;
if(test_crypto()!=0) tg_no_work=l; break;
}
case TDRV_setkey:
//передать ключ шифрования драйверу, //если текущий процесс winlogon {
tg_gina_work=0;. GetProcess(ProcName); ToLowerStr(ProcName);
// условная процедура перевода символов в // строчные
if(strcmp(ProcName,"winlogon.exe")==0) tg_gina_work=l; if ((InputBufferLength != sizeof(TDRV_IOCTL)) || (InputBuffer == NULL ) I I (tg_gina_work==0))
{
IoStatus->Status = 1; break;
} RtlMoveMemory( UserKey,,
((PTDRV_IOCTL)InputBuffer)->UserKey,
KEY_SIZE ); RtlMoveMemory( Userld,
((PTDRV_IOCTL)InputBuffer)-XJserld, USER ID SIZE ); "
RtlMoveMemory( UserStatus, l
((PTDRV_IOCTL)InputBuffer)->UserStatus,
USER_STATUS_SIZE ); IoStatus->Status = STATUS_/_SUCCESS; break;
default:
IoStatus->Status - STATUS_INVALID_DEVICE_REQUEST; break;
return TRUE;

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

 

Программирование систем защиты: Процедура распределения IRP_MJ_DEVICE_CONTROL драйвера контроля доступа

страницы в данном разделе 
 Программирование систем защиты: Глава 5. Общие вопросы обеспечения безопасности в операционной среде Windows NT/2000  Программирование систем защиты: Механизм идентификации и аутентификации в ОС Windows NT.Общее описание
 Программирование систем защиты: Основные сведения о процессе Winlogon и его состояниях  Программирование систем защиты: Протокол взаимодействия процесса Winlogon и библиотеки GINA
 Программирование систем защиты: Локальная аутентификация пользователя в Windows NT  Программирование систем защиты: Сетевая аутентификация пользователя в Windows NT
 Программирование систем защиты: Основные подходы к созданию изолированной программной среды  Программирование систем защиты: Макет системы защиты от несанкционированного доступа
 Программирование систем защиты: Перехват операций открытия, создания и удаления файлов  Программирование систем защиты: Собственный обработчик создания файла и собственный обработчик открытия файла
 Программирование систем защиты: Определение имени процесса  Программирование систем защиты: Вывод сообщений на «синий» экран
 Программирование систем защиты: Процедура распределения IRP_MJ_DEVICE_CONTROL драйвера контроля доступа  Программирование систем защиты: Модифицированная библиотека Gina


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)
Flutter
React Native
Xamarin

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста
©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
React Native
demo forum