Андроид Ноугат (7.1+) има режим детекције панике који детектује да ли корисник махнито притиска дугме за повратак. Прочитајте више да бисте чули шта ради.
Иако је мање вероватно да ће наићи на многе читаоце веб локација усмерених на Андроид, као што је наша ситуације у којима лажна апликација компромитује њихов систем, исто можда неће важити за опште Популација. Скоро сваке недеље чујемо од разних истраживача безбедности о новом малверу који циља на кориснике Андроид-а. Већина ових злонамерних напада може се избећи провером дозвола или избегавањем инсталирања апликација које изгледају недовољно, и иако препоручујемо нашим читаоцима да узму безбедност свог телефона у своје руке, Гоогле је одговоран за обезбеђење сваког Андроид-а телефон. У том циљу, компанија је тихо увела нову безбедносну функцију у Андроид 7.1 Ноугат под називом "откривање панике" који ослушкује вишеструко притискање дугмета за повратак узастопно, а затим враћа корисника на почетни екран.
Једноставно, ако лажна апликација покуша да отме екран корисника и спречи корисника да напусти (можда имплементирајући услугу приступачности за пресретање свих кључних догађаја), Андроид ће сам надјачати апликацију како би вратио Почетни екран. Корисник тада вероватно може деинсталирати злонамерну апликацију из покретача.
Ова функција је прошла испод радара, разумљиво јер Гоогле вероватно не би желео да се рекламира свету на један начин на који уништавају злонамерне апликације. Али брз поглед на Андроидов отворени изворни код открива како ова једноставна функција функционише на уређајима који је подржавају.
Испитивање Кодекса
Пре свега, само зато што ваш уређај користи Андроид 7.1+ не значи да је ово понашање откривања панике заправо омогућено. Вредност која одређује да ли је функција укључена може се наћи у config.xml
датотеку у СистемУИ АПК-у.
<integername="config_backPanicBehavior">0integer>
Подразумевано, Андроид-ова реакција на паничне притиске на дугме за повратак је да ништа не чини. Ако је целобројна вредност од config_backPanicBehavior
је постављен на 1, међутим, ту почиње нова мера заштите Андроид-а.
У склопу PhoneWindowManager.java
можемо видети већину начина на који је ова функција имплементирана. Пре свега, датотека дефинише две ствари: колико је притисака на дугме за повратак потребно да би систем утврдио да је корисник „у паници“, а затим коју радњу да предузме на основу тог стања.
// 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;
Подразумевано, систем захтева 4 узастопна притискања дугмета за повратак да би ушао у режим панике. Да ли функција користи целобројну вредност или не PANIC_PRESS_BACK_NOTHING
или PANIC_PRESS_BACK_HOME
одређује вредност у конфигурационој датотеци унутар СистемУИ АПК-а.
Без обзира на ову вредност, сваки вишеструки притисак на дугме за повратак се проверава да би се видело да ли ће се рачунати као панични притисак. Прво, систем пресреће притисак надоле за КЕИЦОДЕ_БАЦК догађај кључа и проверава да ли је систем подешен да проверава вишеструко или дуго притискање тастера. Затим, систем проверава да ли треба да проследи притисак на горе за исти догађај кључа КЕИЦОДЕ_БАЦК корисничкој апликацији.
У interceptBackKeyDown()
метода, ако је бројач притиска тастера за повратак између 1 и 3, систем прескаче временско ограничење детекције више притиска пошто је за откривање панике потребно најмање 4 притиска да би се предузела било која радња.
Затим, када корисник уклони прст са тастера за повратак, што покреће догађај горе, interceptBackKeyUp
додаје 1 бројачу тастера за повратак. Затим ставља поруку у ред за 300 милисекунди у будућности. Разлог за то је зато што систем резервише период одлагања од 300 милисекунди када одлучује да ли су притисци на дугме за повратак део догађаја са више притиска. Ако јесте, онда корисник може бити у паници притискајући дугме тако да систем не би требало да шаље кључни догађај корисничкој апликацији.
Вредност временског ограничења од 300 мс за више притисака је сачувана у безбедној поставци "multi_press_timeout
" како је приказано испод.
/**
* 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";
Подразумевано, ова вредност је подешена на 300 мс.
/**
* 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
Затим, ако је вишеструко притискање заиста откривено (>1 дугме за повратак заврши притискање горе/доле у року од 300 мс), систем позива backMultiPressAction
метод да се одреди шта треба предузети. Коначно, бројач дугмета за повратак се ресетује на 0.
Иако је веома мала, необјављена функција, ипак је лепо видети на чему Гоогле ради иза кулиса како би Андроид учинио сигурнијим за просечног корисника.