Android Nougat (7.1+) tiene un modo de detección de pánico que detecta si el usuario está presionando frenéticamente el botón Atrás. Lea más para saber lo que hace.
Si bien es menos probable que muchos lectores de sitios web centrados en Android, como el nuestro, se encuentren Situaciones en las que una aplicación no autorizada compromete su sistema, lo mismo puede no ser cierto para la aplicación general. población. Casi todas las semanas escuchamos de varios investigadores de seguridad sobre nuevo malware dirigido a usuarios de Android. La mayoría de estos ataques maliciosos se pueden evitar inspeccionando los permisos o evitando instalar aplicaciones que parezcan incompletas, y Si bien recomendamos a nuestros lectores que tomen el control de la seguridad de sus teléfonos, Google es responsable de proteger cada dispositivo Android. teléfono. Con ese fin, la compañía introdujo silenciosamente una nueva característica de seguridad en Android 7.1 Nougat llamada "detección de pánico" que escucha varias pulsaciones consecutivas del botón Atrás y luego devuelve al usuario a su pantalla de inicio.
En pocas palabras, si una aplicación fraudulenta intenta secuestrar la pantalla del usuario e impedir que salga (tal vez mediante implementar un Servicio de Accesibilidad para interceptar todos los eventos clave), Android anulará la aplicación para recuperar el pantalla de inicio. Luego, presumiblemente, el usuario puede desinstalar la aplicación maliciosa del iniciador.
Esta característica pasó desapercibida, lo que es comprensible, ya que es probable que Google no quiera anunciar al mundo una forma en que están eliminando aplicaciones maliciosas. Pero un vistazo rápido al código fuente abierto de Android revela cómo funciona esta sencilla característica en los dispositivos que la admiten.
Examinando el código
En primer lugar, el hecho de que su dispositivo ejecute Android 7.1+ no significa que este comportamiento de detección de pánico esté realmente habilitado. El valor que determina si la característica está activada se puede encontrar en la config.xml
archivo dentro del APK SystemUI.
<integername="config_backPanicBehavior">0integer>
De forma predeterminada, la reacción de Android al presionar en pánico el botón Atrás es no hacer nada. Si el valor entero de config_backPanicBehavior
se establece en 1, sin embargo, ahí es donde entra en juego la nueva medida de protección de Android.
Dentro PhoneWindowManager.java
Podemos ver la mayor parte de cómo se implementa esta característica. En primer lugar, el archivo define dos cosas: cuántas pulsaciones del botón Atrás son necesarias para que el sistema determine que el usuario está "en pánico" y luego qué acción tomar en función de ese estado.
// Number of presses needed before we induce panic press behavior on the back button
staticfinalint PANIC_PRESS_BACK_COUNT = 4;
staticfinalint PANIC_PRESS_BACK_NOTHING = 0;
staticfinalint PANIC_PRESS_BACK_HOME = 1;
De forma predeterminada, el sistema requiere que se presione 4 veces consecutivas el botón Atrás para ingresar al modo de pánico. Si la función utiliza o no el valor entero de PANIC_PRESS_BACK_NOTHING
o PANIC_PRESS_BACK_HOME
está determinado por el valor en el archivo de configuración dentro del APK de SystemUI.
Independientemente de este valor, cada pulsación múltiple del botón Atrás se verifica para ver si cuenta como una pulsación de pánico. Primero, el sistema intercepta la presión hacia abajo para el CÓDIGO CLAVE_VOLVER evento de tecla y verifica si el sistema está configurado para verificar si hay pulsaciones múltiples o prolongadas de la tecla. Luego, el sistema verifica si debe o no pasar la pulsación hacia arriba para el mismo evento de tecla KEYCODE_BACK a la aplicación del usuario.
En el interceptBackKeyDown()
método, si el contador de pulsaciones de la tecla Atrás está entre 1 y 3, entonces el sistema omite el tiempo de espera de detección de pulsaciones múltiples ya que la detección de pánico requiere al menos 4 pulsaciones para que se pueda realizar cualquier acción.
A continuación, una vez que el usuario retira el dedo de la tecla Atrás, lo que desencadena un evento hacia arriba, el interceptBackKeyUp
agrega 1 al contador de la tecla trasera. Luego pone en cola un mensaje durante 300 milisegundos en el futuro. La razón de esto es que el sistema reserva un período de retraso de 300 milisegundos al decidir si presionar el botón Atrás es parte de un evento de pulsación múltiple. Si es así, entonces el usuario puede entrar en pánico al presionar el botón, por lo que el sistema no debería enviar el evento clave a la aplicación del usuario.
El valor del tiempo de espera de pulsación múltiple de 300 ms se almacena en la configuración segura "multi_press_timeout
" Como se muestra abajo.
/**
* The duration in milliseconds between the first tap's up event and the second tap's
* down event for an interaction to be considered part of the same multi-press.
* @hide
*/
publicstaticfinal String MULTI_PRESS_TIMEOUT = "multi_press_timeout";
De forma predeterminada, este valor está establecido en 300 ms.
/**
* Defines the default duration in milliseconds between the first tap's up event and the second
* tap's down event for an interaction to be considered part of the same multi-press.
*/
privatestaticfinalint DEFAULT_MULTI_PRESS_TIMEOUT = 300
Luego, si realmente se detecta una pulsación múltiple (>1 botón de retroceso completa las pulsaciones hacia arriba/abajo en 300 ms), el sistema llama al backMultiPressAction
método para determinar qué acción tomar. Finalmente, el contador del botón Atrás se pone a 0.
Si bien es una característica menor y no publicitada, es bueno ver en qué está trabajando Google detrás de escena para hacer que Android sea más seguro para el usuario promedio.