Početna » kako da » Što je ubrizgavanje koda u sustavu Windows?

    Što je ubrizgavanje koda u sustavu Windows?

    Injekcija koda je uobičajena u sustavu Windows. Aplikacije "ubrizgavaju" dijelove vlastitog koda u drugi pokrenut proces kako bi izmijenili svoje ponašanje. Ova tehnika se može koristiti za dobro ili zlo, ali u svakom slučaju može uzrokovati probleme.

    Injekcija koda se također obično naziva DLL injekcija jer je injektirani kod često u obliku datoteke DLL (knjižnica s dinamičkim vezama). Međutim, aplikacije također mogu injektirati druge vrste koda koji nisu DLL-ovi u proces.

    Za što se koristi injekcija koda

    Injekcija koda se koristi za postizanje svih vrsta trikova i funkcionalnosti u sustavu Windows. Iako ga koriste legitimni programi, koristi ga i zlonamjerni softver. Na primjer:

    • Antivirusni programi često ubrizgavaju kod u web preglednike. Oni ga mogu koristiti za praćenje mrežnog prometa i blokiranje, primjerice, opasnog web sadržaja.
    • Zlonamjerni programi mogu dodati kôd vašem web-pregledniku kako bi bolje pratili pregledavanje, ukrali zaštićene informacije kao što su zaporke i brojevi kreditnih kartica te promijenili postavke preglednika.
    • Stardock's WindowBlinds, koji tematizira vašu radnu površinu, ubrizgava kôd za izmjenu nacrta prozora.
    • Stardock's Fences ubrizgava kod za promjenu načina rada radne površine sustava Windows.
    • AutoHotkey, koji vam omogućuje da stvorite skripte i dodijelite im hotkeys na razini cijelog sustava, ubrizgava kod kako bi to postigao.
    • Grafički upravljački programi poput NVIDIA-inih ubrizgavaju DLL-ove za izvršavanje raznih zadataka povezanih s grafikom.
    • Neki programi ubrizgavaju DLL-ove za dodavanje dodatnih opcija izbornika u aplikaciju.
    • Alati za varanje računalnih igara često ubrizgavaju kod u igre kako bi izmijenili njihovo ponašanje i stekli nepravednu prednost nad drugim igračima.

    Je pogrešno unošenje koda?

    Ova tehnika se stalno koristi širokim rasponom aplikacija na Windowsu. To je jedini pravi način za ostvarivanje različitih zadataka. U usporedbi s modernom mobilnom platformom kao što je Appleov iOS ili Googleov Android, radna površina sustava Windows toliko je snažna jer nudi programerima tu vrstu fleksibilnosti.

    Naravno, uz svu tu moć dolazi do neke opasnosti. Injekcija koda može uzrokovati probleme i greške u aplikacijama. Google kaže da će korisnici sustava Windows koji imaju kodove ubačene u svoj Chrome preglednik imati 15% veću vjerojatnost da će doživjeti padove Chromea, zbog čega Google radi na blokiranju toga. Microsoft primjećuje da se ubrizgavanje koda može koristiti od strane zlonamjernih aplikacija za mijenjanje postavki preglednika, što je jedan od razloga zbog kojih je već blokiran u programu Edge.

    Microsoft čak daje upute za provjeru jesu li DLL-ovi trećih strana učitani u Microsoft Outlooku, jer uzrokuju mnogo Outlookovih padova.

    Kao što je Microsoftov zaposlenik stavio na blog razvojnih inženjera iz 2004. godine:

    DLL injekcija nikada nije sigurna. Govorite o ucrtavanju koda u proces koji nikada nije bio osmišljen, izgrađen ili testiran od strane autora procesa, te kooptiranje ili stvaranje niti za pokretanje tog koda. Rizik ste stvaranja vremena, sinkronizacije ili problema s resursima koji nisu postojali prije ili pogoršali probleme koji su se pojavili.

    Drugim riječima, injekcija koda je vrsta prljavog haka. U idealnom svijetu, postojao bi sigurniji način da se to postigne, što nije uzrokovalo potencijalnu nestabilnost. Međutim, injekcija koda je samo normalan dio platforme Windows aplikacija danas. Stalno se događa u pozadini vašeg Windows računala. Možete to nazvati nužnim zlom.

    Kako provjeriti ubrizgane DLL-ove

    Možete provjeriti za injekciju koda na vašem sustavu s Microsoftovom moćnom aplikacijom Process Explorer. To je u osnovi napredna verzija Upravitelja zadataka s dodatnim značajkama.

    Preuzmite i pokrenite Process Explorer ako želite to učiniti. Kliknite View> Lower Pane View> DLLs ili pritisnite Ctrl + D.

    Odaberite proces u gornjem oknu i potražite u donjem oknu DLL-ove koji su učitani. Stupac "Naziv tvrtke" pruža koristan način filtriranja tog popisa.

    Na primjer, normalno je vidjeti razne DLL-ove koje je izradio Microsoft Corporation, jer su dio sustava Windows. Također je normalno vidjeti DLL-ove koje je izradila ista tvrtka kao i dotični proces - "Google Inc." u slučaju Chromea na slici ispod.

    Ovdje također možemo uočiti nekoliko DLL-ova koje je izradio "AVAST Software". To ukazuje na to da Avast antimalware softver na našem sustavu ubacuje kod kao što je "Avast Script Blocking filter library" u Chrome.

    Nema mnogo toga što možete učiniti ako na svom sustavu pronađete injekciju koda, osim što deinstalirate programski unosni kod kako biste spriječili probleme. Na primjer, ako se Chrome redovito ruši, možda ćete htjeti vidjeti ima li programa koji ubrizgavaju kôd u Chrome i deinstalirati ih da bi se spriječilo miješanje u Chromeove procese.

    Kako radi kodiranje?

    Injekcija koda ne mijenja temeljnu aplikaciju na vašem disku. Umjesto toga, čeka da se program pokrene i u taj proces uvodi dodatni kôd kako bi promijenio način funkcioniranja.

    Windows uključuje mnoštvo sučelja aplikativnog programiranja (API) koje se mogu koristiti za injektiranje koda. Proces se može pridružiti ciljnom procesu, dodijeliti memoriju, napisati DLL ili drugi kod u tu memoriju, a zatim uputiti ciljni proces na izvršavanje koda. Windows ne sprječava ovakve procese na vašem računalu.

    Za više tehničkih informacija pogledajte ovaj post u blogu s objašnjenjem kako programeri mogu ubaciti DLL-ove, a ovaj pogled na druge vrste injekcija koda na Windowsima.

    U nekim slučajevima netko može promijeniti osnovni kod na disku - primjerice, zamjenom DLL datoteke koja dolazi s PC igrom s modificiranom kako bi omogućila varanje ili piratstvo. To tehnički nije "injekcija koda". Kôd se ne ubrizgava u tekući proces, ali se program umjesto toga prevare u učitavanje različitog DLL-a s istim imenom..

    Zasluge za sliku: Lukatme / Shutterstock.com.