Wstrzyknięcie kodu jest powszechne w systemie Windows. Aplikacje „wstrzykują” fragmenty własnego kodu do innego działającego procesu, aby zmodyfikować jego zachowanie. Technika ta może być użyta w dobrym lub złym celu, ale tak czy inaczej może powodować problemy.
Wstrzyknięcie kodu jest również powszechnie nazywane wstrzykiwaniem DLL, ponieważ wstrzykiwany kod ma często postać pliku Plik DLL (biblioteka dołączana dynamicznie) . Jednak aplikacje mogą również wprowadzać do procesu inne typy kodu, które nie są bibliotekami DLL.
Do czego służy wstrzykiwanie kodu
Wstrzykiwanie kodu służy do wykonywania różnego rodzaju sztuczek i funkcji w systemie Windows. Chociaż używają go legalne programy, jest on również używany przez złośliwe oprogramowanie. Na przykład:
- Programy antywirusowe często wstrzykują kod do przeglądarek internetowych. Mogą go używać na przykład do monitorowania ruchu sieciowego i blokowania niebezpiecznych treści internetowych.
- Złośliwe programy mogą dodawać kod do przeglądarki internetowej, aby lepiej śledzić przeglądanie, wykradać chronione informacje, takie jak hasła i numery kart kredytowych, oraz zmieniać ustawienia przeglądarki.
- WindowBlinds firmy Stardock, która motywuje Twój pulpit, wstrzykuje kod zmodyfikować sposób rysowania okien .
- Stardock’s Fences wstrzykuje kod do zmienić sposób działania pulpitu Windows .
- AutoHotkey, który pozwala tworzyć skrypty i przypisywać im skróty klawiszowe dla całego systemu , wstrzykuje kod, aby to osiągnąć.
- Sterownik graficzny działa podobnie jak NVIDIA do wstrzykiwania bibliotek DLL do wykonywania różnych zadań związanych z grafiką.
- Niektóre programy wstrzykują biblioteki DLL w celu dodania dodatkowych opcji menu do aplikacji.
- Narzędzia do oszukiwania gier komputerowych często wstrzykują kod do gier, aby zmodyfikować ich zachowanie i uzyskać nieuczciwą przewagę nad innymi graczami.
Czy wstrzykiwanie kodu jest złe?
Ta technika jest stale używana przez wiele różnych aplikacji w systemie Windows. To jedyny prawdziwy sposób na wykonanie różnorodnych zadań. W porównaniu z nowoczesną platformą mobilną, taką jak iOS firmy Apple czy Android firmy Google, komputer stacjonarny z systemem Windows jest tak potężny, że oferuje taką elastyczność programistom.
Oczywiście z całą tą mocą wiąże się pewne niebezpieczeństwo. Wstrzyknięty kod może powodować problemy i błędy w aplikacjach. Google twierdzi, że użytkownicy systemu Windows, którzy mają kod wstrzyknięty do przeglądarki Chrome, są o 15% bardziej narażeni na awarie Chrome, dlatego Google pracuje nad zablokowaniem tego. Microsoft zauważa, że złośliwe aplikacje mogą wykorzystać wstrzyknięcie kodu do manipulowania ustawieniami przeglądarki, co jest jednym z powodów, dla których jest już zablokowane w Edge.
Wydarzenie Microsoft zapewnia instrukcje do sprawdzania, czy biblioteki DLL innych firm są ładowane w programie Microsoft Outlook, ponieważ powodują wiele awarii programu Outlook.
Jako pracownik Microsoft umieścił go w pliku blog programistów od 2004 roku:
Wstrzyknięcie DLL nigdy nie jest bezpieczne. Mówisz o wprowadzaniu kodu do procesu, który nigdy nie został zaprojektowany, zbudowany ani przetestowany przez autora procesu, oraz o współpracy lub tworzeniu wątku do uruchamiania tego kodu. Ryzykujesz spowodowaniem problemów z synchronizacją lub zasobami, których wcześniej nie było, lub zaostrzeniem problemów, które tam występowały.
Innymi słowy, wstrzyknięcie kodu to swego rodzaju brudny hack. W idealnym świecie byłby na to bezpieczniejszy sposób, który nie powodowałby potencjalnej niestabilności. Jednak wstrzykiwanie kodu jest obecnie normalną częścią platformy aplikacji systemu Windows. Cały czas dzieje się to w tle na Twoim komputerze z systemem Windows. Możesz nazwać to złem koniecznym.
Jak sprawdzić wstrzyknięte biblioteki DLL
Możesz sprawdzić, czy w systemie nie ma kodu, dzięki zaawansowanym funkcjom firmy Microsoft Process Explorer podanie. Jest to w zasadzie zaawansowana wersja Menedżera zadań z dodatkowymi funkcjami.
Pobierz i uruchom Process Explorer, jeśli chcesz to zrobić. Kliknij Widok> Widok dolnego panelu> Biblioteki DLL lub naciśnij Ctrl + D.
Wybierz proces w górnym okienku i spójrz na dolny, aby zobaczyć załadowane biblioteki DLL. Kolumna „Nazwa firmy” zapewnia przydatny sposób filtrowania tej listy.
Na przykład normalnym zjawiskiem jest zobaczenie tutaj różnych bibliotek DLL utworzonych przez „Microsoft Corporation”, ponieważ są one częścią systemu Windows. Widoczne są również pliki DLL utworzone przez tę samą firmę co dany proces - „Google Inc.” w przypadku Chrome na zrzucie ekranu poniżej.
Możemy również zauważyć kilka bibliotek DLL utworzonych przez „Oprogramowanie AVAST”. Oznacza to, że oprogramowanie chroniące przed złośliwym oprogramowaniem firmy Avast w naszym systemie wstrzykuje do przeglądarki Chrome kod, taki jak „Biblioteka filtrów blokujących skrypty Avast”.
Niewiele możesz zrobić, jeśli znajdziesz w systemie wstrzyknięty kod - poza odinstalowaniem programu, który wstrzykuje kod, aby zapobiec powodowaniu problemów. Na przykład jeśli Chrome regularnie się zawiesza, możesz chcieć sprawdzić, czy są jakieś programy, które wstrzykują kod do Chrome i odinstalować je, aby zapobiec manipulowaniu procesami Chrome.
Jak działa Code Injection?
Wstrzyknięty kod nie modyfikuje podstawowej aplikacji na dysku. Zamiast tego czeka na uruchomienie aplikacji i wstrzykuje dodatkowy kod do tego uruchomionego procesu, aby zmienić jego działanie.
Windows zawiera różne wersje interfejsy programowania aplikacji (API) które można wykorzystać do wstrzyknięcia kodu. Proces może dołączyć się do procesu docelowego, przydzielić pamięć, napisać bibliotekę DLL lub inny kod w tej pamięci, a następnie nakazać procesowi docelowemu wykonanie kodu. System Windows nie zapobiega takiemu zakłócaniu procesów na komputerze.
Więcej informacji technicznych znajdziesz w tym poście wyjaśniającym jak programiści mogą wstrzykiwać biblioteki DLL i to spojrzenie inne typy wstrzykiwania kodu w systemie Windows .
W niektórych przypadkach ktoś może zmienić kod źródłowy na dysku - na przykład zamieniając plik DLL, który jest dostarczany z grą na PC, plikiem zmodyfikowanym w celu umożliwienia oszustwa lub piractwa. Z technicznego punktu widzenia nie jest to „wstrzyknięcie kodu”. Kod nie jest wstrzykiwany do działającego procesu, ale zamiast tego program jest oszukiwany w celu załadowania innej biblioteki DLL o tej samej nazwie.
Źródło zdjęcia: Lukatme /Shutterstock.com.