एंड्रॉइड नौगट (7.1+) में एक पैनिक डिटेक्शन मोड है जो यह पता लगाता है कि उपयोगकर्ता बैक बटन दबा रहा है या नहीं। यह क्या करता है यह जानने के लिए और पढ़ें।
जबकि हमारी जैसी एंड्रॉइड-केंद्रित वेबसाइटों के कई पाठकों के सामने आने की संभावना कम है ऐसी स्थितियाँ जहां कोई दुष्ट एप्लिकेशन उनके सिस्टम से समझौता करता है, वही सामान्य के लिए सच नहीं हो सकता है जनसंख्या। लगभग हर सप्ताह हम विभिन्न सुरक्षा शोधकर्ताओं से एंड्रॉइड उपयोगकर्ताओं को लक्षित करने वाले नए मैलवेयर के बारे में सुनते हैं। इनमें से अधिकांश दुर्भावनापूर्ण हमलों से अनुमतियों का निरीक्षण करके या अधूरे दिखने वाले एप्लिकेशन इंस्टॉल करने से बचकर बचा जा सकता है, और हालाँकि हम अपने पाठकों को अपने फ़ोन की सुरक्षा अपने हाथों में लेने की सलाह देते हैं, लेकिन Google प्रत्येक Android की सुरक्षा के लिए ज़िम्मेदार है फ़ोन। उस उद्देश्य के लिए, कंपनी ने चुपचाप एंड्रॉइड 7.1 नूगट में एक नया सुरक्षा फीचर पेश किया जिसे "घबराहट का पता लगाना"जो लगातार कई बैक बटन दबाने पर सुनता है और फिर उपयोगकर्ता को उनकी होम स्क्रीन पर लौटा देता है।
काफी सरलता से, यदि कोई दुष्ट एप्लिकेशन उपयोगकर्ता की स्क्रीन को हाईजैक करने का प्रयास करता है और उपयोगकर्ता को जाने से रोकता है (शायद इसके द्वारा) सभी प्रमुख घटनाओं को रोकने के लिए एक एक्सेसिबिलिटी सेवा को लागू करना), एंड्रॉइड स्वयं ही एप्लिकेशन को वापस लाने के लिए ओवरराइड कर देगा होम स्क्रीन। उपयोगकर्ता संभवतः लॉन्चर से दुर्भावनापूर्ण एप्लिकेशन को अनइंस्टॉल कर सकता है।
यह सुविधा रडार के नीचे उड़ गई, यह समझ में आता है क्योंकि Google संभवतः दुनिया के सामने विज्ञापन नहीं देना चाहेगा जिस तरह से वे दुर्भावनापूर्ण अनुप्रयोगों को ख़त्म कर रहे हैं। लेकिन एंड्रॉइड के ओपन सोर्स कोड पर एक त्वरित नज़र डालने से पता चलता है कि यह सरल सुविधा उन उपकरणों पर कैसे काम करती है जो इसका समर्थन करते हैं।
कोड की जांच करना
सबसे पहले, सिर्फ इसलिए कि आपका डिवाइस एंड्रॉइड 7.1+ चला रहा है इसका मतलब यह नहीं है कि यह पैनिक डिटेक्शन व्यवहार वास्तव में सक्षम है। वह मान जो यह निर्धारित करता है कि सुविधा चालू है या नहीं, इसमें पाया जा सकता है config.xml
SystemUI APK के भीतर फ़ाइल करें।
<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
SystemUI APK के भीतर कॉन्फ़िगरेशन फ़ाइल में मान द्वारा निर्धारित किया जाता है।
इस मान के बावजूद, प्रत्येक बैक बटन मल्टी-प्रेस को यह देखने के लिए जांचा जाता है कि क्या इसे पैनिक प्रेस के रूप में गिना जाएगा। सबसे पहले, सिस्टम डाउन प्रेस को इंटरसेप्ट करता है KEYCODE_BACK key ईवेंट और जांच करता है कि सिस्टम कुंजी के मल्टी-प्रेस या लॉन्ग-प्रेस की जांच करने के लिए सेट है या नहीं। फिर, सिस्टम जाँचता है कि उसे उपयोगकर्ता ऐप को उसी KEYCODE_BACK कुंजी ईवेंट के लिए अप प्रेस पास करना चाहिए या नहीं।
में interceptBackKeyDown()
विधि, यदि बैक की प्रेस काउंटर 1 और 3 के बीच है, तो सिस्टम मल्टी-प्रेस डिटेक्शन टाइमआउट को छोड़ देता है क्योंकि पैनिक डिटेक्शन के लिए किसी भी कार्रवाई के लिए कम से कम 4 प्रेस की आवश्यकता होती है।
इसके बाद, एक बार जब उपयोगकर्ता पिछली कुंजी से अपनी उंगली हटा देता है जो एक अप इवेंट को ट्रिगर करता है interceptBackKeyUp
बैक कुंजी काउंटर पर 1 जोड़ता है। इसके बाद यह भविष्य में 300 मिलीसेकेंड के लिए एक संदेश को कतारबद्ध करता है। इसका कारण यह है कि सिस्टम यह तय करते समय 300 मिलीसेकंड विलंब अवधि आरक्षित कर रहा है कि बैक बटन दबाना मल्टी-प्रेस इवेंट का हिस्सा है या नहीं। यदि ऐसा है, तो उपयोगकर्ता बटन दबाने से घबरा सकता है, इसलिए सिस्टम को उपयोगकर्ता एप्लिकेशन को कुंजी ईवेंट नहीं भेजना चाहिए।
300ms मल्टी प्रेस टाइमआउट मान सुरक्षित सेटिंग में संग्रहीत है "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";
डिफ़ॉल्ट रूप से, यह मान 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
फिर, यदि वास्तव में एक मल्टी-प्रेस का पता चलता है (>1 बैक बटन 300 एमएस के भीतर पूरा ऊपर/नीचे दबाता है), तो सिस्टम कॉल करता है backMultiPressAction
यह निर्धारित करने की विधि कि क्या कार्रवाई करनी है। अंत में, बैक बटन काउंटर 0 पर रीसेट हो जाता है।
हालाँकि यह एक बहुत छोटी, अप्रचारित सुविधा है, फिर भी यह देखना अच्छा है कि औसत उपयोगकर्ता के लिए एंड्रॉइड को अधिक सुरक्षित बनाने के लिए Google पर्दे के पीछे क्या काम कर रहा है।