Red de conocimiento informático - Material del sitio web - Cómo monitorear las teclas en segundo plano de los servicios de Android, como monitorear las teclas de volumenPara monitorear el teclado, no es realista desarrollar un nuevo método de entrada. La operación general está en el sistema. Mecanismo de método de entrada. Agregar devolución de llamada de interfaz. Sabemos que cuando una aplicación obtiene una devolución de llamada clave, generalmente escucha la interfaz onKeyDown, como se muestra a continuación: publicbooleanonKeyDown (intkeyCode, KeyEventevent) Los desarrolladores pueden determinar el evento específico según los parámetros keyCode y KeyEvent en el método de devolución de llamada. Sin embargo, debido a que el mecanismo de devolución de llamadas de eventos se ejecuta en su zona de pruebas, no es posible obtener las devoluciones de llamadas de eventos de la aplicación actual en otras aplicaciones. Entonces, veamos el mecanismo de entrega de eventos en detalle, de arriba a abajo. Como se muestra en la figura siguiente, después de que el usuario haga clic, el teclado virtual o el controlador de entrada de tecla física generarán una interrupción y escribirán el semáforo correspondiente en /dev/input/event*. El sistema operativo Android procesa estos eventos en un bucle y luego los envía a WindowManagerServer. WindowManagerServer asignará diferentes ViewGroup y View según la fuente del evento, generando así diferentes eventos OnClick, OnKeyDown y OnTouch. En este punto, es natural pensar que los hackers que quieran realizar un monitoreo del teclado tendrían que agregar eventos personalizados al Linux subyacente. Aquí, usamos el comando getevent en Linux para obtener los eventos reportados por el dispositivo /dev/input/eventX, que también generará información básica sobre todos los dispositivos de eventos. Este comando también generará información básica sobre todos los dispositivos de eventos, incluidas pantallas táctiles, botones, auriculares conectados, etc. Su uso básico es el siguiente: Uso: getevent[-t][-n][-sswitchmask][-S][-v[mask]][-d][-p][-i][-l][ -q ][-ccount][-r][dispositivo] -t: mostrar marcas de tiempo -n: no imprimir nuevas líneas -s: printswitchstatesforgivenbits -S: printallswitchstates -v: verbositymask(errs=1, dev=2, name=4, info=8, vers=16, pos.events=32, props=64) -d:showHIDdescriptor,si está disponible -p:showpossibleevents(errs,dev,name,pos.events) -i.showalldeviceinfoandpossibleevents -l:labeleventtypesandnamesinplaintext -q: quiet(clearverbositymask) -c.printgivennumberofeventsthenexit-r: printrateeventsareceived Después de ingresar getevent, podemos ver una serie de información sobre el controlador de hardware de entrada en el dispositivo. También habrá muchas señales de comando de entrada a continuación. Normalmente, estos volúmenes de señal se están actualizando. , de la siguiente manera Como se muestra en la figura: No podemos leer estas señales directamente Después de ingresar getevent-l para agregar etiquetas, podemos ver algunas etiquetas agregadas, como se muestra en la siguiente figura: De hecho, estas etiquetas se han definido en su entrada. Archivo de encabezado .h, entre los cuales el tipo es "...", no "...".

Cómo monitorear las teclas en segundo plano de los servicios de Android, como monitorear las teclas de volumenPara monitorear el teclado, no es realista desarrollar un nuevo método de entrada. La operación general está en el sistema. Mecanismo de método de entrada. Agregar devolución de llamada de interfaz. Sabemos que cuando una aplicación obtiene una devolución de llamada clave, generalmente escucha la interfaz onKeyDown, como se muestra a continuación: publicbooleanonKeyDown (intkeyCode, KeyEventevent) Los desarrolladores pueden determinar el evento específico según los parámetros keyCode y KeyEvent en el método de devolución de llamada. Sin embargo, debido a que el mecanismo de devolución de llamadas de eventos se ejecuta en su zona de pruebas, no es posible obtener las devoluciones de llamadas de eventos de la aplicación actual en otras aplicaciones. Entonces, veamos el mecanismo de entrega de eventos en detalle, de arriba a abajo. Como se muestra en la figura siguiente, después de que el usuario haga clic, el teclado virtual o el controlador de entrada de tecla física generarán una interrupción y escribirán el semáforo correspondiente en /dev/input/event*. El sistema operativo Android procesa estos eventos en un bucle y luego los envía a WindowManagerServer. WindowManagerServer asignará diferentes ViewGroup y View según la fuente del evento, generando así diferentes eventos OnClick, OnKeyDown y OnTouch. En este punto, es natural pensar que los hackers que quieran realizar un monitoreo del teclado tendrían que agregar eventos personalizados al Linux subyacente. Aquí, usamos el comando getevent en Linux para obtener los eventos reportados por el dispositivo /dev/input/eventX, que también generará información básica sobre todos los dispositivos de eventos. Este comando también generará información básica sobre todos los dispositivos de eventos, incluidas pantallas táctiles, botones, auriculares conectados, etc. Su uso básico es el siguiente: Uso: getevent[-t][-n][-sswitchmask][-S][-v[mask]][-d][-p][-i][-l][ -q ][-ccount][-r][dispositivo] -t: mostrar marcas de tiempo -n: no imprimir nuevas líneas -s: printswitchstatesforgivenbits -S: printallswitchstates -v: verbositymask(errs=1, dev=2, name=4, info=8, vers=16, pos.events=32, props=64) -d:showHIDdescriptor,si está disponible -p:showpossibleevents(errs,dev,name,pos.events) -i.showalldeviceinfoandpossibleevents -l:labeleventtypesandnamesinplaintext -q: quiet(clearverbositymask) -c.printgivennumberofeventsthenexit-r: printrateeventsareceived Después de ingresar getevent, podemos ver una serie de información sobre el controlador de hardware de entrada en el dispositivo. También habrá muchas señales de comando de entrada a continuación. Normalmente, estos volúmenes de señal se están actualizando. , de la siguiente manera Como se muestra en la figura: No podemos leer estas señales directamente Después de ingresar getevent-l para agregar etiquetas, podemos ver algunas etiquetas agregadas, como se muestra en la siguiente figura: De hecho, estas etiquetas se han definido en su entrada. Archivo de encabezado .h, entre los cuales el tipo es "...", no "...".

h En el archivo de encabezado, los tipos definidos son los siguientes: SND0x12#defineEV_REP0x14#defineEV_FF0x15#defineEV_PWR0x16#defineEV_FF_STATUS0x17#defineEV_MAX0x1f#defineEV_CNT(EV_MAX 1) En términos generales, los EV_KEY, EV_REL, EV_ABS y EV_SYN de uso común corresponden a teclas del teclado, relativas coordenadas y coordenadas absolutas respectivamente, eventos de sincronización. EV_SYN indica que se ha completado un conjunto completo de eventos y debe procesarse. El código de EV_SYN define el tipo de distribución de eventos.