Читайте также: |
|
Windows поддерживает набор флагов, который хранится в общесистемной глобальной переменной NTGlobalFlag (слайд 60). Она предназначена для контрля функционирования ОС, отладки, трассировки. При загрузке ОС она инициализируется значением параметра GlobalFlag из раздела реестра SessionManager (слайд 60). По умолчанию значение его равно нулю.
Каждый образ исполняемого модуля также имеет набор флагов. Замечание: к сожалению, недокументированы.
В некоторых Windows SDK имеют утилиту cflag.exe (слайд 60), которая позволяет просматривать и изменять глобальные флаги как в реестре, так и в системе в целом. Замечание: после того, как флаг изменен, может потребоваться перезагрузка системы. Перечень системных флагов изображен на слайде. Чтобы посмотреть их значения, можно взять Windows Debugger и по Handle в индексе их найти. Флаги можно также высветить в Windows Debugger по соответствующей команде:!gflags.
LPC
LPC – механизм связи между процессами с помощью высокоскоростной передачи сообщений. RPC используется не только в ОС Windows, а также в распределенных сетевых инфраструктурах, работающих по принципу «клиент-сервер». Клиент вырабатывает транзакцию, которая приходит на сервер. Сервер выполняет ее (происходит удаленный вызов процедуры) и возвращает клиенту результат.
Замечание: одним из механизмов защиты при этом является механизм защиты транзакций (реализован, например, в продукте или системе Kerberos).
Windows LPC применяется Windows приложениями, использующими LPC, документированные в API для взаимодействия одного приложения с другим (процесс - процесс). Для выполнения ОС некоторых функций, которые выполняются по запросу механизма LPC.
Процесс Winlogon взаимодействвует с процессом авторизации тоже через LPC.
Монитор состояния защиты также применяет механизмы LPC.
LPC использует понятие «порт LPC» или соответствующие объекту. Его можно посмотреть с помощью утилиты WinObj. Объекты, открытые LPC – порт LPC, можно также посмотреть с помощью Win Debugger:!lpc.
Надо помнить, что LPX в основном реализует клиент-серверную модель в Windows. Т.е. взаимодействие между процессами (приложениями) осуществляется через ядро.
LPC предусматривает три способа обмена сообщениями:
1) сообщение длиной меньше 256 байт передается с помощью адреса буфера, в котором оно находится, далее по этому адресу сообщение копируется в буфер получателя (процесса-получателя);
2) для сообщения длиной больше 256 байт отводится раздел реальной ОП, куда оно помещается. Через механизм прерывания получателю сообщается, что для него есть адрес области раздела, в котором хранится длинное сообщение;
3) если сообщение чрезвычайно большое (большой буфер), то предусмотрено непосредственное обращение в буфер приложения-источника и его копирования получателю.
LPC применяет единственный объект port LPC. Порты бывают следующих типов:
1) порт серверного соединения – точка для связи с сервером;
2) порт именованный – через него приложения могут соединяться по API с сервером;
3) коммуникационный порт сервера – безымянный порт, который использует сервер для связи с клиентом, сам определяет его идентификатор.
4) коммуникационный порт клиента – порт, который определяет клиент для связи с сервером. Приложение определяет само его идентификатор. Замечание: типы портов представлены как параметры в соответствующих API;
5) безымянный коммуникационный порт – создаваемый для связи между двумя потоками одного процесса. Примечание: механизм очень сходен с реализацией взаимодействия виртуальных машин в ОС IBM VM/SP (1985-1990). Средство взаимодействия с виртуальными машинами называется VMCF (Virtual Machine Communication Facility).
LPC функционирует следующим образом: сервер создает именованный порт соединения, клиент посылает в него запрос на установление связи. Если запрос удовлетворен, создается два безымянных порта: коммуникационный порт клиента и коммуникационный порт сервера, при этом клиент получает описатель порта клиента, а сервер – порта сервера, и организуется обмен. Схема взаимодействия показана на слайде 62.
Дата добавления: 2015-07-07; просмотров: 173 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Необработанные исключения | | | Трассировка событий ядра |