Windows для профессионалов

вагилак купить

Дублирование описателей объектов - часть 2


Второй флаг приводит к закрытию описателя в процессе-источнике. Он позволяет процессам обмениваться объектом ядра как эстафетной палочкой. При этом счетчик объекта не меняется.

Попробуем проиллюстрировать работу функции Duplicatellandle на примере. Здесь S — это процесс-источник, имеющий доступ к какому-то объекту ядра, Т — это процесс-приемник, который получит доступ к тому же объекту ядра, а С — процесс катализатор, вызывающий функцию DuplicateHandle.

Таблица описателей в процессе С (см таблицу 3-4) содержит два индекса - 1 и 2. Описатель с первым значением идентифицирует объект ядра "процесс S", описатель со вторым значением — объект ядра "процесс Т"


Индекс

Указатель на блок
памяти объекта ядра

Маска доступа (DWORD
с набором битовых флагов)

Флаги (DWORD с
битовых флагов) набором

1

0xF0000000
(объект ядра процесса S)

0x????????

0x00000000

2

0xF0000010 (обьект ядра процесса Т)

0x????????

0x00000000

Таблица 3-4. Таблица описателей в процессе С

Таблица 3-5 иллюстрирует таблицу описателей в процессе S, содержащую единственную запись со значением описателя, равным 2. Этот описатель может идентифицировать объект ядра любого типа, а не только "процесс".


Индекс

Указатель на блок
памяти объекта ядра

Маска доступа (DWORD
с набором битовых флагов)

Флаги (DWORD с набором
битовых флагов)

1

0x00000000

(неприменим)

(неприменим)

2

0xF0000020
(объект ядра любого типа)

0x????????

0x00000000

Таблица 3-5. Таблица описателей в процессе S

В таблице 3-6 показано, что именно содержит таблица описателей в процессе Т перед вызовом процессом С функции DuplicateHandle. Как видите, в ней всего одна запись со значением описателя, равным 2, а запись с индексом 1 пока пуста.

Индекс

Указатель на блок памяти объекта ядра

Маска доступа (DWORD с набором битовых флагов)

Флаги (DWORD с набором
битовых флагов

1

0x00000000

(неприменим)

(неприменим)

2

0xF0000030
(объект ядра любого типа)

0x????????

0x00000000

<


Начало  Назад  Вперед



Книжный магазин