¿Qué es la tecnología HOOK?
La tecnología HOOK es una plataforma para el mecanismo de procesamiento de mensajes de Windows. Las aplicaciones pueden configurar subrutinas para monitorear ciertos mensajes en ventanas específicas, y las ventanas monitoreadas pueden ser creadas 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 captura el mensaje antes de llegar 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 entregándolo sin procesarlo o forzar la finalización de la entrega del mensaje.
Información ampliada:
Principio de gancho
La tecnología de gancho es una tecnología muy crítica tanto para el software de seguridad como para el malware. Su esencia es secuestrar llamadas a funciones. Sin embargo, dado que está en el modo de usuario de Linux, cada proceso tiene su propio espacio de proceso independiente, por lo que primero debe inyectarse en el espacio de proceso a enganchar, modificar el código del proceso en su memoria y reemplazar la dirección simbólica de su proceso. mesa. En Android, el proceso generalmente se adjunta a través de la función ptrace, y luego la biblioteca so se inyecta en el proceso remoto para lograr el monitoreo y el enlace de funciones clave del proceso remoto.
La dificultad de la tecnología Hook no radica en la tecnología Hook. Los principiantes pueden dominar fácilmente el uso básico de Hook con la ayuda de la información. Cómo encontrar el punto de entrada de una función y reemplazarla implica comprender el mecanismo de conexión y carga de la función.
Desde la perspectiva del desarrollo de Android, el propio sistema Android nos proporciona dos modelos de desarrollo: el desarrollo del lenguaje Java basado en AndroidSDK y el desarrollo del lenguaje NativeC/C basado en AndroidNDK. Por lo tanto, cuando hablamos de Hook, debemos hacerlo en dos niveles.
Para la capa nativa, la dificultad de Hook es en realidad comprender y aprender los archivos ELF. Especialmente para los lectores que no saben mucho sobre los archivos ELF para la capa Java, es necesario comprender las características de Hook; máquinas virtuales y el uso de la reflexión en Java.