Android 7.1+, Geri Düğmesine Ani Basılmaları Algılayan "Panik Algılama" Moduna Sahiptir

Android Nougat (7.1+), kullanıcının çılgınca geri düğmesine basıp basmadığını algılayan bir panik algılama moduna sahiptir. Ne yaptığını duymak için daha fazlasını okuyun.

Bizimki gibi Android merkezli web sitelerinin pek çok okuyucusunun bu sitelerle karşılaşma olasılığı daha düşük olsa da Hileli bir uygulamanın sistemlerini tehlikeye attığı durumlarda aynı durum genel uygulama için geçerli olmayabilir. nüfus. Neredeyse her hafta çeşitli güvenlik araştırmacılarından Android kullanıcılarını hedef alan yeni kötü amaçlı yazılımlar hakkında bilgi alıyoruz. Bu kötü niyetli saldırıların çoğu, izinlerin incelenmesi veya yarım yamalak görünen uygulamaların kurulmasından kaçınılmasıyla önlenebilir ve Okuyucularımıza telefonlarının güvenliğini kendi ellerine almalarını tavsiye etsek de, her Android'in güvenliğinden Google sorumludur. telefon. Bu amaçla şirket, Android 7.1 Nougat'ta "" adlı yeni bir güvenlik özelliğini sessizce tanıttı.panik tespiti" art arda birden fazla geri düğmesine basılmasını dinler ve ardından kullanıcıyı ana ekranına döndürür.

Oldukça basit bir şekilde, hileli bir uygulama kullanıcının ekranını ele geçirmeye ve kullanıcının ayrılmasını engellemeye çalışırsa (belki de Tüm önemli olayları engellemek için bir Erişilebilirlik Hizmetinin uygulanması), Android'in kendisi uygulamayı geri getirerek uygulamayı geçersiz kılacaktır. ana ekran. Kullanıcı daha sonra muhtemelen kötü amaçlı uygulamayı başlatıcıdan kaldırabilir.

Bu özellik, anlaşılır bir şekilde, Google'ın kötü amaçlı uygulamaları ortadan kaldıracak şekilde dünyaya reklam yapmak istememesi nedeniyle gözden kaçtı. Ancak Android'in açık kaynak koduna hızlı bir bakış, bu basit özelliğin onu destekleyen cihazlarda nasıl çalıştığını ortaya koyuyor.


Kodun İncelenmesi

Her şeyden önce, cihazınızın Android 7.1+ çalıştırıyor olması bu panik algılama davranışının gerçekten etkin olduğu anlamına gelmez. Özelliğin açık olup olmadığını belirleyen değer şurada bulunabilir: config.xml SystemUI APK'sındaki dosya.


<integername="config_backPanicBehavior">0integer>

Varsayılan olarak, Android'in geri düğmesine panikle basılması durumunda tepkisi hiçbir şey yapmamaktır. Tamsayı değeri ise config_backPanicBehavior Ancak 1 olarak ayarlandığında Android'in yeni koruma önlemi burada devreye giriyor.

İçinde PhoneWindowManager.java bu özelliğin nasıl uygulandığının büyük kısmını görebiliriz. Her şeyden önce, dosya iki şeyi tanımlar: sistemin kullanıcının "paniklediğini" belirlemesi için kaç geri düğmesine basılması gerektiği ve ardından bu duruma göre hangi eylemin gerçekleştirileceği.

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

Varsayılan olarak sistem, panik moduna girmek için arka arkaya 4 kez geri düğmesine basılmasını gerektirir. Fonksiyonun tamsayı değerini kullanıp kullanmadığı PANIC_PRESS_BACK_NOTHING veya PANIC_PRESS_BACK_HOME SystemUI APK'sındaki yapılandırma dosyasındaki değere göre belirlenir.

Bu değerden bağımsız olarak, geri düğmesine her çoklu basış, panik basışı olarak sayılıp sayılmayacağı kontrol edilir. İlk olarak sistem, aşağı doğru basmayı durdurur. KEYCODE_BACK tuş olayı ve sistemin tuşa birden fazla basmayı veya uzun basmayı kontrol edecek şekilde ayarlanıp ayarlanmadığını kontrol eder. Daha sonra sistem, aynı KEYCODE_BACK anahtar olayı için yukarı basma işlemini kullanıcı uygulamasına iletmesi gerekip gerekmediğini kontrol eder.

İçinde interceptBackKeyDown() Yöntemde, geri tuşa basma sayacı 1 ile 3 arasındaysa sistem, panik algılamanın herhangi bir eylemin gerçekleştirilmesi için en az 4 kez basılmasını gerektirdiğinden çoklu basma algılama zaman aşımını atlar.

Daha sonra, kullanıcı bir yukarı olayını tetikleyen geri tuşundan parmağını kaldırdığında, interceptBackKeyUp geri tuş sayacına 1 ekler. Daha sonra gelecekte 300 milisaniye boyunca bir mesajı kuyruğa alır. Bunun nedeni, sistemin, geri düğmesine basmanın çoklu basma olayının parçası olup olmadığına karar verirken 300 milisaniyelik bir gecikme süresi ayırmasıdır. Eğer öyleyse, kullanıcı düğmeye basarak paniğe kapılabilir, bu nedenle sistemin anahtar olayı kullanıcı uygulamasına göndermemesi gerekir.

300ms çoklu basma zaman aşımı değeri güvenli ayarda saklanır"multi_press_timeout" Aşağıda gösterildiği gibi.

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

Varsayılan olarak bu değer 300 ms'ye ayarlanmıştır.

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

Daha sonra, gerçekten bir çoklu basış algılanırsa (>300 ms içinde 1 geri düğmesinin yukarı/aşağı basımı tamamlanır), sistem backMultiPressAction Hangi eylemin gerçekleştirileceğini belirleme yöntemi. Son olarak geri düğmesi sayacı 0'a sıfırlanır.

Çok küçük ve duyurulmamış bir özellik olmasına rağmen, Android'i ortalama kullanıcı için daha güvenli hale getirmek amacıyla Google'ın perde arkasında neler üzerinde çalıştığını görmek yine de güzel.