Koodin lisäys on yleistä Windowsissa. Sovellukset "injektoivat" oman koodinsa osia toiseen käynnissä olevaan prosessiin sen käyttäytymisen muuttamiseksi. Tätä tekniikkaa voidaan käyttää hyvään tai pahaan, mutta se voi joko aiheuttaa ongelmia.
Koodin injektointia kutsutaan yleisesti myös DLL-injektiona, koska injektoitu koodi on usein a-muodossa DLL (dynaaminen linkkikirjasto) -tiedosto . Sovellukset voivat kuitenkin myös injektoida prosessiin muun tyyppisiä koodeja, jotka eivät ole DLL-tiedostoja.
Mihin koodinjektiota käytetään
Koodin injektointia käytetään kaikenlaisten temppujen ja toimintojen suorittamiseen Windowsissa. Vaikka lailliset ohjelmat käyttävät sitä, myös haittaohjelmat käyttävät sitä. Esimerkiksi:
- Virustentorjuntaohjelmat injektoivat koodia usein selaimiin. He voivat käyttää sitä verkkoliikenteen seuraamiseen ja esimerkiksi vaarallisen verkkosisällön estämiseen.
- Haitalliset ohjelmat saattavat lisätä koodia verkkoselaimeesi seurataksesi paremmin selaamistasi, varastaa suojattuja tietoja, kuten salasanoja ja luottokortin numeroita, ja muuttaa selaimen asetuksia.
- Stardockin WindowBlinds, joka teemoittaa työpöydän, syöttää koodin muokata ikkunoiden piirtämistä .
- Stardockin aidat syöttävät koodia muuttaa Windows-työpöydän toimintaa .
- AutoHotkey, jonka avulla voit luoda komentosarjoja ja määrittää niille koko järjestelmän kattavat pikanäppäimet , injektoi koodin tämän saavuttamiseksi.
- Grafiikkaohjaimen kaltaiset NVIDIA: n injektoivat DLL-tiedostot suorittamaan erilaisia grafiikkaan liittyviä tehtäviä.
- Jotkut ohjelmat injektoivat DLL-tiedostoja lisätäksesi valikkovaihtoehtoja sovellukseen.
- PC-pelin huijaustyökalut injektoivat usein koodia peleihin käyttäytymisen muuttamiseksi ja epäoikeudenmukaisen edun saamiseksi muihin pelaajiin nähden.
Onko koodin injektio huono?
Tätä tekniikkaa käytetään jatkuvasti useissa Windows-sovelluksissa. Se on ainoa todellinen tapa suorittaa erilaisia tehtäviä. Verrattuna nykyaikaiseen mobiilialustaan, kuten Applen iOS tai Googlen Android, Windows-työpöytä on niin tehokas, koska jos tarjoaa tällaista joustavuutta kehittäjille.
Tietysti kaikella tällä voimalla on jonkin verran vaaraa. Koodin syöttö voi aiheuttaa ongelmia ja virheitä sovelluksissa. Google sanoo, että Windows-käyttäjät, joilla on Chrome-selaimeen injektoitu koodi, kokevat 15% todennäköisemmin Chrome-kaatumiset, minkä vuoksi Google pyrkii estämään tämän. Microsoft huomauttaa, että haitalliset sovellukset voivat käyttää koodin injektointia selaimen asetusten muuttamiseen, mikä on yksi syy siihen, että se on jo estetty Edgessä.
Microsoft-tapahtuma tarjoaa ohjeet tarkistaaksesi, onko kolmannen osapuolen DLL-tiedostoja ladattu Microsoft Outlookiin, koska ne aiheuttavat niin paljon Outlook-kaatumisia.
Kuten Microsoftin työntekijä sanoi kehittäjäblogi vuodesta 2004:
DLL-injektio ei ole koskaan turvallista. Puhut koodin ruiskuttamisesta prosessiin, jota prosessin tekijä ei ole koskaan suunnitellut, rakentanut tai testannut, ja valitsemaan tai luomaan ketju koodin ajamiseksi. Sinulla on riski luoda ajoitus-, synkronointi- tai resurssiongelmia, joita ei ollut aiemmin, tai pahentaa olemassa olevia ongelmia.
Toisin sanoen koodinsyöttö on eräänlainen likainen hakkerointi. Ideaalimaailmassa olisi turvallisempi tapa saavuttaa tämä, mikä ei aiheuttanut potentiaalista epävakautta. Koodinlisäys on kuitenkin vain normaali osa Windows-sovellusympäristöä tänään. Se tapahtuu jatkuvasti Windows-tietokoneesi taustalla. Voit kutsua sitä välttämättömäksi pahuudeksi.
Kuinka tarkistaa injektoidut DLL-tiedostot
Voit tarkistaa koodisi injektoinnin järjestelmässäsi Microsoftin tehokkaalla ohjelmalla Prosessinhallinta sovellus. Se on pohjimmiltaan Tehtävienhallinnan edistynyt versio, joka sisältää lisäominaisuuksia.
Lataa ja suorita Process Explorer, jos haluat tehdä tämän. Napsauta Näytä> Alemman ruudun näkymä> DLL-tiedostoja tai paina Ctrl + D.
Valitse prosessi yläruudusta ja etsi alaruudusta ladatut DLL-tiedostot. Yrityksen nimi -sarakkeessa on hyödyllinen tapa suodattaa tämä luettelo.
Esimerkiksi on normaalia nähdä täällä useita Microsoft Corporationin tekemiä DLL-tiedostoja, koska ne ovat osa Windowsia. On myös normaalia nähdä DLL-tiedostot, jotka on tehnyt sama yritys kuin kyseinen prosessi - "Google Inc." Chromen tapauksessa alla olevassa kuvakaappauksessa.
Täältä löydät myös muutaman “AVAST Software”: n tekemän DLL: n. Tämä tarkoittaa, että järjestelmämme Avast-haittaohjelmien torjuntaohjelmisto ruiskuttaa Chromeen koodia, kuten Avast Script Blocking -suodatinkirjasto.
Ei ole paljon tekemistä, jos huomaat koodin injektoinnin järjestelmästäsi - lukuun ottamatta ohjelman asennuksen poistamista, joka antaa koodin, jotta se ei aiheuta ongelmia. Jos esimerkiksi Chrome kaatuu säännöllisesti, saatat haluta nähdä, onko ohjelmia, jotka injektoivat koodia Chromeen, ja poista ne, jotta ne eivät häiritse Chrome-prosesseja.
Kuinka koodin ruiskutus toimii?
Koodin lisäys ei muokkaa levyn taustalla olevaa sovellusta. Sen sijaan se odottaa kyseisen sovelluksen suorittamista ja injektoi ylimääräisen koodin kyseiseen käynnissä olevaan prosessiin sen toiminnan muuttamiseksi.
Windows sisältää erilaisia sovellusohjelmointirajapinnat (API) jota voidaan käyttää koodin injektointiin. Prosessi voi liittää itsensä kohdeprosessiin, allokoida muistia, kirjoittaa DLL- tai muun koodin kyseiseen muistiin ja kehottaa sitten kohdeprosessia suorittamaan koodin. Windows ei estä tietokoneesi prosesseja häiritsemästä toisiaan näin.
Lisätietoja teknisistä tiedoista on tässä blogikirjoituksessa kuinka kehittäjät voivat injektoida DLL-tiedostoja ja tämä katsaus muun tyyppiset koodin injektoinnit Windowsissa .
Joissakin tapauksissa joku voi muuttaa taustalla olevaa koodia levyllä - esimerkiksi korvaamalla PC-pelin mukana toimitetun DLL-tiedoston muokatulla huijauksen tai piratismin mahdollistamiseksi. Teknisesti tämä ei ole "koodinsyöttö". Koodia ei ruiskuteta käynnissä olevaan prosessiin, mutta ohjelmaa huijataan sen sijaan lataamaan eri DLL samalla nimellä.
Kuvahyvitys: Lukatme /Shutterstock.com.