¿Cómo pasar parámetros de clase personalizados de gancho subyacente? Hook explicó que Hook es un mecanismo del sistema proporcionado en Windows para reemplazar la "interrupción" en DOS. La traducción al chino es "gancho" o "gancho". Después de conectar un evento específico del sistema, una vez que ocurre el evento enganchado, el sistema notificará al programa que enganchó el evento y luego el programa podrá responder al evento lo antes posible. Otra explicación: Hook es una plataforma para el mecanismo de procesamiento de mensajes de Windows. En esta plataforma, una aplicación puede configurar una subrutina para monitorear ciertos mensajes en una ventana específica. La ventana monitoreada puede ser creada por otros procesos. Cuando llega un mensaje, se procesa antes que el controlador de ventana de destino. El mecanismo de enlace permite que las aplicaciones intercepten y manejen mensajes de ventana o eventos específicos. Un gancho es en realidad un segmento de programa que procesa mensajes y se conecta al sistema mediante llamadas al sistema. Siempre que se envía un mensaje específico, el programa de enlace captura el mensaje antes de que llegue a la ventana de destino, es decir, la función de enlace primero obtiene el control. En este momento, la función de enlace puede procesar (cambiar) el mensaje, continuar enviando el mensaje sin procesarlo o finalizar por la fuerza el envío del mensaje. Principio del gancho Cada gancho tiene una tabla de punteros asociada, llamada lista enlazada de ganchos, que es mantenida por el sistema. Los punteros en esta lista apuntan a las funciones de devolución de llamada definidas por la aplicación especificadas llamadas por la subrutina de enlace, es decir, cada controlador del enlace. Cuando aparece un mensaje asociado con un tipo de enlace específico, el sistema entrega el mensaje al subproceso de enlace. Algunos subprocesos de enlace solo pueden monitorear mensajes, modificar mensajes o detener el proceso del mensaje para evitar que estos mensajes se entreguen al siguiente subproceso de enlace o ventana de destino. El gancho instalado más recientemente se coloca al principio de la cadena, mientras que el gancho instalado más recientemente se coloca al final, es decir, el último gancho agregado obtiene el control primero. Windows no requiere que las subrutinas de enlace se desinstalen en el orden inverso a la instalación. Cada vez que se descarga un enlace, Windows libera la memoria que ocupaba y actualiza la lista completa de enlaces. Si un programa instala un gancho pero finaliza antes de desinstalarlo, el sistema desinstalará automáticamente el gancho. El procedimiento de enlace es una función CALLBACK definida por la aplicación. No se puede definir como una función miembro de la clase y solo se puede definir como una función C ordinaria. Se utiliza para monitorear el sistema o tipos específicos de eventos, que pueden estar relacionados con eventos de un subproceso específico o de todos los subprocesos del sistema. Ganchos del sistema y ganchos de hilo El último parámetro de la función SetWindowsHookEx() determina si el gancho es un gancho del sistema o un gancho de hilo. Los ganchos de subprocesos se utilizan para monitorear mensajes de eventos de subprocesos específicos. Los ganchos de hilo generalmente están en el hilo actual o en un hilo derivado del hilo actual. Los enlaces del sistema monitorean los mensajes de eventos de todos los subprocesos del sistema. Debido a que los enlaces del sistema afectan a todas las aplicaciones del sistema, las funciones de enlace deben colocarse en una biblioteca de vínculos dinámicos (DLL) separada. El sistema asigna automáticamente la DLL que contiene la "función de devolución de llamada de enlace" al espacio de direcciones de todos los procesos afectados por la función de enlace, es decir, inyecta la DLL en esos procesos. Nota: (1) Si se instalan un gancho de hilo y un gancho de sistema para el mismo evento (como un mensaje del mouse), el sistema llamará automáticamente primero al gancho de hilo y luego al gancho de sistema. (2) El mismo mensaje de evento se puede instalar con múltiples procedimientos de procesamiento de ganchos, y estos procedimientos de procesamiento de ganchos forman una cadena de ganchos. Una vez procesado el enlace actual, la información del enlace debe pasarse a la siguiente función de enlace. (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 retírelos inmediatamente después de su uso. El modo de observación del modo de aplicación de Hook es el más utilizado, y SetWindowHook proporcionado por Windows generalmente está preparado para este tipo de aplicación. Y este es también el uso más común. Este patrón presenta mensajes de notificación cuando sucede algo. Los observadores solo pueden ver la información del proceso y manejar sus propios asuntos en función de lo que les interesa, pero no pueden cambiar el proceso original. Por ejemplo, la supervisión de los mensajes del mouse y del teclado se utiliza a menudo en enlaces globales. La función de selección de palabras en pantalla de Kingsoft PowerWord es una aplicación típica (consulte este tipo de artículo para conocer técnicas específicas).
La mayor diferencia entre el modo de inyección y el modo de observación es que el código inyectado amplía el negocio funcional del código original. El modo plug-in es un ejemplo típico de este modo. Independientemente de si se trata de un sistema de complemento de núcleo delgado (como Eclipse) o de un sistema de complemento de núcleo grueso (como Delphi, Visual Studio y otros entornos IDE), las interfaces de complemento proporcionadas tienen como objetivo ampliar las funciones de el propio sistema. La característica típica de este modelo de aplicación extendida es que el nuevo código de extensión y el código original trabajarán juntos para procesar el mismo negocio. Si el modo de reemplazo difiere según el propósito de la aplicación, se le puede llamar modo de reparación o modo de craqueo. El primero es modificar los errores del sistema y el segundo es romper las limitaciones del sistema original. Muchos piratas informáticos aprovechan este patrón reemplazando la tabla de exportación en la DLL que accede al dongle con sus propias funciones, omitiendo así el código de control del software. La dificultad en este tipo de aplicaciones es encontrar los parámetros de la función. La característica de este modo es que el código original será reemplazado por el nuevo código. Los primeros tres son modos básicos y hay muchos modos relacionados con aplicaciones prácticas. Modo centralizado Este modo parece manejar ciertas cosas de manera uniforme en todos los sistemas. Su característica no radica en el método de inyección sino en el método de tratamiento. Este modelo se aplica principalmente a determinados servicios, como servicio de teclado, servicio de ratón, servicio de impresora y otros servicios específicos. Restringir o coordinar el acceso a estos servicios asumiendo uniformemente el acceso a estos servicios. Por ejemplo, la implementación de la función de bloqueo del teclado consiste en cerrar temporalmente todas las aplicaciones en el teclado. Las características de este modelo estarán relacionadas principalmente con los servicios especializados. El modo de reparación es un tipo de modo de reemplazo. Lo que se debe recalcar aquí es que el propósito de su aplicación es reparar o ampliar las funciones del sistema original. El modo de craqueo es un tipo de modo de reemplazo. Cabe enfatizar aquí que el propósito de su aplicación es omitir algunos códigos del sistema original. Por ejemplo, código de detección de cifrado, código de detección de red, etc. Un modo de inyección en modo complemento que se basa directamente en el mecanismo de enlace para expandir las funciones comerciales dentro del sistema. En aplicaciones como el modo de disfrute * * *, a menudo se obtienen los datos de la otra parte. Por supuesto, quiero obtener los valores de todas las cadenas en otro sistema. Puede exportar todas las cadenas reemplazando los administradores de memoria de cada uno. Esta aplicación es bastante especial. Pero su característica es que el propósito es compartir datos entre sistemas. Su implementación puede ser en modo observación o modo reemplazo. Aplicación de la tecnología de gancho en VB 1. Introducción El enganche es algo que a veces hace que la gente ame y tema. Los ganchos se utilizan para interceptar algunos mensajes del sistema. Por ejemplo, queremos que el sistema ejecute el Bloc de notas cuando se presiona CTL-B. Tal vez usaría KeyPreview del formulario y lo configuraría en Verdadero, pero ¿qué pasa si presiona Ctl-B durante otro proceso? Eso es inútil. Necesita configurar un KeyboardHook para interceptar todas las teclas; otro ejemplo es que el evento MouseMove solo es válido en el formulario o control. Si desea conocer el mensaje de MouseMove fuera del formulario, debe usar MouseHook para interceptar el mensaje del Mouse. Para otro ejemplo, si desea registrar todas las acciones del teclado del usuario o las acciones de Mosue en este momento para grabar macros, utilice JournalRecordHook. Si desea detener todas las acciones del teclado de Mosue y reproducir (ejecutar) macros, utilice JournalPlayBackHook; Puede ser todo el sistema como un RemoteHook, es decir, también puede interceptar otras acciones del proceso, o puede ser un LocalHook, cuyo alcance de interceptación es solo el proceso en sí. La función Hook de RemoteHook debería estar activada. Y LocalHook debería estar ahí. Baño.