Lietojumprogrammas paraksta pārbaude: kā tas darbojas, kā to atspējot, izmantojot Xposed, un kāpēc to nevajadzētu darīt

Varat viegli atspējot Android lietojumprogrammas (APK) paraksta verifikāciju, izmantojot Xposed Framework, taču vairumā gadījumu to nevajadzētu darīt.

Ja kādreiz esat mēģinājis modificēt un pārinstalēt sistēmas lietojumprogrammu, iespējams, vienā vai otrā veidā esat saskāries ar lietojumprogrammas paraksta pārbaudēm. Pirms turpināt, noņēmāt sākotnējo lietotni, vai arī piešķīrāt savam pārveidotajam APK pakotnes nosaukumu, lai to varētu instalēt, nenoņemot veco lietojumprogrammu. Un jebkurā gadījumā jums pašam bija arī atkārtoti jāparaksta lietojumprogramma, lai tā tiktu instalēta.

Varat apiet visas šīs darbības, īslaicīgi atspējojot lietojumprogrammu parakstu pārbaudes. Bet pirms mēs iedziļināsimies šī raksta metaforiskajā gaļā un kartupeļos un pastāstīsim, kā to izdarīt, ir ļoti svarīgi, lai mēs nedaudz parunātu par lietojumprogrammu parakstu pārbaudēm, ko tās dara un kāpēc jūs vajadzētu nekad vairumā gadījumu tos noņemt.

Android paraksta verifikācijas pamati

Pēc noklusējuma Android OS pieprasa

visi lietojumprogrammas, kas jāparaksta, lai tās instalētu. Ļoti vienkāršā izteiksmē tas nozīmē, ka lietojumprogrammas paraksts tiek izmantots, lai identificētu lietojumprogrammas autoru (t.i. pārbaudīt tā leģitimitāti), kā arī izveidot uzticības attiecības starp lietojumprogrammām ar vienu un to pašu parakstu. Izmantojot pirmo, jūs esat pārliecināts (saprātīgā mērā), ka lietojumprogramma ar derīgu parakstu nāk no paredzamajiem izstrādātājiem. Un, izmantojot pēdējo, lietojumprogrammas, kas parakstītas ar vienu un to pašu privāto atslēgu, var darboties tajā pašā procesā un koplietot privātos datus. Pēc tam, kad instalējat lietojumprogrammas atjauninājumu, Android OS pārbauda šo parakstu, lai pārliecinātos, ka: A) APK nav bijis ir bojāts laikā kopš tā parakstīšanas, un B) lietojumprogrammas sertifikāts atbilst pašlaik instalētā sertifikāta sertifikātam versija.

Tātad, kā tas viss ietekmē mani reālajā pasaulē? Tas ir vienkārši, tiešām. Ja iegūstat APK no ārpuses Google Play veikala un mēģināt to instalēt kā atjauninājumu pašreiz instalētajai lietotnei (lasiet: to pašu pakotnes nosaukumu), OS mēģinās apstiprināt lietojumprogrammas sertifikātu, lai pārliecinātos, ka tas nāk no tā paša sākuma izstrādātājiem. Ja sertifikāts sakrīt, lietojumprogrammas instalēšana turpināsies, kā plānots, jūsu lietojumprogramma saglabās esošos datus, un viss ir tīrs. Ja paraksts nav derīgs (norāda, ka APK ir bojāts) vai ja sertifikāts neatbilst sākotnējās lietotnes sertifikātam, instalēšana neizdosies. Un, kā minēts iepriekš, lietojumprogrammas sertifikāts atbilst tikai tad, ja tas ir parakstīts ar to pašu privāto atslēgu, kas tika izmantota iepriekšējās versijas parakstīšanai. Citiem vārdiem sakot, varat instalēt lietojumprogrammu tikai tad, ja tai ir derīgs paraksts, kas atbilst APK saturu, un atjauninājumu var instalēt tikai tad, ja tā sertifikāts atbilst arī iepriekšējā versijā esošajam sertifikātam no lietotnes.

