تنقر زر الموافقة على VPN فلا تتفاعل النافذة. الاستنتاج الطبيعي أن التطبيق أو الخادم معطل، فيعيد الناس تعيين كلمات المرور أو يغيرون DNS أو يعيدون تثبيت العميل. في الحالة المعتادة لا يمس أي من ذلك العطل، لأن Android يطرح اللمسات التي تصل عبر عائق، وشاشة الموافقة على VPN هي بالتحديد نوع مطالبة الموافقة الحساسة التي تحصل على تلك الحماية. النقرة لا تصل إلى الزر أبداً.

ما الذي ترفضه الحماية فعلاً

يحمي Android التفاعلات الحساسة من اختطاف النقر، حيث تقف نافذة أخرى فوق النافذة فتسرق النقرة أو تجعلها ملتبسة. يشترك العرض في ذلك عبر View.setFilterTouchesWhenObscured، ويصل الحدث حاملاً MotionEvent.FLAG_WINDOW_IS_OBSCURED عندما تُعلَّم نافذة أخرى بأنها تحجب جزئياً أو كلياً. وعندها يُطرح الحدث بدلاً من تسليمه إلى المكان الخطأ. وسّع Android 12 (API 31) الحماية نفسها بحجب اللمسات غير الموثوقة في أسطح الموافقة النظامية، ولهذا يمكن لنافذة الموافقة أن ترفض نقرة من طبقة علوية كانت تطبيقات أخرى ستقبلها.

ثلاثة أشياء تنتج عائقاً بانتظام: تطبيق يملك إذن العرض فوق التطبيقات الأخرى، وخدمة إمكانية وصول ترسم محتوى، وأداة عائمة من مسجل شاشة أو أداة تصفية. تضيف بعض ميزات العرض لدى الشركات المصنعة طبقتها أيضاً، ولهذا قد تتصرف النافذة نفسها بشكل مختلف على هاتفين بنفس إصدار Android. النافذة التي تحجب جزئياً تضبط FLAG_WINDOW_IS_PARTIALLY_OBSCURED، وتُطرح اللمسة قبل أن يراها الزر إطلاقاً. هذه خاصية للشاشة لا للشبكة. لم يُرسل شيء إلى خادم VPN في لحظة طرح النقرة، فلا يمكن لأي تغيير على جانب الخادم أن يؤثر في النتيجة.

افصل النقرة الميتة عن الاتصال الفاشل

التمييز هو التشخيص كله ولا يستغرق سوى عشر ثوان. إن جرى تجاهل النقرة وبقيت النافذة كما هي تماماً، فالعائق محلي. وإن أُغلقت النافذة وظهر خطأ بعدها، فقد قُبلت الموافقة وانتقلت إلى مرحلة أخرى تحتاج معلومات الحدث الخاصة بتطبيق VPN.

يمكنك تأكيد القراءة المحلية عبر التحقق مما إذا كان التطبيق الطالب قد حاول الاتصال أصلاً. العميل الذي لا يسجل أي محاولة مصافحة بينما نافذة الموافقة معروضة لم يصل إلى الشبكة.

adb shell cmd appops get com.example.vpn SYSTEM_ALERT_WINDOW
adb shell settings get secure enabled_accessibility_services

اسرد ما يملك إذن الطبقة العلوية وأي خدمات إمكانية الوصول مفعّلة، ثم طابقها مع ما يعمل فعلاً. لا تعطّل حماية المنصة نفسها؛ فهي ما يمنع نافذة مخفية من الرد على مطالبة موافقة نيابة عنك.

أزل العائق ثم أعد المحاولة في المسار الطبيعي

حدّد أولاً التطبيق الذي طلب الموافقة على VPN لتعرف أي موافقة تمنح. ثم أوقف الطبقة العلوية المحددة من إعدادها هي، لا بسحب إذن واسع قد تحتاجه لاحقاً. مرشح الشاشة عادة له مفتاح في تطبيقه، والأداة العائمة لها زر إغلاق، ووضع العرض لدى الشركة المصنعة له مفتاح في إعدادات العرض.

عُد بعد ذلك إلى تطبيق VPN واطلب الموافقة مرة أخرى لتُنشأ النافذة من جديد. إن عملت النقرة الآن، فاضبط سلوك التوافق للطبقة العلوية أو أبقها مطفأة أثناء الاتصال، واحتفظ بحماية اللمس مفعّلة.

إن لم تعرف أي نافذة مسؤولة، فأزلها واحدة تلو الأخرى وأعد محاولة نافذة الموافقة بعد كل تغيير. شريط التحكم في المسجل أو الاختصار العائم هو الجاني المعتاد، والنافذة التي أزلتها قبل النجاح مباشرة هي الجواب.

أعد أي شيء غير ذي صلة أطفأته في الطريق. مرشح الشاشة أو الوضع الليلي ليس العدو، بل النافذة المحددة التي تتراكب مع النافذة.

ما لا يجب فعله لتجاوز النافذة

لا تمنح إمكانية الوصول لتطبيق غير مألوف كي يضغط الزر، ولا تثبت تطبيقاً مساعداً لهذا الغرض. فذلك يمنح بالضبط القدرة التي وُجدت الحماية لتمنعها، على شاشة تصرّح باستخدام VPN.

ولا تؤتمت النافذة بأداة إدخال. فهي تعطي النتيجة نفسها التي تعطيها طبقة علوية خبيثة ولا تعلمك شيئاً عن السبب.

على جهاز مُدار، السياسة التي تقيد تغييرات VPN قرار المدير. وتجربة طبقة علوية ليست إذناً بالالتفاف عليها. وبالمثل، زر موافقة لا يستجيب ليس سبباً لإضعاف التحقق من الشهادة أو تغيير بيانات الحساب: لا الإعدادان يزيلان عائق لمس محلياً.

إن استمر الفشل، فبلّغ بالسلوك الدقيق

صف النافذة لا الاستنتاج: أي تطبيق طلب الموافقة، وهل بقيت النافذة مفتوحة أم أُغلقت، وهل تتجاهل مطالبات حساسة أخرى مثل تحذيرات المصادر غير المعروفة أو إمكانية الوصول النقر أيضاً، وطراز الجهاز وإصدار Android، وقائمتا الطبقات العلوية وإمكانية الوصول التي التقطتها.

اسأل مسؤول الدعم سؤالاً إضافياً وأنت هناك: هل تقيّد سياسة الجهاز تغييرات إعداد VPN أصلاً. الحجب المُدار يبدو مختلفاً عن نقرة متجاهلة، ومعرفة أيهما أمامك توفر جولة ثانية.

هذه المجموعة تفرق بين مشكلة لمس محجوب وجهاز إدخال معطل ونافذة متجمدة أو حجب سياسة. وتخبر الشخص التالي كذلك هل ينظر إلى الشاشة أم إلى الشبكة.

تغطي إرشادات Android حول اختطاف النقر شروط النوافذ المحجوبة وواجهات API وراء هذا السلوك. وإن أردت أثر الأدلة، فابحث عن FLAG_WINDOW_IS_OBSCURED وFLAG_WINDOW_IS_PARTIALLY_OBSCURED في الحدث الذي لم يصل إلى الزر قط. النافذة التي تبقى مفتوحة هي ما يجب التقاطه، لأنها تُظهر أن النقرة حُجبت لا أن نافذة أخرى تسلمتها.

مقالات ذات صلة