Injecția de cod este obișnuită pe Windows. Aplicațiile „injectează” bucăți din propriul cod într-un alt proces care rulează pentru a-i modifica comportamentul. Această tehnică poate fi utilizată pentru bine sau rău, dar în orice mod poate provoca probleme.
Injectarea codului este, de asemenea, numită în mod obișnuit injecție DLL, deoarece codul injectat este adesea sub forma unui Fișier DLL (biblioteca de legături dinamice) . Cu toate acestea, aplicațiile ar putea injecta și alte tipuri de cod care nu sunt DLL-uri într-un proces.
Pentru ce se utilizează injecția de cod
Injecția de cod este utilizată pentru a realiza tot felul de trucuri și funcționalități pe Windows. În timp ce programele legitime îl folosesc, este folosit și de malware. De exemplu:
- Programele antivirus injectează adesea cod în browserele web. Îl pot folosi pentru a monitoriza traficul de rețea și a bloca conținut web periculos, de exemplu.
- Programele rău intenționate ar putea adăuga cod în browserul dvs. web pentru a vă urmări mai bine navigarea, pentru a fura informații protejate, cum ar fi parolele și numerele cardului de credit și pentru a modifica setările browserului.
- Stardock’s WindowBlinds, care vă temă desktopul, injectează cod modificați modul în care sunt desenate ferestrele .
- Stardock’s Fences injectează cod schimbați modul în care funcționează desktopul Windows .
- AutoHotkey, care vă permite creați scripturi și atribuiți-le tastele rapide la nivel de sistem , injectează cod pentru a realiza acest lucru.
- Driverele grafice sunt ca DLL-urile injectabile ale NVIDIA pentru a realiza o varietate de sarcini legate de grafică.
- Unele programe injectează DLL-uri pentru a adăuga opțiuni de meniu suplimentare unei aplicații.
- Instrumentele de înșelăciune a jocurilor pe PC injectează adesea cod în jocuri pentru a-și modifica comportamentul și a obține un avantaj nedrept față de ceilalți jucători.
Injecția de cod este rea?
Această tehnică este utilizată în mod constant de o mare varietate de aplicații pe Windows. Este singura modalitate reală de a îndeplini o varietate de sarcini. În comparație cu o platformă mobilă modernă, cum ar fi iOS-ul Apple sau Android-ul Google, desktop-ul Windows este atât de puternic, deoarece, dacă oferă acest tip de flexibilitate dezvoltatorilor.
Desigur, cu toată această putere vine un anumit pericol. Injecția de cod poate provoca probleme și erori în aplicații. Google spune că utilizatorii Windows care au codul injectat în browserul Chrome au 15% mai multe șanse de a suferi blocări Chrome, motiv pentru care Google lucrează la blocarea acestui lucru. Microsoft observă că injectarea de cod ar putea fi utilizată de aplicațiile rău intenționate pentru a modifica setările browserului, motiv pentru care este deja blocat în Edge.
Evenimentul Microsoft oferă instrucțiuni pentru a verifica dacă DLL-urile terțe sunt încărcate în Microsoft Outlook, deoarece provoacă atât de multe blocări Outlook.
După cum a spus-o un angajat Microsoft într-un blogul dezvoltatorului din 2004:
Injecția DLL nu este niciodată sigură. Vorbiți despre stropirea codului într-un proces care nu a fost niciodată proiectat, construit sau testat de autorul procesului și că a cooptat sau a creat un fir pentru a rula codul respectiv. Riscați să creați probleme de sincronizare, sincronizare sau resurse care nu existau înainte sau să exacerbați problemele care existau acolo.
Cu alte cuvinte, injectarea de cod este un fel de hack murdar. Într-o lume ideală, ar exista o modalitate mai sigură de a realiza acest lucru, care nu a cauzat o potențială instabilitate. Cu toate acestea, injectarea de cod este doar o parte normală a platformei de aplicații Windows de astăzi. Se întâmplă în mod constant în fundal pe computerul dvs. Windows. S-ar putea să-l numiți un rău necesar.
Cum să verificați DLL-urile injectate
Puteți verifica injecția de cod pe sistemul dvs. cu ajutorul sistemului puternic Microsoft Explorer de proces cerere. Este în esență o versiune avansată a Managerului de activități, plină de funcții suplimentare.
Descărcați și rulați Process Explorer dacă doriți să faceți acest lucru. Faceți clic pe Vizualizare> Vizualizare panou inferior> DLL-uri sau apăsați Ctrl + D.
Selectați un proces în panoul superior și căutați în panoul inferior pentru a vedea DLL-urile încărcate. Coloana „Nume companie” oferă o modalitate utilă de a filtra această listă.
De exemplu, este normal să vedeți aici o varietate de DLL-uri realizate de „Microsoft Corporation”, deoarece fac parte din Windows. De asemenea, este normal să vedeți DLL-uri realizate de aceeași companie ca procesul în cauză - „Google Inc.” în cazul Chrome din captura de ecran de mai jos.
De asemenea, putem vedea aici câteva DLL-uri realizate de „AVAST Software”. Acest lucru indică faptul că software-ul antimalware Avast din sistemul nostru injectează cod precum „Biblioteca de filtre Avast Script Blocking” în Chrome.
Nu puteți face mult dacă găsiți injectarea de cod în sistemul dvs. - în afară de dezinstalarea programului de injectare a codului pentru a preveni apariția problemelor. De exemplu, dacă Chrome se blochează în mod regulat, vă recomandăm să vedeți dacă există programe care injectează cod în Chrome și să le dezinstalați pentru a preveni modificarea proceselor Chrome.
Cum funcționează injectarea codului?
Injecția de cod nu modifică aplicația subiacentă de pe disc. În schimb, așteaptă ca acea aplicație să ruleze și injectează cod suplimentar în acel proces de rulare pentru a schimba modul în care funcționează.
Windows include o varietate de interfețe de programare a aplicațiilor (API) care poate fi folosit pentru injectarea codului. Un proces se poate atașa la un proces țintă, poate aloca memorie, poate scrie o DLL sau alt cod în memoria respectivă, apoi poate instrui procesul țintă să execute codul. Windows nu împiedică procesele de pe computerul dvs. să interfereze unele cu altele astfel.
Pentru mai multe informații tehnice, consultați această postare pe blog care explică modul în care dezvoltatorii pot injecta DLL-uri și această privire la alte tipuri de injectare de cod pe Windows .
În unele cazuri, cineva ar putea schimba codul de bază de pe disc - de exemplu, prin înlocuirea unui fișier DLL care vine cu un joc pe PC cu unul modificat pentru a permite înșelăciunea sau pirateria. Din punct de vedere tehnic, aceasta nu este „injectarea codului”. Codul nu este injectat într-un proces în curs de desfășurare, dar programul este înșelat pentru a încărca un alt DLL cu același nume.
Credit de imagine: Lukatme /Shutterstock.com.