Injekcijsko kôd također se obično naziva injekcija DLL jer je injektirani kôd često u obliku DLL datoteke (dinamička veza). Međutim, aplikacije bi također mogle injektirati druge vrste koda koji nisu DLL u proces.
Koja injekcija koda se koristi za
Injektiranje koda koristi se za postizanje svih vrsta trikova i funkcija u sustavu Windows. Dok ga legitimni programi upotrebljavaju, upotrebljavaju i zlonamjerni softver. Na primjer:
- Antivirusni programi često šalju kôd u web preglednike. Mogu je koristiti za praćenje mrežnog prometa i blokiranje opasnih web sadržaja, na primjer.
- Zlonamjerni programi mogu dodati kôd u vaš web preglednik kako bi bolje pratili vaše pregledavanje, ukrali zaštićene informacije poput zaporki i brojeva kreditnih kartica i promijenili postavke preglednika.
- Stardock's WindowBlinds, koji tematizira vašu radnu površinu, injektira kod za izmjenu načina izrade prozora.
- Stardockove ograde injektiraju kod kako bi promijenili način rada radne površine sustava Windows.
- AutoHotkey, koji vam omogućuje da stvorite skripte i dodijeliti hotkeys cijelom sustavu, injektira kôd kako bi to postigao.
- Grafički vozač poput NVIDIA-e ubrizgava DLL-ove za obavljanje različitih zadataka vezanih uz grafiku.
- Neki programi ubacuju DLL-ove za dodavanje dodatnih mogućnosti izbornika u aplikaciju.
- Alati za varanje u računalnoj igri često ubacuju kod u igre kako bi izmijenili svoje ponašanje i stekli nepoštenu prednost nad ostalim igračima.
Je li kôd ubrizgavanja loš?
Ova se tehnika stalno koristi širokim rasponom aplikacija na sustavu Windows. To je jedini pravi način za postizanje različitih zadataka. U usporedbi s modernom mobilnom platformom kao što je Appleov iOS ili Googleov Android, Windows radna površina je toliko moćna jer nudi takvu fleksibilnost programerima.
Naravno, s tom snagom dolazi opasnost. Injektiranje koda može uzrokovati probleme i greške u aplikacijama. Google kaže da korisnici sustava Windows koji imaju kôd ubrizgava u svoj Chrome preglednik imaju 15% veću vjerojatnost da će doživjeti pada Chromea, zbog čega Google blokira to. Microsoft primjećuje da bi zlonamjerne aplikacije mogle koristiti zlonamjerne aplikacije kako bi se izmijenile postavke preglednika, što je jedan od razloga zbog kojeg je već blokiran u Edgeu.
Microsoft čak daje upute za provjeru jesu li DLL-ovi treće strane učitani u programu Microsoft Outlook jer uzrokuju toliko rušenja u programu Outlook.
Kao zaposlenik tvrtke Microsoft objavio ga je u blogu razvojnog programera iz 2004. godine:
DLL injection is never safe. You’re talking about squirting code into a process that was never designed, built, or tested by the process’s author, and co-opting or creating a thread to run that code. You run the risk of creating timing, synchronization, or resource issues that weren’t there before or exacerbating issues that were there.
Drugim riječima, injektiranje koda je vrsta prljavog hakiranja. U idealnom svijetu, to bi bio sigurniji način da se to postigne, što nije uzrokovalo potencijalnu nestabilnost. Međutim, injekcija koda danas je samo standardni dio aplikacijske platforme sustava Windows. Stalno se događa u pozadini na vašem Windows računalu. Možete ga nazvati nužnim zlom.
Kako provjeriti ubrizgava DLL
Možete provjeriti ubrizgavanje koda na vašem sustavu uz Microsoftovu snažnu aplikaciju Process Explorer. U osnovi je napredna verzija upravitelja zadataka s dodatnim značajkama.
Ako to želite, preuzmite i pokrenite Process Explorer. Kliknite Prikaz> Prikaz niže ploče> DLL ili pritisnite Ctrl + D.
Primjerice, uobičajeno je vidjeti različite DLL-ove koje je napisao "Microsoft Corporation" jer su dio sustava Windows. Također je uobičajeno vidjeti DLL-ove istog proizvođača kao i proces koji je u pitanju - "Google Inc." u slučaju Chromea na slici zaslona u nastavku.
Također možemo pronaći nekoliko DLL-ova koje je ovdje napravio "AVAST Software". To znači da Avast antimalware softver na našem sustavu ubrizgava kôd poput "biblioteke filtriranja blokiranja Avast skripte" u Chrome.
Kako funkcionira injekcija koda?
Injektiranje koda ne mijenja temeljni program na vašem disku. Umjesto toga, on čeka da se aplikacija pokrene i ubacuje dodatni kod u taj proces koji se pokreće kako bi promijenio način funkcioniranja.
Windows sadrži niz sučelja aplikacijskog programiranja (API-ja) koje se mogu koristiti za injektiranje koda. Postupak se može pridružiti ciljanom procesu, alocirati memoriju, napisati DLL ili neki drugi kôd u tu memoriju, a zatim uputiti ciljni postupak za izvršavanje koda. Windows ne sprječava da se procesi na vašem računalu međusobno ometaju.
Dodatne tehničke informacije potražite na ovom blogu koji objašnjava kako razvojni programeri mogu ubrizgati DLL-ove i ovaj pogled na druge oblike ubrizgavanja koda na sustavu Windows.
U nekim slučajevima netko može mijenjati temeljni kôd na disku - na primjer, zamjenom DLL datoteke koja dolazi s PC igrama s izmijenjenom kako bi se omogućilo varanje ili piratstvo.To tehnički nije "injektiranje koda". Kôd se ne ubrizgava u pokrenuti proces, ali program se umjesto toga zanima za učitavanje drugog DLL-a s istim imenom.