Vkládání kódu je ve Windows běžné. Aplikace „vkládají“ části svého vlastního kódu do jiného běžícího procesu, aby upravily jeho chování. Tuto techniku lze použít pro dobro nebo zlo, ale v každém případě může způsobit problémy.
Vkládání kódu se také běžně nazývá vstřikování DLL, protože vložený kód má často tvar a Soubor DLL (dynamická knihovna) . Aplikace však mohou do procesu vložit i jiné typy kódu, které nejsou knihovnami DLL.
K čemu se vstřikování kódu používá
Vkládání kódu se používá k dosažení nejrůznějších triků a funkcí v systému Windows. I když ji legitimní programy používají, využívá ji také malware. Například:
- Antivirové programy často vkládají kód do webových prohlížečů. Mohou jej použít například k monitorování síťového provozu a blokování nebezpečného webového obsahu.
- Škodlivé programy mohou přidat kód do vašeho webového prohlížeče, aby lépe sledovaly vaše procházení, ukradly chráněné informace, jako jsou hesla a čísla kreditních karet, a změnily nastavení prohlížeče.
- Stardock's WindowBlinds, který motivuje váš desktop, vkládá kód upravit způsob kreslení oken .
- Stardock's Fences vkládá kód do změnit způsob fungování plochy Windows .
- AutoHotkey, který vám umožní vytvářet skripty a přiřazovat jim klávesové zkratky pro celý systém , vloží kód, aby toho dosáhl.
- Grafické ovladače jako NVIDIA injektují DLL, aby mohly plnit různé úkoly související s grafikou.
- Některé programy vkládají soubory DLL a přidávají do aplikace další možnosti nabídky.
- Nástroje pro podvádění počítačových her často vkládají kód do her, aby upravily jejich chování a získaly nespravedlivou výhodu oproti ostatním hráčům.
Je vložení kódu špatné?
Tuto techniku neustále používá široká škála aplikací ve Windows. Je to jediný skutečný způsob, jak splnit řadu úkolů. Ve srovnání s moderní mobilní platformou, jako je Apple iOS nebo Google Android, je desktop Windows tak výkonný, protože pokud nabízí tento druh flexibility vývojářům.
Samozřejmě, se vší tou mocí přichází určité nebezpečí. Vložení kódu může způsobit problémy a chyby v aplikacích. Google říká, že uživatelé Windows, kteří mají kód vložený do svého prohlížeče Chrome, mají o 15% vyšší pravděpodobnost selhání prohlížeče Chrome, a proto Google pracuje na jeho zablokování. Microsoft konstatuje, že injektáž kódu může být škodlivými aplikacemi použita k ovlivnění nastavení prohlížeče, což je jeden z důvodů, proč je již v Edge zablokován.
Akce Microsoft poskytuje instrukce pro kontrolu, zda jsou v Microsoft Outlooku načteny DLL třetích stran, protože způsobují tolik selhání Outlooku.
Jak to uvedl zaměstnanec Microsoftu v blog vývojáře od roku 2004:
Vložení DLL není nikdy bezpečné. Mluvíte o stříkání kódu do procesu, který nebyl nikdy navržen, vytvořen nebo testován autorem procesu, a kooptování nebo vytvoření vlákna pro spuštění tohoto kódu. Riskujete, že vytvoříte problémy s načasováním, synchronizací nebo zdroji, které tam dříve nebyly, nebo zhoršíte problémy, které tam byly.
Jinými slovy, vkládání kódu je trochu špinavý hack. V ideálním světě by existoval bezpečnější způsob, jak toho dosáhnout, který by nezpůsobil potenciální nestabilitu. Vkládání kódu je však dnes jen běžnou součástí aplikační platformy Windows. Na vašem počítači se systémem Windows se to neustále děje na pozadí. Mohli byste to nazvat nezbytným zlem.
Jak zkontrolovat vložené DLL
Můžete zkontrolovat vložení kódu do vašeho systému pomocí Microsoftu Průzkumník procesů aplikace. Je to v zásadě pokročilá verze Správce úloh plná dalších funkcí.
Stáhněte si a spusťte Process Explorer, pokud to chcete udělat. Klikněte na Zobrazit> Zobrazení spodního panelu> DLL nebo stiskněte Ctrl + D.
Vyberte proces v horním podokně a v dolním podokně zobrazte načtené knihovny DLL. Sloupec „Název společnosti“ poskytuje užitečný způsob filtrování tohoto seznamu.
Je například normální vidět zde různé knihovny DLL vytvořené společností „Microsoft Corporation“, protože jsou součástí systému Windows. Je také normální vidět knihovny DLL vytvořené stejnou společností jako dotyčný proces - „Google Inc.“ v případě Chrome na snímku obrazovky níže.
Můžeme zde také najít několik dll vytvořených programem „AVAST Software“. To naznačuje, že antimalwarový software Avast v našem systému vkládá do Chromu kód, jako je „knihovna filtrů Avast Script Blocking“.
Není mnoho, co můžete udělat, pokud ve svém systému najdete vložení kódu - kromě odinstalování programu, který vkládá kód, aby se předešlo problémům. Například pokud Chrome pravidelně selhává, možná budete chtít zjistit, zda existují nějaké programy, které do Chromu vkládají kód, a odinstalovat je, abyste jim zabránili v manipulaci s procesy Chromu.
Jak funguje vkládání kódu?
Vložení kódu nemění základní aplikaci na vašem disku. Místo toho čeká na spuštění této aplikace a do tohoto běžícího procesu vloží další kód, aby změnil jeho fungování.
Windows obsahují řadu aplikační programovací rozhraní (API) které lze použít pro vložení kódu. Proces se může připojit k cílovému procesu, přidělit paměť, zapsat do této paměti DLL nebo jiný kód a poté instruovat cílový proces k provedení kódu. Windows nezabrání tomu, aby se procesy ve vašem počítači navzájem rušily.
Další technické informace najdete v tomto blogovém příspěvku s vysvětlením jak mohou vývojáři vkládat DLL a tento pohled na jiné typy vkládání kódu ve Windows .
V některých případech může někdo změnit základní kód na disku - například nahrazením souboru DLL, který je součástí počítačové hry, upraveným, aby bylo možné podvádění nebo pirátství. To technicky není „vložení kódu“. Kód není vložen do běžícího procesu, ale program je místo toho podveden k načtení jiné DLL se stejným názvem.
Kredit obrázku: Lukatme /Shutterstock.com.