Android 7.1+ memiliki Mode "Deteksi Panik" yang Mendeteksi Penekanan Tombol Kembali yang Panik

Android Nougat (7.1+) memiliki mode deteksi panik yang mendeteksi jika pengguna menekan tombol kembali dengan panik. Baca lebih lanjut untuk mengetahui fungsinya.

Meskipun banyak pembaca situs web Android-sentris seperti milik kami yang cenderung tidak menemukannya situasi di mana aplikasi jahat membahayakan sistem mereka, hal yang sama mungkin tidak berlaku untuk umum populasi. Hampir setiap minggu kami mendengar dari berbagai peneliti keamanan tentang malware baru yang menargetkan pengguna Android. Sebagian besar serangan berbahaya ini dapat dihindari dengan memeriksa izin atau menghindari pemasangan aplikasi yang tampak tidak jelas, dan Meskipun kami menyarankan pembaca kami untuk menjaga keamanan ponsel mereka sendiri, Google bertanggung jawab untuk mengamankan setiap Android telepon. Untuk itu, perusahaan diam-diam memperkenalkan fitur keamanan baru di Android 7.1 Nougat yang disebut "deteksi panik" yang mendengarkan beberapa kali tombol kembali ditekan secara berurutan, lalu mengembalikan pengguna ke layar beranda.

Sederhananya, jika aplikasi jahat mencoba membajak layar pengguna dan mencegah pengguna keluar (mungkin dengan menerapkan Layanan Aksesibilitas untuk mencegat semua peristiwa penting), Android sendiri akan menimpa aplikasi tersebut untuk mengembalikannya tampilan depan. Pengguna kemudian dapat menghapus aplikasi berbahaya dari peluncur.

Dapat dimengerti bahwa fitur ini tidak terdeteksi karena Google kemungkinan besar tidak ingin mengiklankan kepada dunia salah satu cara mereka memberantas aplikasi berbahaya. Namun sekilas kode sumber terbuka Android mengungkapkan bagaimana fitur sederhana ini bekerja pada perangkat yang mendukungnya.


Memeriksa Kode

Pertama-tama, hanya karena perangkat Anda menjalankan Android 7.1+ tidak berarti perilaku deteksi panik ini benar-benar diaktifkan. Nilai yang menentukan apakah fitur aktif dapat ditemukan di config.xml file dalam APK SystemUI.


<integername="config_backPanicBehavior">0integer>

Secara default, reaksi Android terhadap penekanan tombol kembali yang panik adalah tidak melakukan apa pun. Jika nilai integer dari config_backPanicBehavior diatur ke 1, namun di situlah tindakan perlindungan baru Android diterapkan.

Di dalam PhoneWindowManager.java kita dapat melihat sebagian besar bagaimana fitur ini diterapkan. Pertama-tama, file tersebut mendefinisikan dua hal: berapa banyak penekanan tombol kembali yang diperlukan sistem untuk menentukan bahwa pengguna "panik" dan kemudian tindakan apa yang harus diambil berdasarkan keadaan tersebut.

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

Secara default, sistem memerlukan penekanan tombol kembali sebanyak 4 kali berturut-turut untuk masuk ke mode panik. Apakah fungsi tersebut menggunakan nilai integer atau tidak PANIC_PRESS_BACK_NOTHING atau PANIC_PRESS_BACK_HOME ditentukan oleh nilai dalam file konfigurasi dalam APK SystemUI.

Terlepas dari nilai ini, setiap penekanan tombol kembali dicentang untuk melihat apakah ini dihitung sebagai penekanan panik. Pertama, sistem mencegat tekanan ke bawah untuk KODE KUNCI_BACK peristiwa kunci dan memeriksa apakah sistem diatur untuk memeriksa penekanan tombol berkali-kali atau penekanan lama. Kemudian, sistem akan memeriksa apakah sistem harus meneruskan penekanan untuk peristiwa kunci KEYCODE_BACK yang sama ke aplikasi pengguna atau tidak.

Dalam interceptBackKeyDown() metode, jika penghitung penekanan tombol kembali adalah antara 1 dan 3, maka sistem akan melewatkan batas waktu deteksi multi-tekan karena deteksi panik memerlukan setidaknya 4 penekanan agar tindakan apa pun dapat diambil.

Selanjutnya, setelah pengguna melepaskan jari mereka dari tombol kembali yang memicu peristiwa naik, maka interceptBackKeyUp menambahkan 1 ke penghitung kunci belakang. Ini kemudian mengantrekan pesan selama 300 milidetik di masa depan. Alasannya adalah karena sistem menyediakan periode penundaan 300 milidetik saat memutuskan apakah penekanan tombol kembali merupakan bagian dari peristiwa multi-tekan. Jika ya, maka pengguna mungkin akan panik menekan tombol tersebut sehingga sistem tidak mengirimkan peristiwa kunci ke aplikasi pengguna.

Nilai batas waktu multi tekan 300 ms disimpan dalam pengaturan aman "multi_press_timeout" seperti yang ditunjukkan di bawah ini.

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

Secara default, nilai ini diatur ke 300ms.

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

Kemudian, jika multi-tekan memang terdeteksi (>1 tombol kembali selesai ditekan atas/bawah dalam waktu 300 ms), sistem akan memanggil backMultiPressAction metode untuk menentukan tindakan apa yang harus diambil. Terakhir, penghitung tombol kembali direset ke 0.

Meskipun merupakan fitur yang sangat kecil dan tidak dipublikasikan, tetap menyenangkan melihat apa yang Google kerjakan di balik layar untuk membuat Android lebih aman bagi rata-rata pengguna.