
La inyección de DLL reflectiva es una técnica de inyección de bibliotecas en la que se emplea el concepto de programación reflectiva para realizar la carga de una biblioteca desde la memoria en un proceso anfitrión.
La inyección de DLL reflectante es una técnica de inyección de bibliotecas en la que se emplea el concepto de programación reflectante para realizar la carga de una biblioteca desde memoria en un proceso anfitrión. Como tal, la biblioteca es responsable de cargarse a sí misma implementando un cargador mínimo de archivos ejecutables portátiles (PE). Puede entonces controlar, con una interacción mínima con el sistema y el proceso anfitrión, cómo se cargará e interactuará con el anfitrión.
La inyección funciona desde Windows NT4 hasta Windows 8 inclusive, ejecutándose en x86, x64 y ARM donde corresponda.
El proceso de inyectar remotamente una biblioteca en un proceso tiene dos partes. En primer lugar, la biblioteca que deseas inyectar debe escribirse en el espacio de direcciones del proceso objetivo (denominado aquí proceso anfitrión). En segundo lugar, la biblioteca debe cargarse en ese proceso anfitrión de tal manera que se cumplan las expectativas de tiempo de ejecución de la biblioteca, como resolver sus importaciones o reubicarla en una ubicación adecuada en memoria.
Suponiendo que tenemos ejecución de código en el proceso anfitrión y que la biblioteca que deseamos inyectar se ha escrito en una ubicación arbitraria de memoria en el proceso anfitrión, la inyección de DLL reflectante funciona de la siguiente manera.
Abre el archivo 'rdi.sln' en Visual Studio C++ y compila la solución en modo Release para generar inject.exe y reflective_dll.dll
Para probar, usa inject.exe para inyectar reflective_dll.dll en un proceso anfitrión mediante un ID de proceso, por ejemplo:
inject.exe 1234
Licenciado bajo una licencia BSD de 3 cláusulas; consulta LICENSE.txt para más detalles.