Enganche de ejecución de URL Ruta del programa: shell32.dll Descripción: Gancho de Shell, ¿qué es shellexecutehooks? no puedo leer
Concepto básico
Hook es una plataforma de mecanismo de procesamiento de mensajes de Windows. Las aplicaciones pueden configurar subrutinas en él para monitorear ciertos mensajes en la ventana especificada, y el Windows monitoreado puede ser creado por. otros procesos. Cuando llega un mensaje, se procesa antes de la función del controlador de ventana de destino. El mecanismo de enlace permite que las aplicaciones intercepten y procesen mensajes de ventana o eventos específicos.
Un gancho es en realidad un segmento de programa que procesa mensajes y se conecta al sistema a través de llamadas al sistema. Siempre que se envía un mensaje específico, el programa de enlace capturará el mensaje antes de llegar a la ventana de destino, es decir, la función de enlace primero obtendrá el control
. En este momento, la función de enlace puede procesar (cambiar) el mensaje, continuar entregándolo sin procesarlo o forzar la finalización de la entrega del mensaje.
Los ganchos también pueden entenderse como la puerta trasera que nos dejó WINDOWS. Por ejemplo, si desea controlar el teclado, es fácil usar INT en la era DOS, pero en la era WINDOWS, nosotros. no se les permite operar directamente el hardware porque WINDOWS está controlado por mensajes, por lo que podemos interceptar los mensajes del teclado para controlar el teclado. Pero es muy sencillo controlar los mensajes de su propio proceso. Para controlar los mensajes de todos los procesos, es necesario utilizar ganchos. Coloque la función de enlace en la DLL y todos los mensajes relacionados con el teclado deben filtrarse mediante la función de enlace, para que pueda hacer lo que quiera.
El programa de enlace en WINDOWS es como el TSR (programa residente en memoria) en DOS. Se utiliza para interceptar
mensajes específicos en WINDOWS y procesarlos en consecuencia. Por ejemplo, puede interceptar mensajes de entrada del teclado para obtener información de entrada del teclado, etc. Los programas de enlace se pueden alojar y desenganchar mediante llamadas API.
Mecanismo operativo
Cada gancho tiene una lista de punteros asociada, llamada lista de ganchos, que es mantenida por el sistema. El puntero de esta lista apunta a la función de devolución de llamada especificada y definida por la aplicación llamada por la subrutina Hook, es decir, cada subrutina de procesamiento del gancho. Cuando aparece un mensaje asociado con el tipo de Hook especificado, el sistema pasa el mensaje a la subrutina Hook. Algunos subprocesos de Hook solo pueden monitorear mensajes, modificar mensajes o detener el progreso de los mensajes para evitar que estos mensajes pasen al siguiente subproceso de Hook o ventana de destino. El gancho instalado más recientemente se coloca al principio de la cadena y el gancho instalado más recientemente se coloca al final, es decir, el que se agrega más tarde obtiene el control primero.
Windows no requiere que el orden de desinstalación de los subprocesos de enlace se invierta respecto del orden de instalación. Cada vez que se desinstala un gancho, Windows libera la memoria que ocupa y actualiza toda la lista de ganchos. Si el programa instala un gancho pero finaliza antes de desinstalarlo, el sistema lo desinstalará automáticamente.
Clasificación de los anzuelos
1. Según la clasificación de eventos, existen varios tipos comunes:
(1) Los ganchos de teclado y los ganchos de teclado de bajo nivel pueden monitorear varios mensajes de teclado.
(2) Los ganchos de mouse y los ganchos de mouse de bajo nivel pueden monitorear varios mensajes del mouse.
(3) Los ganchos de Shell pueden monitorear varios mensajes de eventos de Shell. Como iniciar y cerrar aplicaciones.
(4) El enlace de registro puede registrar varios mensajes de eventos tomados de la cola de mensajes del sistema.
(5) El enlace del procedimiento de ventana monitorea todos los mensajes enviados desde la cola de mensajes del sistema a la ventana de destino.
Además, hay algunos enlaces de eventos específicos que podemos usar, que no se enumerarán uno por uno.
2. Según el alcance de uso, existen principalmente ganchos de subprocesos y ganchos de sistema
(1) Los ganchos de subprocesos monitorean mensajes de eventos de subprocesos específicos.
(2) El enlace del sistema monitorea los mensajes de eventos de todos los subprocesos del sistema.
Debido a que los enlaces del sistema afectarán a todas las aplicaciones del sistema, las funciones de enlace deben colocarse en una biblioteca de vínculos dinámicos (DLL) independiente
. Ésta es la gran diferencia entre los ganchos de sistema y los ganchos de hilo.
Algunos puntos que deben explicarse:
(1) Si tanto los ganchos de hilo como los ganchos del sistema están instalados para el mismo evento (como un mensaje del mouse), el sistema automáticamente llame primero al gancho de hilo y luego llame al gancho del sistema.
(2) Se pueden instalar múltiples procedimientos de procesamiento de ganchos para el mismo mensaje de evento, y estos procedimientos de procesamiento de ganchos forman una cadena de ganchos. Una vez completado el procesamiento del enlace actual, la información del enlace debe pasarse a la siguiente función del enlace. Además, el gancho instalado más recientemente se coloca al principio de la cadena y el gancho instalado más recientemente se coloca al final, es decir, el que se agrega más tarde obtiene el control primero.
(3) Los ganchos, especialmente los ganchos del sistema, consumirán tiempo de procesamiento de mensajes y reducirán el rendimiento del sistema. Instale ganchos sólo cuando sea necesario y desinstálelos inmediatamente después de su uso.