Úvodná » ako » Čo je to Code Injection na Windows?

    Čo je to Code Injection na Windows?

    Injekcia kódu je bežná v systéme Windows. Aplikácie "vpichujú" kusy svojho vlastného kódu do iného bežiaceho procesu, aby upravili svoje správanie. Táto technika môže byť použitá pre dobro alebo zlo, ale buď môže spôsobiť problémy.

    Injekcia kódu sa tiež bežne nazýva injekcia DLL, pretože vložený kód je často vo forme súboru DLL (dynamická linková knižnica). Aplikácie však môžu do procesu vkladať aj iné typy kódov, ktoré nie sú DLL.

    Čo sa používa na vstrekovanie kódu

    Injekcia kódu sa používa na vykonanie všetkých druhov trikov a funkčnosti v systéme Windows. Zatiaľ čo ju legitímne programy používajú, používajú ho aj škodlivý softvér. Napríklad:

    • Antivírusové programy často vkladajú kód do webových prehliadačov. Môžu ho použiť napríklad na sledovanie sieťovej prevádzky a blokovanie nebezpečného webového obsahu.
    • Škodlivé programy môžu pridať do vášho webového prehliadača kód, aby lepšie sledovali prehliadanie, ukradli chránené informácie, ako sú heslá a čísla kreditných kariet, a zmenili nastavenia prehliadača.
    • Stardock's WindowBlinds, ktorý motivuje vašu pracovnú plochu, injektuje kód, aby zmenil spôsob nakreslenia okien.
    • Stardock's Fences vpichuje kód, aby zmenil spôsob práce na pracovnej ploche systému Windows.
    • AutoHotkey, ktorý vám umožňuje vytvárať skripty a priradiť k nim systémové klávesové skratky, zavádza kód, aby ste to dosiahli.
    • Grafické ovládače, ako napríklad NVIDIA, dovážajú DLL na vykonávanie rôznych úloh týkajúcich sa grafiky.
    • Niektoré programy vkladajú DLL, aby pridali k aplikácii ďalšie možnosti ponuky.
    • Hry podvádzajúce PC hry často vkladajú kód do hier, aby upravili svoje správanie a získali nespravodlivú výhodu nad ostatnými hráčmi.

    Je kódovanie injekcie zlé?

    Táto technika sa neustále používa širokou škálou aplikácií na systéme Windows. Je to jediný skutočný spôsob, ako splniť rôzne úlohy. V porovnaní s modernou mobilnou platformou, ako je iOS spoločnosti Apple alebo Google Android, je pracovná plocha systému Windows taká silná, pretože ak ponúkajú takúto flexibilitu vývojárom.

    Samozrejme, s touto mocou prichádza nejaké nebezpečenstvo. Vstrekovanie kódu môže spôsobiť problémy a chyby v aplikáciách. Google hovorí, že používatelia systému Windows, ktorí majú kód vložený do svojho prehliadača Chrome, majú o 15% vyššiu pravdepodobnosť výskytu zhroucení prehliadača Chrome, čo je dôvod, prečo spoločnosť Google túto prácu blokuje. Spoločnosť Microsoft berie na vedomie, že injekciu kódu by mohli používať škodlivé aplikácie na manipuláciu s nastaveniami prehliadača, čo je jeden z dôvodov, prečo je už v Edge zablokovaný.

    Spoločnosť Microsoft dokonca poskytuje pokyny na kontrolu, či sú v programe Microsoft Outlook načítané súbory DLL tretej strany, pretože spôsobujú toľko zlyhaní programu Outlook.

    Ako zamestnanec spoločnosti Microsoft uviedol na blog vývojára od roku 2004:

    Injekcia DLL nie je nikdy bezpečná. Hovoríte o tom, že ste použili kód v procese, ktorý nikdy nebol navrhnutý, postavený alebo testovaný autorom procesu a kooptoval alebo vytvoril vlákno na spustenie tohto kódu. Riziko vytvárania problémov s časovaním, synchronizáciou alebo zdrojmi, ktoré neboli predtým, alebo ktoré zhoršujú problémy, ktoré tam boli, sú vystavené riziku.

    Inými slovami, injekcia kódu je trochu špinavá. V ideálnom svete by existoval bezpečnejší spôsob, ako to dosiahnuť, čo nespôsobilo potenciálnu nestabilitu. Injekcia kódu je však dnes bežnou súčasťou aplikačnej platformy Windows. Stále sa to deje na pozadí počítača so systémom Windows. Môžete to nazvať nevyhnutným zlom.

    Ako skontrolovať injekčné DLL

    Môžete skontrolovať, či ste v systéme spustili kódovanie pomocou výkonnej aplikácie Process Explorer spoločnosti Microsoft. Je to v podstate pokročilá verzia Správcu úloh, ktorá je vybavená ďalšími funkciami.

    Stiahnite a spustite program Process Explorer, ak to chcete urobiť. Kliknite na položku Zobraziť> Zobrazenie nižšej panela> DLL alebo stlačte kombináciu klávesov Ctrl + D.

    Vyberte proces v hornom paneli a pozrite sa do spodného okna a uvidíte načítané DLL. Stĺpec "Názov spoločnosti" poskytuje užitočný spôsob filtrovania tohto zoznamu.

    Napríklad, je normálne vidieť rôzne DLL vytvorené "Microsoft Corporation" tu, pretože sú súčasťou systému Windows. Je tiež normálne vidieť súbory DLL vytvorené tou istou spoločnosťou ako príslušný proces - "Google Inc." v prípade prehliadača Chrome na obrazovke nižšie.

    Môžeme tu tiež nájsť niekoľko dll, ktoré vytvoril "AVAST Software". Znamená to, že softvér Avast antimalware v našom systéme vkladá do prehliadača Chrome kód ako "knižnica filtrov blokovania skriptov Avast".

    Nie je veľa čo môžete urobiť, ak v systéme nájdete injekciu kódu - okrem toho, že odinštalujete kód injekčného programu programu, aby ste zabránili jeho vzniku. Ak napríklad Chrome narazí pravidelne, možno budete chcieť zistiť, či v programe Chrome do nej vchádza nejaký program a odinštalujete ho, aby ste zabránili manipulácii s procesmi prehliadača Chrome.

    Ako funguje kódovanie injekcie?

    Injekcia kódu nezmení základnú aplikáciu na vašom disku. Namiesto toho čaká na spustenie tejto aplikácie a do tohto spusteného procesu vloží ďalší kód, aby zmenil spôsob fungovania.

    Systém Windows obsahuje rôzne aplikačné programovacie rozhrania (API), ktoré možno použiť na kódovanie. Proces sa môže pripojiť k cieľovému procesu, alokovať pamäť, zapísať do tejto pamäte DLL alebo iný kód a potom inštruovať cieľový proces, aby spustil kód. Systém Windows nebráni tomu, aby sa procesy vo vašom počítači navzájom rušili.

    Ak chcete získať ďalšie technické informácie, pozrite si tento príspevok na blogu, ktorý vysvetľuje, ako môžu vývojári vkladať DLL a tento pohľad na iné typy kódovania injekcie v systéme Windows.

    V niektorých prípadoch môže niekto zmeniť podkladový kód na disku - napríklad nahradením súboru DLL, ktorý je dodávaný s počítačovou hrou s upravenou tak, aby umožnil podvádzanie alebo pirátstvo. To technicky nie je "kódovanie injekcie". Kód nie je vstreknutý do bežiaceho procesu, ale program je namiesto toho podvedený do načítania inej DLL s rovnakým názvom.

    Image Credit: Lukatme / Shutterstock.com.