Dll injection: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
ortografia
Botcrux (discussione | contributi)
m Bot: correzione andate a capo e spazi
Riga 4:
 
== Principi generali di funzionamento ==
 
La dll injection si basa nel scrivere il codice che si vuole far eseguire a un altro processo in una [[Dynamic-link library|libreria dinamica]] (dll su [[Microsoft Windows]]). Quindi si avvia un programma che carica questa dll nel processo esterno (ovviamente con privilegi superiori rispetto al nostro processo) e il sistema operativo vede il codice come se fosse eseguito dal processo esterno e non dal nostro processo.
 
== Principi approfonditi di funzionamento (con esempio pratico) ==
 
Analizziamo in dettaglio il funzionamento di un programma che inietta una dll in un altro processo. Un esempio renderà di più facile comprensione l'[[algoritmo]]
 
"hack.exe" deve fare eseguire il suo codice all'interno del processo "msnmsgr.exe". Per semplificare assumeremo che "hack.exe" conosca già il PID (process identifier, usato per identificare univocamente un processo in esecuzione nel sistema) di "msnmsgr.exe".
 
-Viene creata la dll "fnc.dll" e, all'interno della DllMain, viene inserito il codice da far eseguire ad "msnmsgr.exe".
 
-A questo punto "hack.exe" chiama OpenProcess() con il PID di "msnmsgr.exe" che permette appunto di creare un handle a un processo attivo.
 
-"hack.exe" chiama la funzione VirtualAllocEx() per allocare all'interno del processo "msnmsgr.exe" uno spazio di memoria
 
-"hack.exe" chiama la funzione WriteProcessMemory() per scrivere all'interno dello spazio di memoria appena allocata la stringa "func.dll\0"
Riga 159 ⟶ 157:
 
== Difesa ==
 
La miglior difesa consiste nell'installare un [[HIPS (software)|HIPS]] che intercetti le dll injection.