Hva er kodeinjeksjon på Windows?
Kodeinjeksjon er vanlig på Windows. Programmer "injiser" deler av sin egen kode i en annen løpende prosess for å endre sin oppførsel. Denne teknikken kan brukes til godt eller ondt, men uansett kan det føre til problemer.
Kodeinjeksjon kalles også ofte DLL-injeksjon fordi den injiserte koden ofte er i form av en DLL-fil (dynamisk lenkebibliotek). Imidlertid kan applikasjoner også injisere andre typer kode som ikke er DLLer i en prosess.
Hvilken kodeinjeksjon brukes til
Kodeinjeksjon brukes til å utføre alle slags triks og funksjonalitet på Windows. Mens legitime programmer bruker den, brukes den også av skadelig programvare. For eksempel:
- Antivirusprogrammer injiserer ofte kode i nettlesere. De kan bruke den til å overvåke nettverkstrafikk og blokkere farlig webinnhold, for eksempel.
- Ondsinnede programmer kan legge til kode i nettleseren din for å bedre spore surfing, stjele beskyttet informasjon som passord og kredittkortnummer, og endre nettleserinnstillingene dine.
- Stardock's WindowBlinds, som temaer skrivebordet ditt, injiserer kode for å endre hvordan vinduer trekkes.
- Stardocks Fences injiserer kode for å endre måten Windows-skrivebordet fungerer på.
- AutoHotkey, som lar deg lage skript og tilordne system-brede hurtigtaster til dem, injiserer kode for å oppnå dette.
- Grafikkdriveren er som NVIDIAs injeksjons-DLL-er for å utføre en rekke grafikkrelaterte oppgaver.
- Noen programmer injiserer DLLer for å legge til flere menyalternativer til et program.
- PC-spill-jukseværktøy injiserer ofte kode i spill for å endre deres oppførsel og få en urettferdig fordel over andre spillere.
Er kodeinjeksjon dårlig?
Denne teknikken brukes konstant av et bredt utvalg av applikasjoner på Windows. Det er den eneste virkelige måten å utføre en rekke oppgaver på. Sammenlignet med en moderne mobilplattform som Apples iOS eller Googles Android, er Windows-skrivebordet så kraftig fordi hvis det tilbyr denne typen fleksibilitet for utviklere.
Selvfølgelig med all den kraften kommer det fare. Kodeinjeksjon kan forårsake problemer og feil i applikasjoner. Google sier at Windows-brukere som har kodeinnspilt i Chrome-nettleseren, er 15% mer sannsynlig å oppleve Chrome-krasj, og derfor jobber Google med å blokkere dette. Microsoft bemerker at kodeinnsprøytning kan brukes av ondsinnede applikasjoner for å manipulere med nettleserinnstillinger, noe som er en grunn til at den allerede er blokkert i kant.
Microsoft gir til og med instruksjoner for å sjekke om tredjeparts DLLer er lastet i Microsoft Outlook, da de forårsaker så mange Outlook krasjer.
Som en Microsoft-ansatt satte den i en utviklerblogg fra 2004:
DLL-injeksjon er aldri trygg. Du snakker om sprøytingskode i en prosess som aldri ble designet, bygget eller testet av prosessforfatteren, og samtykker eller lager en tråd for å kjøre den koden. Du har risiko for å opprette timing, synkronisering eller ressursproblemer som ikke var der før eller forverrede problemer som var der.
Kodeinnsprøytning er med andre ord en slags skitten hack. I en ideell verden ville det være en sikrere måte å oppnå dette som ikke forårsaket potensiell ustabilitet. Kodeinjeksjon er imidlertid bare en vanlig del av Windows-applikasjonsplattformen i dag. Det skjer stadig i bakgrunnen på din Windows-PC. Du kan kalle det et nødvendig onde.
Slik sjekker du om injiserte DLLer
Du kan sjekke om kodeinjeksjon på systemet ditt med Microsofts kraftige Application Explorer-program. Det er i utgangspunktet en avansert versjon av oppgavebehandleren som er fylt med flere funksjoner.
Last ned og kjør Prosess Explorer hvis du vil gjøre dette. Klikk på Vis> Nedre panelvisning> DLLer eller trykk Ctrl + D.
Velg en prosess i toppruten og se i den nedre ruten for å se DLLene som er lastet. Kolonnen "Firmanavn" er en nyttig måte å filtrere denne listen på.
For eksempel er det normalt å se en rekke DLLer laget av "Microsoft Corporation" her, da de er en del av Windows. Det er også normalt å se DLLer laget av samme firma som prosessen i spørsmålet - "Google Inc." i tilfelle Chrome i skjermbildet under.
Vi kan også se noen DLLer laget av "AVAST Software" her. Dette indikerer at Avast antimalware-programvaren på vårt system injiserer kode som "Avast Script Blocking Filter Library" i Chrome.
Det er ikke mye du kan gjøre hvis du finner kodeinjeksjon på systemet ditt, bortsett fra å avinstallere programkoden for å forhindre at den forårsaker problemer. For eksempel, hvis Chrome krasjer regelmessig, kan det hende du vil se om det finnes programmer som injiserer kode i Chrome, og avinstaller dem for å hindre dem i å tukle med Chrome's prosesser.
Hvordan fungerer kodeinnsprøytning?
Kodeinnsprøytning endrer ikke det underliggende programmet på disken din. I stedet venter det at applikasjonen skal kjøre, og den injiserer ekstra kode i den kjørende prosessen for å endre hvordan den fungerer.
Windows inneholder en rekke applikasjonsprogrammeringsgrensesnitt (APIer) som kan brukes til kodeinjeksjon. En prosess kan knytte seg til en målprosess, tildele minne, skrive en DLL eller en annen kode til det minnet, og instruer deretter målprosessen for å utføre koden. Windows hindrer ikke prosesser på datamaskinen din til å forstyrre hverandre som dette.
For mer teknisk informasjon, sjekk ut dette blogginnlegget forklarer hvordan utviklere kan injisere DLLer, og dette ser på andre typer kodeinjeksjon på Windows.
I noen tilfeller kan noen endre den underliggende koden på disken, for eksempel ved å erstatte en DLL-fil som følger med et PC-spill med en endret en for å aktivere utro eller piratkopiering. Dette er teknisk ikke "kodeinjeksjon." Koden blir ikke injisert i en løpende prosess, men programmet blir i stedet lurt til å laste inn en annen DLL med samme navn.
Bilde Kreditt: Lukatme / Shutterstock.com.