Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2015_лекции / Лекция №5_2015

.pdf
Скачиваний:
58
Добавлен:
22.03.2016
Размер:
3.84 Mб
Скачать

Службы Windows

Варианты запуска службы

0 — Низкоуровневые драйверы, например, драйверы дисков, которые загружаются на самом раннем этапе загрузки — загрузки ядра;

1 — Драйверы, которые загружаются после инициализации ядра ОС;

2 — Службы, которые должны быть загружены диспетчером управления службами (равен параметру —

«Авто»);

3 — Службы, запускаемые диспетчером управления службами только в случае получения явной инструкции на загрузку (равен параметру — «Вручную»);

4 — Службы, которые не загружаются (равен параметру

— «Отключено»).

Службы Windows

Службы Windows

API для работы со службами

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

CreateService добавляет новую службу, и позволяет создающему процессу указать, запускать ли службу автоматически при запуске ОС или в ручном режиме.

StartService запуск службы, используется в том случае, если служба запускается в ручном режиме.

Процессы

Процесс располагает определенными ресурсами. Он размещен в некотором виртуальном адресном пространстве, содержащем образ этого процесса.

Процесс управляет другими ресурсами (файлы, устройства ввода / вывода и т.д.).

Процесс подвержен диспетчеризации.

Процесс может содержать несколько нитей.

Процессы

BOOL CreateProcess(

 

LPCTSTR lpApplicationName ,

// имя исполняемого модуля

LPTSTR lpCommandLine,

// командная строка

LPSECURITY_ATTRIBUTES lpProcessAttributes , // SD (дескриптор

 

безопасности)

LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD

BOOL bInheritHandles,

// дескриптор параметра

 

наследования

DWORD dwCreationFlags,

// флажки создания

LPVOID lpEnvironment,

// новый блок конфигурации

LPCTSTR lpCurrentDirectory,

// имя текущего каталога

LPSTARTUPINFO lpStartupInfo,

// информация предустановки

LPPROCESS_INFORMATION lpProcessInformation // информация о процессе

);

Потоки (Threads)

Потоки внутри процесса разделяют общее адресное пространство и ресурсы. Однако оперируют собственными регистрами процессора и стекомю Эти значения хранятся в специальной структуре thread context.

Потоки (Threads)

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes, // дескриптор защиты

SIZE_T dwStackSize, // начальный размер стека

LPTHREAD_START_ROUTINE lpStartAddress, // функция

 

потока

LPVOID lpParameter,

// параметр потока

DWORD dwCreationFlags,

// опции создания

LPDWORD lpThreadId

// идентификатор потока

);

Потоки (Threads)

Способы использования функции

для загрузки ВрПО в адресное пространство другого процесса.

для создания двух потоков отправки и получения данных

Процессы и потоки

TEB = Thread Environment Block

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

Windows использует сегмент fs для его хранения (смещение 0x18 – указатель на себя)

mov eax, fs:[0x18]

PEB = Process Environment Block

Контейнер для хранения определенных параметров процесса (указатель на список загруженных модулей, статус отладчика, переменные окружения)

TEB есть указатель на структуру PEB по смещению 0x30

Структуры важны при анализе кода

Имеется список загруженных модулей (Peb.Ldr)

Есть проверка на использование отладчика (PEB.BeingDebugged)

Используется для установки обработчика исключений

(TEB.NtTib.ExceptionList)

Мьютексы

Механизм контроля доступа к ресурсам.

Только один поток имеет доступ к мьютексу во время исполнения.

Во ВрПо часто используются жестко прописанные имена мьютексов для организации взаимодействия между вредоносными процессами => их можно использовать как признак заражения системы

Соседние файлы в папке 2015_лекции