Az Android 7.1+ „Pánikészlelés” móddal rendelkezik, amely észleli az eszeveszett vissza gombnyomásokat

Az Android Nougat (7.1+) pánikérzékelési móddal rendelkezik, amely észleli, ha a felhasználó kétségbeesetten megnyomja a vissza gombot. Olvasson tovább, hogy megtudja, mit csinál.

Míg az Android-központú webhelyek, például a miénk sok olvasója kevésbé valószínű, hogy találkozik Azokban a helyzetekben, amikor egy rosszindulatú alkalmazás kompromittálja a rendszerüket, ugyanez nem igaz az általánosra népesség. Szinte minden héten hallunk különböző biztonsági kutatóktól az Android-felhasználókat célzó új rosszindulatú programokról. A legtöbb rosszindulatú támadás elkerülhető az engedélyek ellenőrzésével vagy a vázlatos megjelenésű alkalmazások telepítésének elkerülésével. Bár azt javasoljuk olvasóinknak, hogy vegyék kezükbe telefonjuk biztonságát, a Google felelős minden Android biztonságáért telefon. Ennek érdekében a vállalat csendben bevezette az Android 7.1 Nougat új biztonsági funkcióját, a "pánik észlelése", amely a vissza gomb egymás utáni többszöri megnyomására figyel, majd visszatér a felhasználó kezdőképernyőjére.

Egész egyszerűen, ha egy szélhámos alkalmazás megpróbálja eltéríteni a felhasználó képernyőjét, és megakadályozza a felhasználó távozását (talán kisegítő szolgáltatást valósít meg az összes kulcsfontosságú esemény lehallgatására), az Android maga felülbírálja az alkalmazást, hogy visszaállítsa a kezdőképernyő. A felhasználó ezután feltehetően eltávolíthatja a rosszindulatú alkalmazást az indítóból.

Ez a funkció elrepült a radar alatt, érthető módon, mivel a Google valószínűleg nem akarja úgy reklámozni a világot, ahogyan kibelezi a rosszindulatú alkalmazásokat. Ám az Android nyílt forráskódjának gyors áttekintése megmutatja, hogyan működik ez az egyszerű funkció az azt támogató eszközökön.


A kódex vizsgálata

Először is, csak azért, mert eszközén Android 7.1 vagy újabb rendszer fut, még nem jelenti azt, hogy ez a pánikérzékelési viselkedés valóban engedélyezve van. Az érték, amely meghatározza, hogy a szolgáltatás be van-e kapcsolva, megtalálható a config.xml fájlt a SystemUI APK-ban.


<integername="config_backPanicBehavior">0integer>

Alapértelmezés szerint az Android reakciója a vissza gomb pánikszerű megnyomására az, hogy nem tesz semmit. Ha az egész értéke config_backPanicBehavior 1-re van állítva, azonban itt lép életbe az Android új védelmi intézkedése.

Belül PhoneWindowManager.java láthatjuk ennek a funkciónak a megvalósításának nagy részét. A fájl mindenekelőtt két dolgot határoz meg: hány vissza gombot kell megnyomni ahhoz, hogy a rendszer megállapítsa, hogy a felhasználó "pánikban van", majd az állapot alapján mit kell tennie.

// 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;

Alapértelmezés szerint a rendszernek 4 egymást követő vissza gombnyomásra van szüksége a pánik módba lépéshez. Függetlenül attól, hogy a függvény az egész értékét használja-e PANIC_PRESS_BACK_NOTHING vagy PANIC_PRESS_BACK_HOME a SystemUI APK konfigurációs fájljában található érték határozza meg.

Ettől az értéktől függetlenül minden vissza gomb többszöri megnyomása ellenőrzi, hogy pániknyomásnak számít-e. Először a rendszer elfogja a lenyomást a KEYCODE_BACK gomb eseményt, és ellenőrzi, hogy a rendszer be van-e állítva a gomb többszöri vagy hosszan tartó lenyomásának ellenőrzésére. Ezután a rendszer ellenőrzi, hogy át kell-e adnia a felfelé történő lenyomást ugyanazon KEYCODE_BACK kulcseseményhez a felhasználói alkalmazásnak.

Ban,-ben interceptBackKeyDown() módszerrel, ha a vissza gombnyomás számlálója 1 és 3 között van, akkor a rendszer kihagyja a többszöri megnyomásos érzékelés időtúllépését, mivel a pánikészlelés legalább 4 megnyomást igényel bármilyen művelet végrehajtásához.

Ezután, ha a felhasználó eltávolítja az ujját a vissza billentyűről, amely felfelé eseményt vált ki, a interceptBackKeyUp hozzáad 1-et a hátsó gomb számlálójához. Ezután 300 ezredmásodpercig sorba állít egy üzenetet a jövőben. Ennek az az oka, hogy a rendszer 300 ezredmásodperces késleltetési időszakot tart fenn annak eldöntésére, hogy a vissza gomb megnyomásai egy többszöri megnyomásos esemény részét képezik-e. Ha igen, akkor a felhasználó pánikba eshet a gomb megnyomásával, így a rendszernek nem szabad elküldenie a kulcseseményt a felhasználói alkalmazásnak.

A 300 ms-os többszöri megnyomásos időtúllépés értéke a biztonságos beállításban tárolódik.multi_press_timeout", ahogy az alábbiakban látható.

/**
* 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";

Alapértelmezés szerint ez az érték 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

Ezután, ha valóban többszöri megnyomást észlel (>1 vissza gomb teljes fel/le lenyomása 300 ms-on belül), a rendszer hívja a backMultiPressAction módszer annak meghatározására, hogy mit kell tenni. Végül a vissza gomb számlálója 0-ra áll vissza.

Noha ez egy nagyon apró, nyilvánosságra nem hozott funkció, mégis jó látni, hogy a Google min dolgozik a színfalak mögött annak érdekében, hogy az Androidot biztonságosabbá tegye az átlagfelhasználók számára.