Puudutad VPN-i kinnitamise nuppu ja dialoog ei reageeri. Loomulik järeldus on, et rakendus või server on katki, seega inimesed lähtestavad paroole, muudavad DNS-i või installivad kliendi uuesti. Tavaliselt ei puuduta miski sellest põhjust, sest Android viskab kõrvale puudutused, mis tulevad läbi takistuse, ja VPN-i kinnitamise ekraan on täpselt selline tundlik nõusolekudialoog. Puudutus ei jõua kunagi nupuni.

Mida kaitse tegelikult tagasi lükkab

Android kaitseb tundlikke toiminguid tapjacking’u eest, kus teine aken istub dialoogi kohal ja varastab puudutuse või teeb selle kahemõtteliseks. Vaade liitub View.setFilterTouchesWhenObscured abil ja sündmus saabub MotionEvent.FLAG_WINDOW_IS_OBSCURED ga, kui teine aken on märgitud osaliselt või täielikult katvaks. Siis visatakse sündmus kõrvale, selle asemel et see valesse kohta toimetada. Android 12 (API 31) laiendas sama kaitset ebausaldusväärsete puudutuste blokeerimisega süsteemi nõusolekupindadel, mistõttu kinnitamisdialoog võib tagasi lükata ülekatte puudutuse, mille teised rakendused veel vastu võtaksid.

Kolme asja tõttu tekib takistus regulaarselt: rakendus, millel on luba kuvada teiste rakenduste kohal, sisu joonistav juurdepääsuteenus ja ekraanisalvesti või filtrivahendi hõljuv vidin. Mõned tootja ekraanifunktsioonid lisavad oma kihi, mistõttu sama dialoog võib kahes sama Androidi versiooniga telefonis käituda erinevalt. Osaliselt kattev aken seab FLAG_WINDOW_IS_PARTIALLY_OBSCURED ja puudutus visatakse kõrvale, enne kui nupp seda üldse näeb. See on ekraani omadus, mitte võrgu oma. Puudutuse kõrvaleviskamise hetkel ei ole VPN-i serverile midagi saadetud, seega ei saa ükski serveripoolne muudatus tulemust mõjutada.

Erista surnud puudutus ebaõnnestunud ühendusest

Erinevus on kogu diagnoos ja see võtab kümme sekundit. Kui puudutust eiratakse ja dialoog jääb täpselt endiseks, on takistus kohalik. Kui dialoog sulgub ja seejärel ilmub viga, võeti nõusolek vastu ja oled teises etapis, mis vajab rakenduse enda sündmuseandmeid.

Kohalikku lugemist saad kinnitada, kontrollides, kas taotlev rakendus üldse ühendust proovis. Klient, mis ei logi kunagi käepigistuse katset, kui nõusolekudialoog on ekraanil, ei ole võrku jõudnud.

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

Loetle, kellel on ülekatte luba ja millised juurdepääsuteenused on sisse lülitatud, ning võrdle seda töötavaga. Ära lülita välja platvormi kaitset ennast; just see takistab peidetud aknal sinu eest nõusolekudialoogile vastata.

Eemalda takistus ja proovi tavaline voog uuesti

Tuvasta esmalt, milline rakendus VPN-i kinnitust küsis, et teaksid, millist nõusolekut annad. Seejärel peata konkreetne ülekate selle enda seade kaudu, mitte laia loa tühistamisega, mida võid hiljem vajada. Ekraanifiltril on tavaliselt oma rakenduses lüliti; hõljuv vidin on sulgemisnupuga; tootja ekraanirežiimil on lüliti ekraaniseadetes.

Seejärel mine tagasi VPN-i rakendusse ja küsi kinnitust uuesti, et dialoog luuakse värskelt. Kui puudutus nüüd töötab, kohanda ülekatte ühilduvuskäitumist või jäta see ühendamise ajaks välja, ja hoia puudutuskaitse sisse lülitatud.

Kui ei suuda kindlaks teha, milline aken on vastutav, eemalda need ükshaaval ja proovi nõusolekudialoogi pärast igat muudatust. Salvesti juhtpaneel või hõljuv otsetee on tavaline süüdlane, ja see, mille eemaldasid vahetult enne õnnestumist, on vastus.

Taasta kõik kõrvaline, mille teel välja lülitasid. Ekraanifilter või öörežiim ei ole vaenlane; vaenlane on konkreetne aken, mis dialoogiga kattub.

Mida mitte teha, et dialoogist mööda saada

Ära anna tundmatule rakendusele juurdepääsu, et see saaks nuppu vajutada, ja ära paigalda selleks abirakendust. See annab täpselt selle võime, mille keelamiseks kaitse loodud on, ekraanil, mis annab VPN-ile volituse.

Ära automatiseeri dialoogi sisestusvahendiga. See annab sama tulemuse nagu pahatahtlik ülekate ega õpeta põhjuse kohta midagi.

Hallatud seadmes on VPN-i muudatusi piirav poliitika administraatori otsus. Ülekatte eksperiment ei ole luba sellest mööda minna. Samuti ei ole reageerimata kinnitusnupp põhjus nõrgendada sertifikaadi kontrolli või muuta konto volitusi: kumbki seade ei kõrvalda kohalikku puudutustakistust.

Kui ikka ei õnnestu, teata täpsest käitumisest

Kirjelda dialoogi, mitte järeldust: milline rakendus kinnitust küsis, kas dialoog jäi avatuks või sulgus, kas ka teised tundlikud küsimused nagu hoiatused tundmatute allikate või juurdepääsu kohta eiravad puudutusi, seadme mudel ja Androidi versioon ning sinu kogutud ülekatete ja juurdepääsuteenuste loendid.

Küsi tugivastutajalt veel üht: kas seadme poliitika üldse piirab VPN-i konfiguratsiooni muudatusi. Hallatud blokeering näeb teistsugune välja kui eiratud puudutus, ja teadmine, mida vaatad, säästab teise ringi.

See komplekt eristab kaetud puudutuse probleemi katkisest sisendseadmest, kinni jäänud dialoogist või poliitika blokeeringust. See ütleb ka järgmisele inimesele, kas vaadata ekraani või võrku.

Androidi tapjacking’u juhend katab kaetud akende tingimused ja selle käitumise taga olevad API-d. Kui soovid tõendite jälge, otsi FLAG_WINDOW_IS_OBSCURED ja FLAG_WINDOW_IS_PARTIALLY_OBSCURED sündmusel, mis kunagi nupuni ei jõudnud. Dialoog, mis jääb avatuks, on see, mida tasub jäädvustada, sest see näitab, et puudutus hoiti kinni, mitte ei antud teisele aknale.

Seotud artiklid