Android Nougat (7.1+) heeft een paniekdetectiemodus die detecteert of de gebruiker verwoed op de terugknop drukt. Lees meer om te horen wat het doet.
Hoewel veel lezers van op Android gerichte websites zoals de onze minder snel zullen tegenkomen In situaties waarin een frauduleuze applicatie hun systeem in gevaar brengt, geldt dit mogelijk niet voor de algemene toepassing bevolking. Bijna elke week horen we van verschillende beveiligingsonderzoekers over nieuwe malware die zich op Android-gebruikers richt. De meeste van deze kwaadaardige aanvallen kunnen worden vermeden door de machtigingen te inspecteren of door schetsmatig uitziende applicaties te vermijden Hoewel we onze lezers aanraden de beveiliging van hun telefoon in eigen handen te nemen, is Google verantwoordelijk voor het beveiligen van elke Android telefoon. Daartoe introduceerde het bedrijf stilletjes een nieuwe beveiligingsfunctie in Android 7.1 Nougat genaamd "paniek detectie" die luistert naar meerdere drukken op de terugknop achter elkaar en de gebruiker vervolgens terugkeert naar zijn startscherm.
Heel eenvoudig: als een frauduleuze applicatie probeert het scherm van de gebruiker te kapen en te voorkomen dat de gebruiker het scherm verlaat (misschien door door een toegankelijkheidsservice te implementeren om alle belangrijke gebeurtenissen te onderscheppen), zal Android zelf de applicatie overschrijven om de toegankelijkheid terug te brengen thuis scherm. De gebruiker kan vervolgens vermoedelijk de kwaadaardige applicatie uit het opstartprogramma verwijderen.
Deze functie bleef begrijpelijkerwijs onder de radar, omdat Google waarschijnlijk niet aan de wereld wil adverteren op een manier waarop ze kwaadaardige applicaties verwijderen. Maar een snelle blik op de open source-code van Android laat zien hoe deze eenvoudige functie werkt op de apparaten die dit ondersteunen.
Het onderzoeken van de Code
Allereerst betekent het feit dat uw apparaat Android 7.1+ gebruikt, niet dat dit paniekdetectiegedrag daadwerkelijk is ingeschakeld. De waarde die bepaalt of de functie is ingeschakeld, vindt u in de config.xml
bestand binnen de SystemUI APK.
<integername="config_backPanicBehavior">0integer>
Standaard is de reactie van Android op paniekdrukken op de Terug-knop niets doen. Als de gehele waarde van config_backPanicBehavior
is ingesteld op 1, maar daar treedt de nieuwe beveiligingsmaatregel van Android in werking.
Binnenin PhoneWindowManager.java
we kunnen het grootste deel zien van hoe deze functie wordt geïmplementeerd. Allereerst definieert het bestand twee dingen: hoeveel keer op de terugknop moet worden gedrukt voordat het systeem vaststelt dat de gebruiker in paniek raakt, en welke actie er moet worden ondernomen op basis van die status.
// 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;
Standaard vereist het systeem dat er 4 opeenvolgende keer op de terugknop wordt gedrukt om naar de paniekmodus te gaan. Of de functie wel of niet de gehele waarde van gebruikt PANIC_PRESS_BACK_NOTHING
of PANIC_PRESS_BACK_HOME
wordt bepaald door de waarde in het configuratiebestand binnen de SystemUI APK.
Ongeacht deze waarde wordt elke keer dat u op de Terug-knop drukt gecontroleerd of deze als paniekdruk telt. Eerst onderschept het systeem de neerwaartse druk op de KEYCODE_BACK toetsgebeurtenis en controleert of het systeem al dan niet is ingesteld op het controleren op herhaaldelijk indrukken of lang indrukken van de toets. Vervolgens controleert het systeem of het de omhoog-druk voor dezelfde KEYCODE_BACK-toetsgebeurtenis wel of niet moet doorgeven aan de gebruikersapp.
In de interceptBackKeyDown()
Als de teller voor de terugtoetsaanslagen tussen 1 en 3 ligt, slaat het systeem de time-out van de multi-press-detectie over, aangezien de paniekdetectie minimaal 4 keer drukken vereist voordat er actie wordt ondernomen.
Zodra de gebruiker vervolgens zijn vinger van de terug-toets haalt, waardoor een omhoog-gebeurtenis wordt geactiveerd, wordt de interceptBackKeyUp
voegt 1 toe aan de back-key-teller. Vervolgens wordt in de toekomst een bericht gedurende 300 milliseconden in de wachtrij geplaatst. De reden hiervoor is dat het systeem een vertragingsperiode van 300 milliseconden reserveert bij het beslissen of het indrukken van de terugknop deel uitmaakt van een gebeurtenis waarbij meerdere malen wordt ingedrukt. Als dit het geval is, kan het zijn dat de gebruiker in paniek raakt door op de knop te drukken, zodat het systeem de sleutelgebeurtenis niet naar de gebruikersapplicatie mag verzenden.
De time-outwaarde voor meerdere keren drukken van 300 ms wordt opgeslagen in de beveiligde instelling "multi_press_timeout
", zoals hieronder weergegeven.
/**
* 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";
Standaard is deze waarde ingesteld op 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
Als er inderdaad meerdere keren indrukken wordt gedetecteerd (>1 Terug-knop volledig omhoog/omlaag drukken binnen 300 ms), roept het systeem de backMultiPressAction
methode om te bepalen welke actie moet worden ondernomen. Ten slotte wordt de teller van de terugknop gereset naar 0.
Hoewel het een zeer kleine, niet-gepubliceerde functie is, is het toch leuk om te zien waar Google achter de schermen aan werkt om Android veiliger te maken voor de gemiddelde gebruiker.