A kód injekciót általában DLL-beadásnak is nevezik, mivel az injektált kód gyakran DLL (dynamic link library) fájl formájában található. Az alkalmazások azonban másfajta kódokat is befecskendezhetnek, amelyek nem DLL-ek egy folyamatba.
Mi a kódbevitelt használják
A kódbevitel mindenféle trükköt és funkciót valósít meg a Windows rendszeren. Bár a törvényes programok ezt használják, a rosszindulatú programok is használják. Például:
- A víruskereső programok gyakran injektálják a kódot a webböngészőkbe. Használhatják például a hálózati forgalom megfigyelésére és a veszélyes webes tartalmak blokkolására.
- A rosszindulatú programok kódot adhatnak hozzá böngészőjéhez, hogy jobban nyomon követhessék a böngészést, ellopjanak védett adatokat, például jelszavakat és hitelkártyaszámokat, és módosítsák a böngésző beállításait.
- A Stardock's WindowBlinds, amely az asztal témáit tünteti fel, injektál kódot az ablakok rajzolásának módosítására.
- A Stardock's Kerítések injektálják a kódot, hogy megváltoztassák a Windows asztal működését.
- Az AutoHotkey, amely lehetővé teszi szkriptek létrehozását és rendszerszintű gyorsbillentyűket hozzárendel, végrehajtja ezt a kódot.
- A grafikus illesztőprogramok, mint például az NVIDIA DLL-ek, befecskendezik a különböző grafikai feladatokat.
- Egyes programok befecskendezik a DLL-ket, hogy további funkciókat adjanak hozzá egy alkalmazáshoz.
- A PC-s játékcsaló eszközök gyakran injekciózzák a kódot játékba, hogy megváltoztassák viselkedésüket, és tisztességtelen előnyhöz jussanak más játékosok ellen.
A kód-befecskendezés rossz?
Ezt a technikát folyamatosan a Windows számos alkalmazásán használja. Ez az egyetlen igazi módja a különböző feladatok elvégzésének. Összehasonlítva egy modern mobil platformmal, mint az Apple iOS vagy a Google Android, a Windows asztal annyira hatalmas, mert ha ezt a fajta rugalmasságot kínálja a fejlesztőknek.
Persze, minden erővel jön valami veszély. A kódbetöltés problémákat és hibákat okozhat az alkalmazásokban. A Google azt állítja, hogy a Chrome böngészőjébe beírt kóddal rendelkező Windows felhasználók 15% -kal nagyobb eséllyel tapasztalhatják meg Chrome összeomlását, ezért a Google ezt blokkolja. A Microsoft megjegyzi, hogy a rosszindulatú alkalmazások a kód befecskendezését használhatják a böngészőbeállítások módosításához, ami az egyik oka annak, hogy az már blokkolt az Edge-ben.
A Microsoft még útmutatást ad annak ellenőrzésére is, hogy harmadik féltől származó DLL-eket betöltött-e a Microsoft Outlook programba, mert ilyen sok Outlook összeomlást okoznak.
A Microsoft alkalmazottai 2004-ben fejlesztői blogként tüntették fel:
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.
Más szóval, a kód injekció piszkos hack. Ideális világban biztonságosabb módon lehetne elérni ezt, ami nem okozott potenciális instabilitást. Azonban a kód befecskendezése csak egy normális része a Windows alkalmazásplatformnak. Ez folyamatosan történik a háttérben a Windows PC-n. Ezt szükségszerű gonosznak nevezheted.
Az injektált DLL-ek ellenőrzése
A Microsoft hatékony Process Explorer alkalmazásával ellenőrizheti a rendszeren történő kódbeillesztést. Alapvetően a Task Manager fejlett verziója tele van kiegészítő funkciókkal.
Töltse le és futtassa a Process Explorer programot, ha ezt szeretné tenni. Kattintson a Nézet> Alsó sávnézet> DLL elemekre, vagy nyomja meg a Ctrl + D billentyűkombinációt.
Például, normális, ha a "Microsoft Corporation" által készített különböző DLL-eket látja itt, mivel ezek a Windows részei. Ugyancsak normális, ha a kérdéses folyamatban ugyanazt a vállalatot készítette el, mint a "Google Inc.", a Chrome esetében az alábbi képernyőképen.
Az "AVAST Software" által készített néhány DLL-t is itt találhatjuk. Ez azt jelzi, hogy a rendszerünkben található Avast antimalware szoftvere az "Avast Script blokkoló szűrőkönyvtár" kódját injektálja a Chrome-ba.
Hogyan működik a kódbevitel?
A kódbevitel nem módosítja a lemezen található alapul szolgáló alkalmazást. Ehelyett arra vár, hogy az alkalmazás fusson, és injektál további kódot a futási folyamatba annak megváltoztatásához, hogyan működik.
A Windows számos alkalmazási programozási interfészt (API-t) tartalmaz, amelyeket a kód injektálásához használhat. A folyamat magába foglalhatja a célfolyamatot, eloszthatja a memóriát, írhat DLL-t vagy más kódot a memóriába, majd utasíthatja a célfolyamatot a kód végrehajtására. A Windows nem akadályozza meg, hogy a számítógépen zajló folyamatok ne befolyásolják egymást.
További technikai információkért nézze meg ezt a blogbejegyzést, amely megmagyarázza, hogy a fejlesztők milyen módon tudják beadni a DLL-eket, és ez a másfajta kód-befecskendezés Windows rendszeren történő megvizsgálása.
Bizonyos esetekben valaki megváltoztathatja a lemezen található alapul szolgáló kódot - például egy olyan PC-játékhoz mellékelt DLL fájl cseréjével, amelynek módosítása lehetővé teszi a csalást vagy a kalózkodást.Ez technikailag nem "kód befecskendezés". A kódot nem futtatja be egy futó folyamatba, hanem a programot úgy becsapják, hogy egy másik azonos nevű DLL-et töltenek be.