Jeżeli kiedykolwiek bardziej wnikliwie analizowaliśmy listę procesów widoczną po wywołaniu systemowego Menedżera zadań, powinniśmy zwrócić uwagę na intrygujący proces svchost.exe. Pół biedy jeżeli występuje on w jednej kopii. Często jednak zdarza się, że wątków o podanej nazwie jest co najmniej kilka, a w dodatku pochłaniają one znaczny procent mocy obliczeniowej komputera. Na wstępie trzeba zaznaczyć, iż poza kilkoma wyjątkami (o których poniżej) jest to zupełnie normalna sytuacja, ponieważ można powiedzieć, że svchost jest funkcją odpowiedzialną za wywoływanie innych systemowych mechanizmów. To kluczowy proces zapewniający systemowi funkcjonowanie.
Zasada działania i wiele kopii
Znaczna część usług stworzonych na potrzeby systemu operacyjnego Windows została zaprogramowana w bibliotekach DLL. Jako, że system nie jest w stanie wywoływać tego typu plików bezpośrednio, czyni to za pośrednictwem pliku wykonywalnego svchost. Z jakiego powodu zatem w Menedżerze zadań znaleźć możemy cztery w przypadku Windows XP, a nawet dziesięć i więcej w Windows Visa, instancji tego procesu? W celu zachowania stabilności w wypadku awarii. Szereg systemowych usług zostało odpowiednio pogrupowanych (wg typu, np. usługi sieciowe) i każda z nich przydzielona do jednej kopii Service Host. Wyobraźmy sobie sytuację, w której z dowolnych powodów (np. na skutek błędu) svchost zostanie zamknięty? Gdyby wszystkie podprogramy skupione zostały w pojedynczym procesie z pewnością doprowadziło by to do awarii systemu i najpewniej zaprzestaniu jego funkcjonowania.
Svchost Viewer
Jednym ze sposobów uzyskania informacji o usługach skupionych wokół konkretnej kopii Services Host jest użycie ciekawego narzędzia o nazwie Svchost Viewer. Jest to dedykowana aplikacja, zupełnie darmowa, napisana w C# (wymaga .NET Framework), a przy tym nie wymagająca instalacji, stworzona w celu wylistowania oraz pokazania szczegółów dotyczących usług przypisanych każdemu z uruchomionych procesów svchost. Aplikację można pobrać z działu Download. Następnie wywołajmy plik wykonywalny. Po zebraniu informacji, które może potrwać kilkadziesiąt sekund, program pokaże każdą z kopii procesu, którym się zajmujemy wraz z numerem PID. Po rozwinięciu drzewa uzyskamy listę odpowiadających mu systemowych usług, ich opis, a także dane dotyczące zajętości pamięci, czy wielkości danych zapisanych/odczytanych w trakcie działania.
Powiązania z poziomu Menedżera zadań
W celu sprawdzenia jakie konkretne usługi kryją się za poszczególnymi instancjami bohatera artykułu możemy użyć również standardowego Menedżera zadań. Otwórzmy w tym celu rzeczoną aplikację, przejdźmy na zakładkę Procesy i wybierzmy z listy jedną z kopii svchost. Następnie z menu podręcznego wybierzmy opcję Przejdź do usług, która przekieruje na zakładkę Usługi, dodatkowo zaznaczając te serwisy, za które odpowiedzialna jest wybrana kopia procesu. Możemy przy tym zaobserwować jakąś logikę w sposobie grupowania usług.
Sterowanie usługami
W przypadku, gdy zaobserwujemy wzmożone wykorzystywanie mocy procesora lub wielkości zużywanej pamięci, które wykazuje któraś z kopii svchost, może to znaczyć, że zestaw uruchomionych usług jest zbyt obszerny i warto byłoby go odpowiednio dostosować. W przypadku starszych komputerów o nieco już ograniczonych zasobach sprzętowych, takie działanie może znacznie przyspieszyć pracę systemu operacyjnego. Należy przy tym jednak pamiętać, że zatrzymywanie określonych usług nie może być przypadkowe. Dodatkowo występują między nimi pewne powiązania, które powodują, że wyłączenie jednego z procesów, skutkuje zaprzestaniem pracy innego. Do zarządzania uruchomionymi usługami w Windows Vista (oraz Windows XP) służy przystawka services.msc. Aby ją wywołać należy w pole Uruchom wpisać services.msc i potwierdzić klawiszem Enter. Po zaznaczeniu na liście usługi, którą jesteśmy zainteresowani, wybierzmy z menu kontekstowego opcję Właściwości, a następnie operując przyciskiem Zatrzymaj, oraz listą w Typ uruchomienia przestawiając jej wartość na Ręczny, spowodujemy odciążenie komputera. Gotowej listy usług, których można się pozbyć nie przytoczymy, ponieważ jest ona na tyle płynna, że każdy z użytkowników na postawie indywidualnych preferencji korzystania z systemu, powinien ją opracować samodzielnie.
Infekcje wirusowe
Częstym procederem w niedalekiej przeszłości było podszywanie się szkodliwych aplikacji pod opisywany systemowy proces. Szkodniki stosowały (oraz dalej stosują) w tym celu podobne nazewnictwo (svhost, svchosts), aby zwieść użytkownika i udawać standardową aplikację. Innym syndromem działalności wirusa może być również nadmierne obciążenie mocy procesora, zaobserwowane tym razem przy właściwym svchost. Przyczyną takiego stanu rzeczy może okazać się wszczepienie szkodnika w rzeczony mechanizm i aby się z tym uporać, w pierwszej kolejności wskazane jest użycie oprogramowania antywirusowego.