Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Трассировка событий ядра

Читайте также:
  1. Библейские пророки видели приближение этих событий, указывающих на начало «конца дней», о котором они возвестили от имени Бога.
  2. Вероятность редких событий. Формула Пуассона
  3. Воздействия на вероятность событий
  4. Вычислить вероятности событий, используя классическое определение вероятности или теоремы вероятностей.
  5. Дерево событий
  6. Завершение ввиду будущих событий
  7. Методики оценки техногенного риска. «Дерево отказов и дерево событий».

Компоненты, как правило, всех версий ядра и базовые драйвера оснащены средствами, осуществляющими трассировку событий в ядре. Трассировка используется разработчиками при анализе нештатной ситуации.

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

Трассировочные данные использует компонента, работающая в режиме пользователя, которая называется ETW (Event Tracing for Windows). Возможно использовать следующие опции этого приложения:

1) начинать и прекращать сессию протоколирования;

2) увеличивать и уменьшать буферные пулы;

3) определять те или иные события для протоколирования;

4) определять тот или иной объект, с которого надо снимать трассировочные данные.

К продуктам, реализующим механизмы ETW относятся: Active Directory и т.д. В целом выделяются так называемые классы трассировки, мониторинг которых можно осуществлять, а именно:

1) дисковый ввод-вывод,

2) файловый ввод-вывод,

3) конфигурирование, переконфигурирование оборудования,

загрузка-выгрузка образов, ошибки (отсутствие в реальной ОП виртуальных страниц),

4) создание, удаление процессов,

5) создание, удаление потоков,

6) сетевая активность.

Замечание: необходимо их применять для построения систем обнаружения вредоносной активности.

 

Wow64

Основная задача – эмуляция Win32 в 64-разрядную Windows.

Примечание: задача приблизительно такая же как обеспечение выполнения 16-разрядных DOS приложений в 32-разрядной Windows.

Процессоры 16-, 32-, 64-разрядные имеют разную систему команд, разное количество и форматы регистров, доступные пользовательскому коду и могут вызвать при запуске приложений конфликтные ситуации.

Wow64 относится к механизму Windows, которые дает возможность выполнять 32-разрядные приложения в 64-разрядной Windows. Компонента реализована как модель DLL пользовательского режима и включает:

1) wow64.dll – управляет созданием процессов и потоков, подключается к диспетчеризации исключений и перехватывает выполнение базовых системных функций в NTOSKrnl.exe.

Выполняет также специфические функции: перенаправление файловой системы, перенаправление реестра, отражение.

2) wow64cpu.dll – управляет 32-разрядным контекстом процессора каждого потока и предоставляет специфичную для процессорной архитектуры потока поддержку из режима 32-разрядного в режим 64-разрядный и наоборот.

3) wow64win.dll – осуществляет перехват системных функций по управлению графикой (выполняемых win32k.sys). Взаимосвязь этих компонент показана на слайде 64.

Идея: wow64 ставит ловушки на всех путях выполнения, где 32-разрядный код взаимодействует с 64-разрядным. И наоборот, 64-разрядному коду надо обращаться к 32-разрядному.

При создании процесса 32-разрядного приложения диспетчер процессов проецирует в его адресное пространство 64-разрядную библиотеку ntdll.dll. 64-разрядный загрузчик проверяет, к какой платформе относится исполнительный код. Если он относится к 32-разрядной x86, то загружает wow64.dll. После этого wow64 начинает использовать 32-разрядную ntdll, которая есть в 64-разрядной Windows. Wow64 настраивает в ntdll и переключает процессор в 32-разрядный режим и выполнять 32-разрядный загрузчик (т.е. как идет в 32-разрядной системе). В каталоге Windows/SysWow64 находятся специальные 32-разрядные версии ntdll.dll, user32.dll и gdi32.dll. Они вызывают Wow64, который, в свою очередь, переключает процессор в 64-разрядный режим, захватывает параметры, связанные с 32-разрядным вызовом, преобразует их в 64-разрядные и осуществляет вызов на исполнение соответствующий 64-рязрядный Windows. Приложение выполняется. При завершении преобразует из 32-разрядного в 64-разрядный.

Wow64 также перехватывает диспетчеризацию исключений. Идея: всякий раз, когда 64-разрядное ядро собирается направить исключение процессу Wow64, он (Wow64) перехватывает и создает 32-разрядные исключения и отдает процессу так как это было бы при 32-разрядном режиме.

Перенаправление файловой системы. Идея: имена системных каталогов для 32- и 64-разрядных Windows остаются те же, поэтому в system32 содержатся 64-разрядные исполнительные файлы.

Примечание: т.к. Wow64 ставит все ловушки на системные вызовы, осуществляется трансляция всех API вызовов, относящихся к путям на каталог Windows/SysWow64.

Замечание: в каталоге windows/system32 есть несколько подкаталогов, которые не участвуют в перенаправлении, т.е. 32-разрядные приложения обращаются к ним напрямую.

Перенаправление реестра и отражение. Приложения хранят свои конфигурационные файлы в реестре, они записываются, как правило, в ходе регистрации. Если один и тот же компонент поочередно регистрируется как 32-разрядный и 64-разрядный, то последний остается в реестре, т.к. они пишутся по одному и тому же адресу. Для того, чтобы устранить эту проблему, не модифицируя 32-разрядные компоненты, в 64-разрядной Windows реестр делится на две части (Native и Wow64). По умолчанию 32-разрядные компоненты получают доступ к 32-разрядной части, а 64-разрадные соответственно к 64-рязрядной. Wow64 перехватывает все системные вызовы к реестру и осуществляет перенаправление.

Отражение – самостоятельно.

Запросы на управление вводом-выводом

Для выполнения 32-разрядных приложений управление вводом-выводом осуществляется через API DeviceControlFile (слайд 65). При вызове этой функции указывается входной и выходной буфер в зависимости от операции. Если процесс является процессом Wow64, то у 32- и 64-разрядного драйвера устройства разные представления о структуре. Например, 32-разрядные используют 4-байтные указателя, а 64-разрядные – 8-байтные. Поэтому запрос на ввод-вывод осуществляется в зависимости от того, какой процесс. Чтобы узнать, к 32-разрядному или 64-разрядному он принадлежит, можно воспользоваться API.

Следующий нюанс, связанный с переносом. Wow64 не поддерживает выполнение 16-разрядных приложений в целом, но некоторые компоненты Wow64 имеют возможность выполнять некоторые наиболее известные 16-разрядные программы. Когда поступает на выполнение 16-разрядное приложение и необходимо выполнить CreateProcess по нему, осуществляется проверка, относится ли данное приложение к поддерживаемым программам Wow64. Происходит запуск CreateProcess, но в зависимости от того, что это за приложение.

Печать. 32-разрядные драйвера устройств и 64-разрядные несовместимы. Поэтому создан механизм SPLWow64.exe, поддерживающий печать из 32-разрядных приложений в 64-разрядном Windows.

 

Windows NT и NTFS


Дата добавления: 2015-07-07; просмотров: 141 | Нарушение авторских прав


Читайте в этой же книге: Многопроцессорная обработка | Подсистема окружения | Подсистема окружения Windows | Исполнительная система Windows | Драйверы устройств в ОС Windows | Виртуальная память | Уровни запросов программных прерываний | Программные прерывания | Диспетчеризация исключений | Необработанные исключения |
<== предыдущая страница | следующая страница ==>
Глобальные флаги Windows| Создание процессов

mybiblioteka.su - 2015-2024 год. (0.006 сек.)