
L'iniezione DLL riflessiva è una tecnica di iniezione di librerie in cui il concetto di programmazione riflessiva viene impiegato per eseguire il caricamento di una libreria dalla memoria in un processo host.
L'iniezione di DLL riflessiva è una tecnica di iniezione di librerie in cui il concetto di programmazione riflessiva viene impiegato per eseguire il caricamento di una libreria dalla memoria in un processo host. In quanto tale, la libreria è responsabile del proprio caricamento implementando un caricatore minimale di file Portable Executable (PE). Può quindi gestire, con un'interazione minima con il sistema host e il processo, come si caricherà e interagirà con l'host.
L'iniezione funziona da Windows NT4 fino a Windows 8 incluso, su architetture x86, x64 e ARM dove applicabile.
Il processo di iniezione remota di una libreria in un processo è duplice. In primo luogo, la libreria che si desidera iniettare deve essere scritta nello spazio degli indirizzi del processo di destinazione (di seguito denominato processo host). In secondo luogo, la libreria deve essere caricata nel processo host in modo tale che le aspettative di runtime della libreria siano soddisfatte, come la risoluzione delle importazioni o il suo rilocamento in una posizione adeguata in memoria.
Supponendo di avere l'esecuzione del codice nel processo host e che la libreria da iniettare sia stata scritta in una posizione arbitraria della memoria del processo host, l'iniezione di DLL riflessiva funziona come segue.
Aprire il file 'rdi.sln' in Visual Studio C++ e compilare la soluzione in modalità Release per generare inject.exe e reflective_dll.dll
Per testare, utilizzare inject.exe per iniettare reflective_dll.dll in un processo host tramite un ID di processo, ad esempio:
inject.exe 1234
Concesso in licenza secondo una licenza BSD a 3 clausole; si prega di consultare LICENSE.txt per i dettagli.