Cómo inyectar una DLL a través del proceso de depuración
2. Para encontrar el punto de entrada del proceso de destino, puede usar la función en ImageHlp para completar.
3. Guarde el código de la entrada del proceso de destino.
4. Escriba LoadLibrary (MyDll) en el punto de entrada del proceso de destino para lograr la inyección de Dll.
5. Utilice ResumeThread para ejecutar el proceso de destino.
6. Luego, el proceso de destino ejecuta LoadLibrary (MyDll) para lograr la inyección de DLL.
7. Después de que el proceso de destino ejecute LoadLibrary (MyDll), el código original se volverá a escribir en el punto de entrada del proceso de destino.
8. El proceso de destino Jmp a la entrada original y continúa ejecutando el programa.
Se puede ver desde el principio que la DLL inyectada se inyecta cuando el proceso de destino comienza a ejecutarse y no se ejecuta junto con el programa de depuración, por lo que el programa anterior no tiene ninguna limitación. La clave de este programa reside en los pasos 6, 7 y 8. La implementación de este método requiere la cooperación del proceso de monitoreo y la DLL. A continuación, analice el código.
Durante el proceso de monitoreo, cree un FileMapping para guardar el código de entrada del proceso de destino y garantizar que se pueda acceder a la DLL. En el paso 7 se implementa la escritura del código de destino original en el punto de entrada del proceso de destino.