[Šajā citādi blīvajā rakstā ir viens ļoti publisks piemērs, kurā tika pazaudēta vai apdraudēta privāta lietojumprogrammas parakstīšanas atslēga. Es, protams, runāju par paša Google lietotni Authenticator, kas saņēma atjauninājumu, kas mainīja pakotnes nosaukumu no com.google.android.apps.authenticator uz com.google.android.apps.authenticator2 atjauninājumā apmēram pirms diviem gadiem. Šo izmaiņu dēļ visus turpmākos lietotnes Autentifikatora atjauninājumus varēja izdot tikai ar jauno pakotnes nosaukumu — ar jauno parakstu, ko ģenerēja jaunā privātā parakstīšanas atslēga.]

Kāpēc jūs varētu vēlēties (īslaicīgi) atspējot paraksta verifikāciju

Tagad apskatīsim iespējamo scenāriju, kurā, iespējams, vēlēsities īslaicīgi atspējot lietojumprogrammas paraksta verifikāciju. Kā minēts šī raksta sākumā, paraksta pārbaude var būt neliela galvassāpes, mainot esošās sistēmas lietojumprogrammas. Ja instalējat modificētu sistēmas lietojumprogrammas versiju, jūs nevarēsit parakstīt lietojumprogrammu ar derīgu un atbilstošu sertifikātu. Šādos gadījumos parasti vispirms vēlaties noņemt esošo lietojumprogrammu un pēc tam instalēt modificēto versiju kā parasti. Varat arī atspējot paraksta verifikāciju, taču labāk (un drošāk) atstāt paraksta verifikāciju iespējotu un vienkārši noņemt veco versiju, lai varētu instalēt jauno. Tomēr tas var kļūt par zināmu problēmu, ja lietotnē, kuru mēģināt aizstāt, ir dati, kurus nevēlaties zaudēt. Noteikti ir veidi, kā saglabāt datus manuāli, izmantojot saknes piekļuvi, un pārstādīt tos uz jauno versiju lietotnē, taču lietotāji var arī vienkārši uz laiku atspējot paraksta verifikāciju un pēc tam atsākt pārbaudes pēc tam. Alternatīvi, kā norādīja XDA vecākais loceklis mcbyte_it komentāros tas var noderēt arī aplikāciju izstrādē.

Kā to izdarīt

Līdz šim paraksta pārbaudes atspējošana ir bijis briesmīgs risinājums gandrīz jebkurai problēmai. Tas ir tāpēc, ka, to darot, jūs būtībā izmetat Android iebūvēto aizsardzību, kas nodrošina to ka jūsu lietojumprogrammas nav bojātas un to atjauninājumi nāk no oriģināla izstrādātājiem. Taču tagad, pateicoties Xposed Framework burvībai, varat īslaicīgi atspējot paraksta verifikāciju un atkārtoti iespējot to, kad esat pabeidzis modificētās lietojumprogrammas instalēšanu. Viens šāds Xposed modulis XDA vecākais loceklis nesen izlaida tieši to pīlers, un tas darbojas, kā plānots, visām ierīcēm, kas spēj darbināt Xposed. Tādā veidā, ja vēlaties instalēt modificētu lietojumprogrammas atjauninājumu, kas nav pareizi parakstīts, varat vienkārši iespējojiet moduli, restartējiet, instalējiet modificēto lietojumprogrammas atjauninājumu, atspējojiet moduli, atsāknējiet un esiet priecīgi veidā.

Tagad, kad zināt, kā īslaicīgi atspējot paraksta verifikāciju, ir svarīgi vēlreiz atgādināt, cik tā ir svarīga paraksta verifikācija vienmēr ir jāiespējo, ja vien jums nav ļoti, ļoti pamatota iemesla to atspējot to. Tādējādi jums vajadzētu izmantot šo rīku tikai, lai lietotu lietojumprogrammu atjauninājumus, ko izveidojat pats un kad ir vainu mīkstinoši apstākļi, kas liek jums to darīt, nevis vienkārši vispirms atinstalēt veco lietojumprogrammu.

Esiet drošs un izmantojiet to saprātīgi.