Koodin injektio on yleinen Windowsissa. Sovellukset "pistää" oman koodinsa osaksi toista käynnissä olevaa prosessia sen käyttäytymisen muokkaamiseksi. Tätä tekniikkaa voidaan käyttää hyväksi tai pahaksi, mutta kummassakin tapauksessa se voi aiheuttaa ongelmia.
Koodin injektio kutsutaan myös nimellä DLL-injektio, koska injektoitu koodi on usein DLL-tiedoston (dynaamisen linkkikirjaston) muodossa. Sovellukset voivat kuitenkin myös pistää muita koodeja, jotka eivät ole DLL: iksi prosessiksi.
Koodin injektioita käytetään kaikenlaisten temppujen ja toimintojen suorittamiseen Windowsissa. Vaikka lailliset ohjelmat käyttävät sitä, sitä käyttävät myös haittaohjelmat. Esimerkiksi:
Tätä tekniikkaa käytetään jatkuvasti laajalla valikoimalla Windows-sovelluksia. Se on ainoa todellinen tapa tehdä erilaisia tehtäviä. Verrattuna nykyaikaiseen mobiilialustaan, kuten Applen iOS tai Googlen Android, Windows-työpöytä on niin tehokas, koska se tarjoaa tällaista joustavuutta kehittäjille.
Tietenkin, kaikki tämä voima tulee jonkin verran vaaraa. Koodin injektio voi aiheuttaa ongelmia ja vikoja sovelluksissa. Google kertoo, että Chrome-käyttäjälle, joka on koodattu Chrome-selaimellaan, on 15 prosenttia todennäköisemmin kokeneet Chrome-kaatumiset, minkä vuoksi Google yrittää estää tämän. Microsoft huomauttaa, että haittaohjelmat voivat käyttää koodin injektioita salasanojen selaamiseen, mikä on yksi syy, joka on jo estetty Edgessä.
Microsoft antaa myös ohjeita tarkistaa, onko kolmannen osapuolen DLL-tiedostot ladattu Microsoft Outlookissa, koska ne aiheuttavat niin monta Outlookin kaatumista.
Microsoftin työntekijä asetti sen kehittäjäblogiksi vuodelta 2004:
DLL-injektio ei ole koskaan turvallinen. Puhutteletko koodin prosessiksi, jota prosessi ei ole koskaan suunnitellut, rakennettu tai testattu prosessin tekijän toimesta eikä synnyttänyt tai luonut lankaa kyseisen koodin suorittamiseen. Sinulla on riski luoda ajoitus, synkronointi tai resurssikysymykset, jotka eivät olleet siellä ennen tai pahentaneet ongelmia, jotka olivat siellä.
Toisin sanoen koodi injektio on eräänlainen likainen hakata. Ihanteellisessa maailmassa olisi turvallisempi tapa saavuttaa tämä, joka ei aiheuttanut potentiaalista epävakautta. Kuitenkin koodin injektio on vain normaali osa Windows-sovellusympäristöä tänään. Se tapahtuu jatkuvasti taustalla Windows-tietokoneessa. Sinä saatat kutsua sitä tarpeelliseksi pahaksi.
Voit tarkistaa järjestelmän koodinpurkauksen Microsoftin Power Process Explorer -sovelluksella. Se on periaatteessa kehittynyt versio Task Manager -ohjelmasta, joka on täynnä lisäominaisuuksia.
Lataa ja suorita Process Explorer, jos haluat tehdä tämän. Napsauta Näytä> Alavalikon näkymä> DLL-kohtaa tai paina Ctrl + D.
Valitse prosessi yläosasta ja tarkastele alalaidassa olevia ladattavia DLL-tiedostoja. Yrityksen nimi-sarake on hyödyllinen tapa suodattaa tämä luettelo.
Esimerkiksi on tavallista nähdä erilaisia "Microsoft Corporation" -yrityksen DLL-tiedostoja, koska ne ovat osa Windowsia. On myös normaalia nähdä saman yrityksen tekemät DLL-kohteet kuin kyseinen prosessi - "Google Inc." Chromen tapauksessa alla olevassa kuvakaappauksessa.
Voimme myös nähdä joitain DLL-tiedostoja, jotka on valmistanut "AVAST Software" täällä. Tämä osoittaa, että järjestelmämme Avastin haittaohjelmien torjuntaohjelmisto pistää koodin, kuten "Avast Script Blocking -suodatuskirjasto", Chromeen.
Sinun ei tarvitse tehdä paljon, jos löydät koodinpudotuksen järjestelmästäsi, ennen kuin asennat ohjelman injektointikoodin, jotta se ei aiheuta ongelmia. Jos Chrome esimerkiksi kaatuu säännöllisesti, saatat haluta nähdä, onko ohjelmia, joiden avulla koodia syötetään Chromeen, ja poistaa ne käytöstä, jotta ne eivät voi peukata Chrome-prosesseja.
Koodin injektio ei muuta levyn taustalla olevaa sovellusta. Sen sijaan se odottaa, että sovellus ajaa, ja se injektoi lisäkoodin kyseiseen käynnissä olevaan prosessiin sen toimintatavan muuttamiseksi.
Windowsissa on useita sovellusohjelmointirajapintoja (API), joita voidaan käyttää koodin injektointiin. Prosessi voi kiinnittyä kohdeprosessiin, jakaa muistia, kirjoittaa DLL: n tai muun koodin tähän muistiin ja sitten ohjeistaa kohdeprosessin koodin suorittamiseksi. Windows ei estä tietokoneesi prosesseja puuttumasta toisiinsa näin.
Lisätietoja teknisistä tiedoista on tässä blogikirjassa, jossa kerrotaan, miten kehittäjät voivat pistää DLL-tiedostoja ja tarkastella muita Windows-koodin injektioita.
Joissakin tapauksissa joku saattaa muuttaa levyllä olevaa taustalla olevaa koodia - esimerkiksi korvaamalla DLL-tiedosto, joka sisältää PC-pelin, jolla on muunneltu, jotta huijaaminen tai piratismi.Tämä ei teknisesti ole "koodin injektio". Koodia ei syötetä käynnissä olevaan prosessiin, mutta ohjelmaa on sen sijaan petkuttu lataamaan eri DLL-tiedosto, jolla on sama nimi.
Image Credit: Lukatme / Shutterstock.com.