Wstrzykiwanie kodu jest powszechne w systemie Windows. Aplikacje "wstrzykują" fragmenty własnego kodu do innego działającego procesu, aby zmodyfikować jego zachowanie. Ta technika może być użyta dla dobra lub zła, ale w obu przypadkach może powodować problemy.
Wstrzyknięcie kodu jest również powszechnie nazywane wstrzykiwaniem DLL, ponieważ wstrzyknięty kod jest często w postaci pliku biblioteki DLL (biblioteki dynamicznej). Jednak aplikacje mogą również wprowadzać do procesu inne typy kodu, które nie są plikami DLL.
Wstrzykiwanie kodu służy do wykonywania różnych sztuczek i funkcji w systemie Windows. Podczas gdy legalne programy używają go, jest on również używany przez złośliwe oprogramowanie. Na przykład:
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 do nowoczesnej platformy mobilnej, takiej jak Apple iOS czy Google Android, pulpit Windows jest tak potężny, ponieważ oferuje programistom taką elastyczność.
Oczywiście przy całej tej sile pojawia się pewne niebezpieczeństwo. Wstrzykiwanie kodu 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 przeglądarki Chrome, dlatego Google pracuje nad zablokowaniem tego. Microsoft zauważa, że złośliwe aplikacje mogły wykorzystać wtrysk kodu do manipulowania ustawieniami przeglądarki, co jest jednym z powodów, dla których jest już zablokowany w Edge.
Firma Microsoft udostępnia nawet instrukcje sprawdzania, czy pliki DLL firm trzecich są ładowane do programu Microsoft Outlook, ponieważ powodują tyle awarii w programie Outlook.
Jako pracownik Microsoft umieścił go na blogu programisty od 2004 roku:
Wtryskiwanie DLL nigdy nie jest bezpieczne. Mówisz o wciągnięciu kodu do procesu, który nigdy nie był zaprojektowany, zbudowany ani przetestowany przez autora procesu i nie został dodany ani nie został utworzony wątek do uruchomienia tego kodu. Występuje ryzyko związane z synchronizacją lub problemami z zasobami, których wcześniej nie było lub zaostrzało problemy, które tam występowały.
Innymi słowy, wstrzyknięcie kodu to rodzaj brudnego hacka. W idealnym świecie istnieje bezpieczniejszy sposób osiągnięcia tego, który nie spowodowałby potencjalnej niestabilności. Jednak wstrzyknięcie kodu jest obecnie normalną częścią platformy aplikacji Windows. To ciągle dzieje się w tle na twoim komputerze z Windows. Możesz nazwać to złem koniecznym.
Możesz sprawdzić wtrysk kodu w swoim systemie dzięki zaawansowanej aplikacji Process Explorer firmy Microsoft. Jest to w zasadzie zaawansowana wersja Menedżera zadań z dodatkowymi funkcjami.
Pobierz i uruchom Process Explorer, jeśli chcesz to zrobić. Kliknij kolejno Widok> Lower Pane View> DLL lub naciśnij Ctrl + D.
Wybierz proces w górnym okienku i spójrz na dolny panel, aby zobaczyć załadowane biblioteki DLL. Kolumna "Nazwa firmy" zapewnia przydatny sposób filtrowania tej listy.
Na przykład normalne jest wyświetlanie wielu bibliotek DLL utworzonych przez "Microsoft Corporation" tutaj, ponieważ są one częścią systemu Windows. Normalne jest również wyświetlanie plików DLL wykonanych przez tę samą firmę, co omawiany proces - "Google Inc." w przypadku Chrome na poniższym zrzucie ekranu.
Możemy również znaleźć kilka bibliotek DLL utworzonych przez "Oprogramowanie AVAST" tutaj. Oznacza to, że Avast oprogramowanie antymalware w naszym systemie wstrzykuje kod, taki jak "biblioteka filtrowania blokowania skryptów Avast" w Chrome.
Niewiele możesz zrobić, jeśli znajdziesz zastrzyk kodu w swoim systemie - oprócz odinstalowania kodu wstrzykiwania programu, aby zapobiec powodowaniu problemów. Jeśli na przykład Chrome regularnie się zawiesza, możesz sprawdzić, czy w Chrome są jakieś programy wprowadzające kod i odinstalować je, aby zapobiec manipulowaniu procesami Chrome.
Wstrzyknięcie kodu nie modyfikuje podstawowej aplikacji na dysku. Zamiast tego oczekuje na uruchomienie tej aplikacji i wprowadza dodatkowy kod do uruchomionego procesu, aby zmienić jego działanie.
System Windows zawiera wiele interfejsów programowania aplikacji (API), które można wykorzystać do wprowadzania kodu. Proces może dołączyć się do procesu docelowego, przydzielić pamięć, napisać bibliotekę DLL lub inny kod do tej pamięci, a następnie nakazać procesowi docelowemu wykonanie kodu. System Windows nie zapobiega takiemu zakłócaniu procesów na komputerze.
Aby uzyskać więcej informacji technicznych, sprawdź ten wpis na blogu wyjaśniający, w jaki sposób programiści mogą wstrzykiwać biblioteki DLL, a także zobacz inne rodzaje wstrzykiwania kodu w systemie Windows.
W niektórych przypadkach ktoś może zmienić kod źródłowy na dysku - na przykład, zastępując plik DLL dołączony do gry na komputerze zmodyfikowanym, aby umożliwić oszustwo lub piractwo.Technicznie nie jest to "wstrzyknięcie kodu". Kod nie jest wstrzykiwany do działającego procesu, ale zamiast tego program jest sztucznie wprowadzany do ładowania innej biblioteki DLL o tej samej nazwie.
Image Credit: Lukatme / Shutterstock.com.