Mikä on Code Injection Windowsissa?
Koodin ruiskutus on yleistä Windowsissa. Sovellukset “pistävät” oman koodinsa kappaleet toiseen käynnissä olevaan prosessiin sen käyttäytymisen muuttamiseksi. Tätä tekniikkaa voidaan käyttää hyvään tai pahaan, mutta kumpikaan se voi aiheuttaa ongelmia.
Koodin injektointia kutsutaan myös yleisesti DLL-injektioksi, koska injektoitu koodi on usein DLL- (dynaamisen linkkikirjaston) tiedoston muodossa. Sovellukset voivat kuitenkin myös pistää muun tyyppisiä koodeja, jotka eivät ole DLL-tiedostoja.
Mitä koodin injektiota käytetään
Koodin injektointiin käytetään kaikenlaisia temppuja ja toimintoja Windowsissa. Vaikka lailliset ohjelmat käyttävät sitä, sitä käyttävät myös haittaohjelmat. Esimerkiksi:
- Virustentorjuntaohjelmat pistävät usein koodin web-selaimiin. He voivat käyttää sitä seuraamaan esimerkiksi verkkoliikennettä ja estämään vaarallista verkkosisältöä.
- Haitalliset ohjelmat saattavat lisätä verkkoselaimeen koodia, jotta voit seurata paremmin selaamistasi, varastaa suojatut tiedot, kuten salasanat ja luottokorttinumerot, ja muuttaa selaimesi asetuksia.
- Stardockin WindowBlinds-ohjelmat, jotka käsittelevät työpöytäsi, pistävät koodin muokkaamaan ikkunoita.
- Stardockin aidat injektoivat koodia, jotta Windows-työpöytä toimii.
- AutoHotkey, jonka avulla voit luoda komentosarjoja ja antaa niille järjestelmänlaajuisia pikanäppäimiä, pistää koodin tämän suorittamiseksi.
- Grafiikkaohjaimen tapaan NVIDIA: n injektio-ohjelmat suorittavat erilaisia grafiikkaan liittyviä tehtäviä.
- Jotkin ohjelmat pistävät DLL-tiedostoja lisäämään sovellukseen muita valikon vaihtoehtoja.
- PC-pelin huijaustyökalut pistävät usein koodin peleihin muokkaamaan käyttäytymistään ja saamaan epäoikeudenmukaisen edun muihin pelaajiin nähden.
Onko koodin syöttö huono?
Tätä tekniikkaa käytetään jatkuvasti useissa eri sovelluksissa Windowsissa. Se on ainoa todellinen tapa toteuttaa erilaisia tehtäviä. Verrattuna nykyiseen mobiilialustaan, kuten Applen iOS: iin tai Googlen Androidiin, Windows-työpöytä on niin tehokas, että jos tarjota tällaista joustavuutta kehittäjille.
Tietenkin, kaikella voimalla on vaara. Koodin ruiskutus voi aiheuttaa ongelmia ja vikoja sovelluksissa. Google sanoo, että Windows-käyttäjät, jotka ovat koodittaneet heidän Chrome-selaimeensa, kokevat todennäköisesti 15% enemmän Chrome-kaatumisia, minkä vuoksi Google pyrkii estämään tämän. Microsoft panee merkille, että haittaohjelmat voivat käyttää koodin injektointia selaimen asetusten muuttamiseksi, mikä on yksi syy siihen, että se on jo estetty Edge.
Microsoft tarjoaa jopa ohjeet, joiden avulla voidaan tarkistaa, onko kolmannen osapuolen DLL-tiedostot ladattu Microsoft Outlookiin, koska ne aiheuttavat niin monia Outlook-kaatuu.
Koska Microsoftin työntekijä laittoi sen kehittäjien blogiin vuodesta 2004:
DLL-injektio ei ole koskaan turvallinen. Puhutte ruiskutuskoodista prosessiin, jota prosessin tekijä ei koskaan suunnitellut, rakentanut tai testannut, ja yhdessä valinnut tai luodaan lankaa koodin suorittamiseksi. Sinulla on riski luoda ajoitusta, synkronointia tai resurssikysymyksiä, jotka eivät olleet siellä ennen tai pahentaneet siellä olevia kysymyksiä.
Toisin sanoen koodin ruiskutus on eräänlainen likainen hakata. Ihanteellisessa maailmassa olisi olemassa turvallisempi tapa saavuttaa tämä, joka ei aiheuttanut potentiaalista epävakautta. Koodin ruiskutus on kuitenkin vain normaali osa Windows-sovellusalustaa. Se tapahtuu jatkuvasti Windows-tietokoneen taustalla. Saatat kutsua sitä välttämättömäksi pahaksi.
Miten tarkistaa injektoidut DLL-tiedostot
Voit tarkistaa koodin injektion järjestelmässäsi Microsoftin tehokkaan Process Explorer -sovelluksen avulla. Se on pohjimmiltaan Task Managerin edistyksellinen versio, jossa on lisäominaisuuksia.
Lataa ja suorita Process Explorer, jos haluat tehdä tämän. Valitse Näytä> Paneelinäkymä> DLL tai paina Ctrl + D.
Valitse prosessi yläpaneelista ja katso alemmasta ruudusta, että näet ladatut DLL-tiedostot. ”Yrityksen nimi” -sarakkeessa on hyödyllinen tapa suodattaa tämä luettelo.
Esimerkiksi on normaalia nähdä, että Microsoft Corporation on tehnyt erilaisia DLL-tiedostoja, koska ne ovat osa Windowsia. On myös normaalia, että samassa yrityksessä tehdyt DLL-tiedostot, kuten kyseinen prosessi, ovat "Google Inc.", jos Chrome on alla olevassa kuvassa.
Voimme myös havaita muutamia DLL-tiedostoja, jotka “AVAST Software” tekee täältä. Tämä osoittaa, että järjestelmämme Avastin antimalware-ohjelmisto pistää koodin kuten "Avast Script Blocking filter library" Chromeen.
Ei ole paljon, mitä voit tehdä, jos järjestelmän sivuun ei löydy ohjelmiston injektointikoodin poistoa, jotta se ei aiheuta ongelmia. Jos esimerkiksi Chrome kaatuu säännöllisesti, saatat haluta nähdä, onko Chromessa ohjelmia, joissa on ohjelmia, jotka poistavat koodin, ja poista ne, jotta ne eivät voi muuttaa Chromen prosesseja.
Miten Code Injection toimii?
Koodin ruiskutus ei muuta levyn taustalla olevaa sovellusta. Sen sijaan se odottaa sovelluksen suorittamista ja syöttää lisäkoodin kyseiseen käynnissä olevaan prosessiin sen toiminnan muuttamiseksi.
Windows sisältää useita sovellusohjelmointirajapintoja (API), joita voidaan käyttää koodin injektointiin. Prosessi voi liittää itsensä kohdeprosessiin, jakaa muistia, kirjoittaa DLL-muistia tai muuta koodia kyseiselle muistille ja ohjata sitten kohdeprosessia suorittamaan koodi. Windows ei estä tietokoneesi prosesseja häiritsemästä toisiaan.
Saat lisätietoja teknisistä tiedoista tästä blogikirjoituksesta, jossa kerrotaan, miten kehittäjät voivat pistää DLL-tiedostoja ja tarkastella muita koodin injektion tyyppejä Windowsissa.
Joissakin tapauksissa joku voi muuttaa taustalla olevaa koodia levyllä - esimerkiksi korvaamalla DLL-pelin mukana tulleen DLL-tiedoston, jossa on muokattu, jotta huijaaminen tai piratismi on mahdollista. Tämä ei ole teknisesti "koodin ruiskutus". Koodia ei ruiskuteta käynnissä olevaan prosessiin, mutta ohjelma on sen sijaan huijattu eri DLL: n lataamiseen samalla nimellä.
Kuvaluotto: Lukatme / Shutterstock.com.