Dotaknete se gumba za odobritev VPN in pogovorno okno se ne odzove. Naravna ugotovitev je, da sta aplikacija VPN ali strežnik pokvarjena, zato ljudje ponastavijo gesla, spremenijo DNS ali znova namestijo odjemalca. Običajno se nič od tega ne dotakne napake, ker Android zavrže dotike, ki pridejo skozi oviro, zaslon za odobritev VPN pa je ravno takšna občutljiva zahteva za soglasje, ki dobi to zaščito. Dotik nikoli ne pride do gumba.

Kaj zaščita pravzaprav zavrača

Android ščiti občutljive interakcije pred tapjackingom, ko drugo okno sedi nad pogovornim oknom in bodisi ukrade dotik bodisi ga naredi dvoumnega. Pogled se temu pridruži z View.setFilterTouchesWhenObscured, dogodek pa prispe z MotionEvent.FLAG_WINDOW_IS_OBSCURED, ko je drugo okno označeno kot delno ali popolnoma zakrivajoče. Ko se to zgodi, se dogodek zavrže, namesto da bi bil dostavljen na napačno mesto. Android 12 (API 31) je isto zaščito razširil z blokiranjem nezaupanja vrednih dotikov v sistemskih površinah za soglasje, zato lahko pogovorno okno za odobritev zavrne dotik iz prekrivanja, ki bi ga druge aplikacije še vedno sprejele.

Tri stvari redno ustvarjajo oviro: aplikacija z dovoljenjem za prikaz nad drugimi aplikacijami, storitev za dostopnost, ki riše vsebino, in plavajoči gradnik snemalnika zaslona ali orodja za filtriranje. Nekatere zaslonske funkcije proizvajalca dodajo še svojo plast, zato se lahko isto pogovorno okno obnaša drugače na dveh telefonih z isto različico Androida. Okno, ki delno zakriva, nastavi FLAG_WINDOW_IS_PARTIALLY_OBSCURED, in dotik se zavrže, preden ga gumb sploh vidi. To je lastnost zaslona, ne omrežja. V trenutku, ko je dotik zavržen, na strežnik VPN ni bilo poslano nič, zato nobena sprememba na strani strežnika ne more vplivati na izid.

Ločite mrtev dotik od neuspešne povezave

Ta razlika je cela diagnoza in traja deset sekund. Če je dotik prezrt in pogovorno okno ostane natanko tako, kot je bilo, je ovira lokalna. Če se pogovorno okno zapre in se nato pojavi napaka, je bilo soglasje sprejeto in ste prešli v drugo fazo, ki potrebuje lastne informacije o dogodkih aplikacije VPN.

Lokalno branje lahko potrdite s preverjanjem, ali je aplikacija, ki zahteva, sploh poskusila povezavo. Odjemalec, ki nikoli ne zabeleži poskusa rokovanja, medtem ko je na zaslonu pogovorno okno za soglasje, ni dosegel omrežja.

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

Naštejte, kdo ima dovoljenje za prekrivanje in katere storitve za dostopnost so omogočene, nato jih primerjajte s tem, kar teče. Ne onemogočite same zaščite platforme; prav ta preprečuje, da bi skrito okno odgovorilo na zahtevo za soglasje v vašem imenu.

Odstranite oviro in nato ponovite običajni potek

Najprej ugotovite, katera aplikacija je zahtevala odobritev VPN, da boste vedeli, katero soglasje dajete. Nato ustavite določeno prekrivanje prek njegove lastne nastavitve, namesto da prekličete široko dovoljenje, ki ga boste morda potrebovali pozneje. Zaslonski filter ima običajno stikalo v svoji aplikaciji; plavajoči gradnik ima kontrolo za zapiranje; način zaslona proizvajalca ima stikalo v nastavitvah zaslona.

Nato se vrnite v aplikacijo VPN in znova zahtevajte odobritev, da se pogovorno okno ustvari na novo. Če dotik zdaj deluje, prilagodite vedenje združljivosti prekrivanja ali ga pustite izklopljenega, medtem ko se povezujete, in zaščito dotika pustite vklopljeno.

Če ne morete ugotoviti, katero okno je odgovorno, jih odstranjujte eno za drugo in po vsaki spremembi znova preizkusite pogovorno okno za soglasje. Vrstica za upravljanje snemalnika ali plavajoča bližnjica je običajno krivec, in tisto, kar ste odstranili tik preden je uspelo, je odgovor.

Obnovite vse nepovezano, kar ste med potjo izklopili. Zaslonski filter ali nočni način ni sovražnik; sovražnik je določeno okno, ki se prekriva s pogovornim oknom.

Česa ne storiti, da bi obšli pogovorno okno

Neznani aplikaciji ne dajte dostopnosti, da bi lahko pritisnila gumb, in v ta namen ne nameščajte pomožne aplikacije. Takšne aplikacije dajo natanko tisto zmožnost, ki naj bi jo zaščita zavrnila, na zaslonu, ki pooblašča VPN.

Pogovornega okna ne avtomatizirajte niti z vhodnim orodjem. To da enak rezultat kot zlonamerno prekrivanje in vas ne nauči ničesar o vzroku.

Na upravljani napravi je pravilnik, ki omejuje spremembe VPN, odločitev skrbnika. Poskus s prekrivanjem ni dovoljenje za njegovo obhod. Prav tako gumb za soglasje, ki se ne odziva, ni razlog za oslabitev preverjanja potrdil ali spremembo poverilnic računa: nobena nastavitev ne odstrani lokalne ovire za dotik.

Če še vedno ne uspe, poročajte o natančnem vedenju

Opišite pogovorno okno, ne ugotovitve: katera aplikacija je zahtevala odobritev, ali je pogovorno okno ostalo odprto ali se je zaprlo, ali tudi druge občutljive zahteve, na primer opozorila o neznanih virih ali o dostopnosti, ignorirajo dotike, model naprave in različico Androida ter sezname prekrivanj in dostopnosti, ki ste jih zajeli.

Medtem ko ste tam, zastavite skrbniku podpore še eno vprašanje: ali pravilnik naprave sploh omejuje spremembe konfiguracije VPN. Upravljana blokada je videti drugače kot prezrt dotik, in vedenje, s katerim imate opravka, prihrani drugi krog.

Ta sklop loči težavo zakritega dotika od pokvarjene vhodne naprave, zamrznjenega pogovornega okna ali blokade s pravilnikom. Pove tudi naslednji osebi, ali naj gleda na zaslon ali na omrežje.

Androidova navodila o tapjackingu pokrivajo pogoje zakritih oken in API-je za tem vedenjem. Če želite sled dokazov, poiščite FLAG_WINDOW_IS_OBSCURED in FLAG_WINDOW_IS_PARTIALLY_OBSCURED pri dogodku, ki nikoli ni prišel do gumba. Pogovorno okno, ki ostane odprto, je tisto, kar je treba zajeti, ker kaže, da je bil dotik zadržan in ne dostavljen drugemu oknu.

Sorodni članki