Hvad er kodeinjektion på Windows?
Kodeinjektion er almindelig på Windows. Applikationer "injicerer" stykker af deres egen kode til en anden løbende proces for at ændre dens adfærd. Denne teknik kan bruges til godt eller ondt, men på nogen måde kan det forårsage problemer.
Kodeindsprøjtning kaldes også almindeligvis DLL-injektion, fordi den injicerede kode ofte er i form af en DLL-fil (dynamisk link bibliotek). Men applikationer kan også injicere andre typer kode, der ikke er DLL'er, til en proces.
Hvilken kodeinjektion bruges til
Kodeindsprøjtning bruges til at udføre alle slags tricks og funktionalitet på Windows. Mens legitime programmer bruger det, bruges den også af malware. For eksempel:
- Antivirusprogrammer indsprøjter ofte kode til webbrowsere. De kan bruge den til at overvåge netværkstrafik og blokere farligt webindhold, for eksempel.
- Ondsindede programmer kan tilføje kode til din webbrowser for bedre at spore din browsing, stjæle beskyttede oplysninger som adgangskoder og kreditkortnumre og ændre dine browserindstillinger.
- Stardock's WindowBlinds, som temaer dit skrivebord, injicerer kode for at ændre, hvordan vinduer trækkes.
- Stardocks Hegn indsprøjter kode for at ændre den måde, hvorpå Windows-skrivebordet fungerer.
- AutoHotkey, som lader dig oprette scripts og tildele systembrede hurtigtaster til dem, injicerer kode for at opnå dette.
- Graphics-driveren er som NVIDIAs injicerede DLL'er til at udføre en række grafikrelaterede opgaver.
- Nogle programmer injicerer DLL'er for at tilføje yderligere menupunkter til en applikation.
- PC spil snyd værktøjer ofte indsprøjte kode i spil for at ændre deres adfærd og få en urimelig fordel over andre spillere.
Er kodeinjektion dårlig?
Denne teknik bruges konstant af en bred vifte af applikationer på Windows. Det er den eneste rigtige måde at udføre en række opgaver på. Sammenlignet med en moderne mobilplatform som Apples iOS eller Googles Android, er Windows-skrivebordet så kraftfuldt, fordi hvis det byder på denne form for fleksibilitet for udviklere.
Selvfølgelig med al den magt kommer der fare. Kodeinjektion kan forårsage problemer og fejl i applikationer. Google siger, at Windows-brugere, der har injiceret kode i deres Chrome-browser, er 15% mere tilbøjelige til at opleve Chrome-nedbrud. Derfor arbejder Google på at blokere dette. Microsoft bemærker, at kodeinjektion kan bruges af ondsindede applikationer til at manipulere med browserindstillinger, hvilket er en årsag til, at det allerede er blokeret i Edge.
Microsoft giver endda instruktioner til kontrol af, om tredjeparts DLL'er er indlæst i Microsoft Outlook, da de forårsager så mange Outlook-nedbrud.
Som Microsoft-medarbejder sætte den i en udviklerblog fra 2004:
DLL-injektion er aldrig sikkert. Du taler om sprøjtekode til en proces, der aldrig blev designet, bygget eller testet af procesens forfatter, og co-optager eller skaber en tråd til at køre den kode. Du risikerer at skabe timing, synkronisering eller ressourceproblemer, der ikke var der før eller forværre problemer, der var der.
Med andre ord er kodeinjektion en slags beskidt hack. I en ideel verden ville der være en sikrere måde at opnå dette på, som ikke forårsagede ustabilitet. Kodeinjektion er dog kun en normal del af Windows-applikationsplatformen i dag. Det sker konstant i baggrunden på din Windows-pc. Du kan kalde det et nødvendigt onde.
Sådan Check for Injected DLLs
Du kan tjekke for kodeindsprøjtning på dit system med Microsofts kraftfulde Process Explorer-program. Det er dybest set en avanceret version af Task Manager, der er fyldt med ekstra funktioner.
Download og kør Process Explorer, hvis du gerne vil gøre dette. Klik på Vis> Nedre rudevisning> DLL'er eller tryk på Ctrl + D.
Vælg en proces i øverste rude og se i den nederste rude for at se de DLL'er, der er indlæst. Kolonnen "Firmanavn" er en nyttig måde at filtrere denne liste på.
For eksempel er det normalt at se en række DLL'er lavet af "Microsoft Corporation" her, da de er en del af Windows. Det er også normalt at se DLL'er lavet af samme firma som den pågældende proces - "Google Inc." for Chrome i skærmbilledet nedenfor.
Vi kan også se et par DLL'er lavet af "AVAST Software" her. Dette indikerer, at Avast antimalware-softwaren på vores system sprøjter kode som "Avast Script Blocking Filter Library" i Chrome.
Der er ikke meget, du kan gøre, hvis du finder kodeindsprøjtning på dit system - bortset fra at afinstallere programmets indsprøjtningskode for at forhindre det i at forårsage problemer. Hvis f.eks. Chrome går i stykker regelmæssigt, kan du se, om der er programmer, der injicerer kode i Chrome, og afinstaller dem for at forhindre dem i at blive manipuleret med Chrome's processer.
Hvordan virker Code Injection Work?
Kodeindsprøjtning ændrer ikke den underliggende applikation på din disk. I stedet venter det på, at applikationen kører, og den injicerer yderligere kode i den kørende proces for at ændre, hvordan den fungerer.
Windows indeholder en række applikationsprogrammeringsgrænseflader (API'er), som kan bruges til kodeinjektion. En proces kan knytte sig til en målproces, tildele hukommelse, skrive en DLL eller en anden kode til den hukommelse, og instruer derefter målprocessen for at udføre koden. Windows forhindrer ikke processer på din computer i at forstyrre hinanden som denne.
For mere teknisk information, se dette blogindlæg forklarer, hvordan udviklere kan injicere DLL'er, og dette ser på andre typer kodeinjektioner på Windows.
I nogle tilfælde kan en person ændre den underliggende kode på disken, for eksempel ved at erstatte en DLL-fil, der følger med et pc-spil med en ændret en, der gør det muligt at bedrage eller piratkopiere. Dette er teknisk ikke "kodeinjektion." Koden indsprøjtes ikke i en kørende proces, men programmet bliver i stedet lurt til at indlæse en anden DLL med samme navn.
Billedkredit: Lukatme / Shutterstock.com.