Red de conocimiento informático - Material del sitio web - Cómo agregar una DLL a su programa

Cómo agregar una DLL a su programa

Existen varios métodos para inyectar DLL en el programa principal de Windows de la siguiente manera

1. Modificar el registro

Modificar el registro HKEY_LOCAL_MACHINE-gt SOFTWARE-gt; gt;CurrentViersion-gt;Palabra clave AppInit_DLLs en Windows, ingrese el nombre de la DLL que se inyectará en ella y luego ingrese la palabra clave AppInit_DLLs. CurrentViersion-gt; el valor clave de AppInit_DLLs en Windows, escriba el nombre del dll que desea inyectar, luego coloque su dll en el directorio del sistema, luego reinicie, cualquier programa GUI abierto en el sistema inyectará su dll, pero cuando lo use Con este método, se recomienda no realizar demasiado procesamiento en DLLMain-gt;DLL_PROCESS_ATTACH; de lo contrario, se producirán fácilmente algunos problemas extraños. Y este método sólo funciona en la plataforma NT. 98 no.

2. Inyección remota de subprocesos

Windows tiene una API llamada CreateRemoteThread, que puede crear un subproceso para otros procesos. Es más inteligente usarlo para la inyección de dll, pero yo no lo he hecho. Sin embargo, lo intenté porque los parámetros de retorno de las dos funciones ThreadProc y LoadLibaray son similares. Es lo mismo. Puede crear un LoadLibaray de un subproceso para otros procesos y pasarlo a CreateRemoteThread como la dirección de la función del subproceso. Los parámetros pasados ​​al subproceso son el nombre y la ruta del dll que desea inyectar, por lo que se inyecta su dll. por CreateRemoteThread en el hilo que desea suspender. En proceso.

3.Windows HOOK

Este es probablemente el método más utilizado. Normalmente cuelgo WH_GETMESSAGE para que mientras un hilo llame a GetMessage, se inyecte mi dll, pero el requisito. El proceso devuelve al menos un mensaje al círculo. El código fuente en el libro de programación principal más una clase CHookAPI tiene un mejor efecto. Sin embargo, no tuve tiempo de probar el problema de la inyección repetida y no se resolvió. suficiente para hacer frente a aplicaciones generales.

Acabo de terminar de leer esta parte y la estoy revisando, espero que sea útil para todos.