2012-08-14 13 views
6

मैं अपने अनुप्रयोग के व्यवहार के लिए विज्ञापन लेकिन नमूना एप्लिकेशन करने के लिए नहीं करना चाहती ESET एंटीवायरस है।Android मोबाइल नियंत्रण

अपने आवेदन में से एक का अनुरोध विशेषता यह है कि स्थापना रद्द करें के लिए पासवर्ड जरूरत है। मैं अपना ऐप डिवाइस एडमिन सूची में जोड़ता हूं और अब इसे अनइंस्टॉल करना संभव नहीं है। लेकिन आप व्यवस्थापक डिवाइस के रूप में निष्क्रिय ऐप कर सकते हैं। आप सेटिंग> स्थान & सुरक्षा> उपकरण व्यवस्थापकों को चुनें करने के लिए जाना whan और आप ESET सुरक्षा अक्रिय करने की कोशिश यह गतिविधि शुरू होता है (मैं DeviceAdminReceiver.onDisableRequested से लगता है()) जो पासवर्ड के लिए इंतज़ार कर रहा है और अपने मोबाइल बंद है। होम बटन, वापस बटन और यहां तक ​​कि SwitchOff बटन प्रतिक्रिया नहीं करता है =>

यह कैसे संभव है कि घर, पीठ, SwitchOff और कैमरा बटन प्रतिक्रिया नहीं करता है?

संपादित करें - दूसरा सवाल हटाया (के बाद मैं अपने फोन से बैटरी बाहर ले - ESET उपकरण व्यवस्थापक भी नहीं था)

विचारों के लिए धन्यवाद।

+1

एंड्रॉइड में इन सुरक्षा समस्याओं को इंगित करने के लिए धन्यवाद। आम तौर पर, आप इसे StackOverflow जैसी जगहों पर पोस्ट करके सुरक्षा@android.com पर ईमेल भेजकर ऐसा करेंगे। सामान्य एसडीके ऐप्स जो आप यहां उद्धृत करते हैं, वह करने में सक्षम नहीं होना चाहिए, और यह सुनिश्चित करने के लिए कि यह ठीक हो रहा है, यह निर्धारित करने में कुछ समय लगेगा। – CommonsWare

उत्तर

2

ठीक है, खेद ESET लेकिन इस सुविधा बहुत ही दिलचस्प तो मैं decompiled सूत्रों :)

बुनियादी कार्यप्रवाह पर एक दृष्टि डाली लग रहा है निम्नलिखित:

  • com.eset.ems.antitheft.receiver.AdminReceiverDeviceAdminReceiver के उपवर्ग प्रसारण कार्यों के लिए पंजीकृत किया गया है DEVICE_ADMIN_ENABLED और DEVICE_ADMIN_DISABLED
  • उपकरण व्यवस्थापक अक्षम किया गया है com.eset.ems.antitheft.receiver.AdminReceiver.onDisabled()
  • com.eset.ems.antitheft.LockActivity कहा जाता है जब AdminReceiver.onDisabled()
  • LockActivity प्रारंभ हुआ है com.eset.ems.antitheft.LockingDialog से पता चलता है, जहां ज्यादातर अवरुद्ध जादू होता है

होम और अन्य बटन ब्लॉक एंटीवायरस निम्नलिखित चाल करना के लिए के रूप में - यह Android internals से ActivityManagerNative उपयोग करता है। अन्य सभी गतिविधियों के शीर्ष पर LockActivity रखने के लिए यह एक थ्रेड शुरू करता है जो ActivityManagerNative.moveTaskToFront() को LockActivity कार्य आईडी के साथ संगत रूप से कॉल करता है। करने के लिए एपीआई स्तर 10 प्रतिबिंब पहले और ActivityManager वर्ग से छिपा moveTaskToFront() पहुँचने के लिए उपयोग एपीआई 10 के बाद यह सिर्फ इसे उपयोग करने एंड्रॉयड codebase से ActivityManagerNative कोड का उपयोग करता है। इसके अलावा दोनों LockActivity और LockingDialog कॉल ActivityManagerNative.closeSystemDialogs() विधि कई बार। शायद यह सिस्टम बटन को रद्द करने के लिए किया जाता है जो बिजली बटन लंबे प्रेस के बाद उत्पन्न होता है।

DeviceAdminReceiver.onDisableRequested के रोक निष्पादन के लिए वास्तव में मैंने कोड में इसके बारे में कुछ विशेष नहीं देखा। डिवाइस एडमिन अक्षम होने के बाद ही गतिविधि शुरू होती है और यह सब कुछ है। और बैटरी आउट करने के बाद मेरे फोन डिवाइस पर व्यवस्थापक अक्षम कर दिया गया था।

+0

मुझे आपको अपने अंक देने में खुशी हुई। धन्यवाद। 7 महीने के बाद एकमात्र और उपयोगी जवाब। अब मैं इसे अपने निष्कर्षों से प्राप्त करने की कोशिश करूंगा। आप कैसे पता लगाया कि यह कैसे काम करता है? क्या मैं बाद में कुछ अतिरिक्त जानकारी के लिए पूछ सकता हूं? – vlkpo

+3

महान प्रश्न के लिए धन्यवाद। मैंने ईएसईटी एंटीवायरस एपीके से निकाले गए class.dex फ़ाइल को परिवर्तित करने के लिए dex2jar (https://code.google.com/p/dex2jar/) टूल का उपयोग किया।यह नियमित जार फ़ाइल का उत्पादन करता है जिसे किसी भी डिकंपेलर के साथ देखा जा सकता है (विशेष रूप से मैं http://java.decompiler.free.fr/ से जेडी का उपयोग करता हूं, शायद सबसे अच्छा मुफ्त जावा डीकंपलर)। असल में यह सब कुछ है, उसके बाद मेरे पास सोर्स कोड फाइलें थीं और देख सकती थी कि यह कैसे काम करता है। मैंने लॉगबैक से अभी देखा है कि जब मैं ईएसईटी एंटीवायरस के लिए डिवाइस व्यवस्थापक को अक्षम करता हूं और इसे प्रारंभ बिंदु के रूप में ले जाता हूं तो लॉकएक्टिविटी लॉन्च किया जा रहा है। –

+0

@AndreiMankevich क्या आप कृपया http://stackoverflow.com/questions/40282857/device-admin-confirm-before-deactivate और इसके बारे में अपने विचार सुझा सकते हैं? – Smeet