Co je Code Injection v systému Windows?
Vkládání kódu je běžné v systému Windows. Aplikace "vkládají" kusy svého vlastního kódu do jiného běžícího procesu, který upravuje jeho chování. Tato technika může být použita pro dobro nebo zlo, ale oba způsoby mohou způsobit problémy.
Vkládání kódu je také běžně nazýváno injekcí DLL, protože injektovaný kód je často ve formě knihovny DLL (knihovna dynamických odkazů). Aplikace by však mohly také vložit do procesu další typy kódů, které nejsou DLL.
Co se používá pro vstřikování kódu
Vkládání kódu se používá pro dosažení nejrůznějších triků a funkčnosti v systému Windows. I když ji používají legitimní programy, používá je také malware. Například:
- Antivirové programy často vkládají kód do webových prohlížečů. Mohou je použít k monitorování síťového provozu a zablokování například nebezpečného webového obsahu.
- Škodlivé programy mohou přidat do vašeho webového prohlížeče kód, aby lépe sledovali prohlížení, ukrást chráněné informace, jako jsou hesla a čísla kreditních karet, a změnili nastavení prohlížeče.
- Stardock's WindowBlinds, který motivuje vaši plochu, zavádí kód, který upravuje způsob kreslení oken.
- Stardock's Fences zavádí kód, aby změnil způsob fungování plochy systému Windows.
- AutoHotkey, který umožňuje vytvářet skripty a přiřazovat k nim systémové klávesové zkratky, zavádí kód, který to provede.
- Grafický ovladač, jako je NVIDIA, napájí knihovny DLL, aby dosáhl řady úloh souvisejících s grafikou.
- Některé programy vkládají knihovny DLL a přidávají do aplikace další možnosti nabídky.
- PC hry podvádění nástroje často vstříknout kód do her ke změně jejich chování a získat nekalou výhodu nad ostatními hráči.
Je kód Injection Bad špatný?
Tato technika je neustále používána širokou škálou aplikací v systému Windows. Je to jediný skutečný způsob, jak splnit různé úkoly. Ve srovnání s moderní mobilní platformou, jako je Apple iOS nebo Google Android, je pracovní plocha Windows tak silná, protože pokud nabízí takovou flexibilitu vývojářům.
Samozřejmě, že s celou mocou přichází nějaké nebezpečí. Vkládání kódu může způsobit problémy a chyby v aplikacích. Google říká, že uživatelé systému Windows, kteří mají kód vložený do prohlížeče Chrome, mají o 15% vyšší pravděpodobnost výpadků Chrome, což je důvod, proč Google blokuje tuto chybu. Společnost Microsoft poznamenává, že kódování injekcí by mohlo být použito škodlivými aplikacemi k manipulaci s nastavením prohlížeče, což je jeden z důvodů, proč je již zablokován v okraji.
Společnost Microsoft dokonce poskytuje pokyny pro kontrolu, zda jsou v aplikaci Microsoft Outlook načteny DLL jiných výrobců, protože způsobují tolik výpadků aplikace Outlook.
Jak zaměstnanec společnosti Microsoft uvedl na vývojovém blogu od roku 2004:
Injekce DLL není nikdy bezpečná. Mluvíte o tom, že jste přerušili kód do procesu, který nikdy nebyl navržen, vytvořen nebo testován autorem procesu a kooptováním nebo vytvářením vlákna pro spuštění tohoto kódu. Riziko vytváření problémů s časováním, synchronizací nebo zdroji, které předtím neexistovaly nebo které zhoršují problémy, které zde existovaly.
Jinými slovy, injekce kódu je trochu špinavá. V ideálním světě by existoval bezpečnější způsob, jak to dosáhnout, což nezpůsobilo případnou nestabilitu. Vkládání kódu je však dnes běžnou součástí platformy pro platformy Windows. Neustále se to děje na pozadí počítače se systémem Windows. Můžeš to nazvat nutným zlem.
Jak zkontrolovat vkládané DLL
Můžete kontrolovat kódování injekcí v systému pomocí výkonné aplikace Microsoft Process Explorer. Je to v podstatě pokročilá verze Správce úloh, která je vybavena dalšími funkcemi.
Stáhněte si a spusťte Process Explorer, pokud byste to chtěli. Klikněte na Zobrazit> Dolní panel Zobrazení> DLL nebo stiskněte klávesy Ctrl + D.
Vyberte proces v horním podokně a podívejte se do dolního podokna a zobrazí se DLL, které jsou načteny. Ve sloupci Název společnosti je užitečný způsob filtrování tohoto seznamu.
Například je normální vidět zde řadu knihoven DLL vytvořených společností Microsoft Corporation, protože jsou součástí systému Windows. Je také normální, že DLL společnosti stejné společnosti jako dotyčný proces - "Google Inc." v případě prohlížeče Chrome na obrazovce níže.
Můžeme také uvést několik dll vytvořených programem "AVAST Software". To naznačuje, že software Avast antimalware v našem systému injekčně vkládá do prohlížeče Chrome kód jako knihovnu filtrů blokování skriptů Avast.
Není příliš mnoho, co můžete udělat, pokud zjistíte kódování injekcí ve vašem systému - kromě odinstalování programového kódu pro podávání injekcí, aby se zabránilo vzniku problémů. Pokud například dojde ke zhroucení systému Chrome pravidelně, možná se budete chtít podívat, zda do prohlížeče Chrome dojde k vkládání nějakých programů a odinstalujete je, aby se zabránilo manipulaci s procesy Chrome.
Jak funguje kódování injekce??
Vkládání kódu nezmění podkladovou aplikaci na vašem disku. Místo toho čeká na spuštění této aplikace a vkládá další kód do běžícího procesu, aby změnil, jak funguje.
Systém Windows obsahuje různé aplikační programovací rozhraní (API), které lze použít pro kódování. Proces se může připojit k cílovému procesu, přidělit paměť, zapsat DLL nebo jiný kód do této paměti a potom instruovat cílový proces k provedení kódu. Systém Windows nezabrání tomu, aby se procesy ve vašem počítači rušily mezi sebou.
Další technické informace naleznete v příspěvku na blogu, který vysvětluje, jak mohou vývojáři vkládat DLL a tento pohled na jiné typy injekcí kódu na systému Windows.
V některých případech může někdo změnit podkladový kód na disku - například tím, že nahradí soubor DLL, který je dodán s počítačovou hrou s upravenou, aby umožnil podvádění nebo pirátství. To technicky není "kódování injekce". Kód není vstřikován do běžícího procesu, ale program je místo toho podveden do načtení jiné DLL se stejným jménem.
Image Credit: Lukatme / Shutterstock.com.