Допирате копчето за одобрување на VPN и дијалогот не реагира. Природниот заклучок е дека VPN апликацијата или серверот е расипан, па луѓето ги ресетираат лозинките, го менуваат DNS или го реинсталираат клиентот. Вообичаено ништо од тоа не го допира дефектот, бидејќи Android отфрла допири што пристигнуваат низ пречка, а екранот за одобрување на VPN е токму таков вид чувствително барање за согласност што ја добива таа заштита. Допирот никогаш не стигнува до копчето.

Што всушност отфрла заштитата

Android ги штити чувствителните интеракции од tapjacking, каде друг прозорец стои врз дијалог и или го краде допирот или го прави двосмислен. View се приклучува со View.setFilterTouchesWhenObscured, а настанот пристигнува носејќи MotionEvent.FLAG_WINDOW_IS_OBSCURED кога друг прозорец е означен како делумно или целосно замаглувачки. Кога тоа се случува, настанот се отфрла наместо да се достави на погрешно место. Android 12 (API 31) ја прошири истата заштита со блокирање на недоверливи допири во системските површини за согласност, поради што дијалогот за одобрување може да одбие допир од преклоп што други апликации сепак би го прифатиле.

Три работи редовно создаваат пречка: апликација што го има дозволувањето за прикажување врз други апликации, услуга за пристапност што црта содржина и лебдечки widget од снимач на екран или алатка за филтри. Некои функции на екранот на производителот додаваат и свој слој, поради што истиот дијалог може да се однесува поинаку на два телефони со исто издание на 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, за да знаете која согласност ја давате. Потоа запрете го конкретниот преклоп преку неговото сопствено поставување, наместо со одземање на широко дозволување што можеби ќе ви треба подоцна. Екранскиот филтер обично има прекинувач во сопствената апликација; лебдечкиот widget има контрола за затворање; режимот на екранот на производителот има прекинувач во Поставки за екранот.

Потоа вратете се во VPN апликацијата и повторно побарајте одобрување, за дијалогот да се создаде од ново. Ако допирот сега работи, приспособете го однесувањето за компатибилност на преклопот или оставете го исклучен додека се поврзувате, и задржете ја заштитата од допир вклучена.

Ако не можете да одредите кој прозорец е одговорен, отстранувајте ги еден по еден и повторувајте го дијалогот за согласност по секоја промена. Контролната лента на снимачот или лебдечкиот кратенка обично е виновникот, а онаа што ја отстранивте веднаш пред да проработи е одговорот.

Вратете сè неповрзано што сте го исклучиле по пат. Екранскиот филтер или ноќниот режим не се непријателот; непријател е конкретниот прозорец што се преклопува со дијалогот.

Што да не правите за да го поминете дијалогот

Не доделувајте пристапност на непозната апликација за да може да го притисне копчето, и не инсталирајте помошна апликација за таа цел. Тие ја доделуваат токму способноста што заштитата постои за да ја одбие, на екран што овластува VPN.

Не го автоматизирајте дијалогот ни со алатка за внес. Тоа го дава истиот резултат како злонамерен преклоп и не ве учи ништо за причината.

На управуван уред, политиката што ги ограничува промените на VPN е одлука на администраторот. Експеримент со преклоп не е овластување да се заобиколи. Исто така, копче за согласност што не реагира не е причина да се ослаби верификацијата на сертификатот или да се менуваат акредитивите на сметката: ниту едно поставување не отстранува локална пречка за допир.

Ако сè уште не успее, пријавете го точното однесување

Опишете го дијалогот, а не заклучокот: која апликација побарала одобрување, дали дијалогот останал отворен или се затворил, дали други чувствителни барања како предупредувањата за непознати извори или пристапност исто така ги игнорираат допирите, моделот на уредот и изданието на Android, и листите на преклопи и пристапност што сте ги снимиле.

Прашајте го сопственикот на поддршката уште едно прашање додека сте таму: дали уредската политика воопшто ги ограничува промените на VPN конфигурацијата. Управуваниот блок изгледа поинаку од игнориран допир, а знаењето со кое се соочувате заштедува втор круг.

Овој сет разликува проблем со замаглен допир од расипан влезен уред, замрзнат дијалог или блок од политика. Исто така му кажува на следниот човек дали да гледа во екранот или во мрежата.

Упатството за tapjacking на Android ги опфаќа условите за замаглени прозорци и API-ата зад ова однесување. Ако сакате трага од докази, барајте FLAG_WINDOW_IS_OBSCURED и FLAG_WINDOW_IS_PARTIALLY_OBSCURED на настанот што никогаш не стигна до копчето. Дијалогот што останува отворен е она што треба да се сними, бидејќи покажува дека допирот бил задржан, а не доставен до друг прозорец.

Поврзани статии