Hemsida » hur » Vad är kodinjektion på Windows?

    Vad är kodinjektion på Windows?

    Kodinjektion är vanlig på Windows. Applikationer "injicerar" delar av sin egen kod till en annan körprocess för att ändra sitt beteende. Denna teknik kan användas för gott eller ont, men på något sätt kan det orsaka problem.

    Kodinjektion kallas också vanligen DLL-injektion, eftersom den injicerade koden ofta är i form av en DLL-fil (dynamic link library). Program kan dock även injicera andra typer av kod som inte är DLL-filer i en process.

    Vilken kodinjektion används för

    Kodinjektion används för att uppnå alla slags knep och funktionalitet på Windows. Medan legitima program använder den används den också av skadlig kod. Till exempel:

    • Antivirusprogram injicerar ofta kod i webbläsare. De kan använda den för att övervaka nätverkstrafik och blockera farligt webbinnehåll, till exempel.
    • Skadliga program kan lägga till kod i din webbläsare för att bättre följa din surfning, stjäla skyddad information som lösenord och kreditkortsnummer och ändra dina webbläsarinställningar.
    • Stardocks WindowBlinds, som temaer ditt skrivbord, sprutar in kod för att ändra hur windows dras.
    • Stardocks Staket spruter kod för att ändra hur skrivbordet på Windows fungerar.
    • AutoHotkey, som låter dig skapa skript och tilldela systemgenom genvägar till dem, injicerar kod för att uppnå detta.
    • Grafikkdrivrutin är som NVIDIAs injicerade DLL-filer för att utföra en mängd olika grafikrelaterade uppgifter.
    • Vissa program injicerar DLL-filer för att lägga till ytterligare menyalternativ i en applikation.
    • PC-spelskyddsverktyg injicerar ofta kod i spel för att modifiera sitt beteende och få en orättvis fördel gentemot andra spelare.

    Är kodinjektion dålig?

    Denna teknik används ständigt av en mängd olika applikationer på Windows. Det är det enda riktiga sättet att utföra en rad olika uppgifter. Jämfört med en modern mobilplattform som Apples iOS eller Googles Android, är skrivbordet i Windows så kraftfullt eftersom om det erbjuder denna typ av flexibilitet för utvecklare.

    Självklart kommer med all den kraften någon fara. Kodinjektion kan orsaka problem och fel i applikationer. Google säger att Windows-användare som har inmatat kod i sin Chrome-webbläsare är 15% mer benägna att uppleva Chrome-krascher. Därför arbetar Google med att blockera detta. Microsoft konstaterar att kodinjektion kan användas av skadliga program för att manipulera med webbläsarinställningar, vilket är en orsak till att den redan är blockerad i Edge.

    Microsoft tillhandahåller även instruktioner för att kontrollera om DLL-filer från tredje part laddas i Microsoft Outlook, eftersom de orsakar så många Outlook-kraschar.

    Som en Microsoft-anställd lade den i en utvecklingsblogga från 2004:

    DLL-injektion är aldrig säker. Du pratar om sprutkod i en process som aldrig konstruerades, byggdes eller testades av processens författare och samordnade eller skapade en tråd för att köra den koden. Du riskerar att skapa tidsinställningar, synkronisering eller resursfrågor som inte fanns före eller förvärrade problem som var där.

    Med andra ord är kodinjektion typ av en smutsig hack. I en idealisk värld skulle det finnas ett säkrare sätt att uppnå detta som inte orsakade potentiell instabilitet. Kodinjektion är dock bara en vanlig del av Windows-applikationsplattformen idag. Det händer ständigt i bakgrunden på din Windows-dator. Du kan kalla det en nödvändig ondska.

    Så här kontrollerar du för Injected DLLs

    Du kan kontrollera kodinjicering på ditt system med Microsofts kraftfulla Process Explorer-program. Det är i grunden en avancerad version av Aktivitetshanteraren som är förpackad med ytterligare funktioner.

    Hämta och kör Process Explorer om du vill göra det här. Klicka på Visa> Nedre paneldisplay> DLL-filer eller tryck Ctrl + D.

    Välj en process i den övre rutan och titta i den nedre rutan för att se de DLL-filer som laddas. Kolumnen "Företagsnamn" är ett användbart sätt att filtrera den här listan.

    Det är till exempel normalt att se en mängd olika DLL-filer som gjorts av "Microsoft Corporation" här, eftersom de ingår i Windows. Det är också normalt att se DLL-filer som tillverkats av samma företag som processen i fråga - "Google Inc." när det gäller Chrome i skärmdumpen nedan.

    Vi kan också fånga några DLL-filer som gjorts av "AVAST Software" här. Detta indikerar att Avast antimalware-programvaran på vårt system sprutar kod som "Avast Script Blocking Filter Library" i Chrome.

    Det finns inte mycket du kan göra om du hittar kodinjektion på ditt system - förutom att avinstallera programinmatningskoden för att förhindra att det orsakar problem. Om Chrome till exempel kraschar regelbundet kanske du vill se om det finns några program som injicerar kod i Chrome och avinstallerar dem för att hindra dem från att manipulera med Chrome: s processer.

    Hur fungerar kodinsprutning?

    Kodinjektion ändrar inte det underliggande programmet på din skiva. Istället väntar det på att applikationen körs och den sprutar in ytterligare kod till den pågående processen för att ändra hur den fungerar.

    Windows innehåller en mängd applikationsprogrammeringsgränssnitt (API) som kan användas för kodinjektion. En process kan fästa sig i en målprocess, tilldela minne, skriva en DLL eller annan kod till det minnet och instruera sedan målprocessen att köra koden. Windows hindrar inte processer på din dator från att störa varandra så här.

    För mer teknisk information, kolla in det här blogginlägget och förklara hur utvecklare kan injicera DLL-filer och detta ser på andra typer av kodinjektion på Windows.

    I vissa fall kan någon ändra den underliggande koden på disken, till exempel genom att ersätta en DLL-fil som följer med ett PC-spel med en modifierad för att möjliggöra fusk eller piratkopiering. Detta är tekniskt inte "kodinjektion." Koden injiceras inte i en körprocess, men programmet luras istället i att ladda en annan DLL med samma namn.

    Bildkrediter: Lukatme / Shutterstock.com.