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.
Minkälaista koodinvirtausta käytetään
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:
- Virustentorjuntaohjelmat usein pistää koodin web-selaimiin. He voivat käyttää sitä valvomaan verkkoliikennettä ja estämään esimerkiksi vaarallisen verkkosisällön.
- Haitalliset ohjelmat voivat lisätä koodia verkkoselaimellesi, jotta voit seurata selaamistasi paremmin, varastaa suojattuja tietoja, kuten salasanoja ja luottokorttinumeroita, ja muuttaa selaimen asetuksia.
- Stardockin WindowBlinds, joka teemaa työpöydällesi, injektoi koodin muuttamalla ikkunat piirretään.
- Stardockin aidat pistää koodin muuttaa Windows-työpöydän tapaa.
- AutoHotkey, jonka avulla voit luoda skriptejä ja antaa järjestelmän laajuisia pikanäppäimiä, injektoi koodin tämän suorittamiseksi.
- Grafiikkaohjaimen kaltaiset NVIDIAn injektoivat DLL-tiedostot, jotta voidaan tehdä erilaisia grafiikka-tehtäviä.
- Jotkut ohjelmat injektoivat DLL-tiedostot lisäämällä lisävalintoja sovellukseen.
- PC: n pelinmuodostustyökalut usein pistää koodin peliin muokkaamaan käyttäytymistään ja saamaan epäoikeudenmukaista etua muihin pelaajia kohtaan.
Onko koodi-injektio huono?
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 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.
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.
Kuinka tarkistaa injektoidut DLL-tiedostot
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.
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.
Kuinka Code Injection toimii?
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.