Preverjanje podpisa aplikacije: kako deluje, kako ga onemogočiti z Xposed in zakaj ne bi smeli

Preverjanje podpisa aplikacije za Android (APK) lahko preprosto onemogočite z Xposed Framework, vendar tega v veliki večini primerov ne smete storiti.

Če ste kdaj poskušali spremeniti in znova namestiti sistemsko aplikacijo, ste verjetno v takšni ali drugačni obliki naleteli na preverjanje podpisa aplikacije. Ali ste pred nadaljevanjem odstranili izvirno aplikacijo ali pa ste spremenjenemu APK-ju dali drugo ime paketa, da bi ga lahko namestili, ne da bi najprej odstranili staro aplikacijo. In v obeh primerih ste morali tudi sami znova podpisati aplikacijo, da bi jo sploh lahko namestili.

Vsem tem vedenjem se lahko izognete tako, da začasno onemogočite preverjanje podpisa aplikacij. Toda preden se lotimo metaforičnega mesa in krompirja tega članka in vam povemo, kako to storiti, ključnega pomena je, da se malo pogovorimo o preverjanju podpisov aplikacij, kaj počnejo in zakaj vi naj nikoli jih odstranite v veliki večini primerov.

Osnove preverjanja podpisa Android

Android OS privzeto zahteva

vse aplikacije, ki jih je treba podpisati, da se lahko namestijo. V zelo osnovnih besedah ​​to pomeni, da se podpis aplikacije uporablja za identifikacijo avtorja aplikacije (tj. preverite njegovo legitimnost), kot tudi vzpostavite zaupniška razmerja med aplikacijami z istim podpisom. Pri prvem ste zagotovljeni (v razumni meri), da aplikacija z veljavnim podpisom prihaja od pričakovanih razvijalcev. In prek slednjega lahko aplikacije, podpisane z istim zasebnim ključem, delujejo v istem procesu in delijo zasebne podatke. Nato, ko namestite posodobitev aplikacije, OS Android preveri ta podpis in se prepriča, da: A) APK ni bil spremenjen v času od podpisa in B) se potrdilo aplikacije ujema s potrdilom trenutno nameščene različica.

Torej, kako vse to vpliva name v resničnem svetu? Res je preprosto. Če pridobite APK zunaj trgovine Google Play in ga poskušate namestiti kot posodobitev trenutno nameščene aplikacije (preberite: z istim imenom paketa), bo operacijski sistem poskušal preveriti potrdilo aplikacije, da se prepriča, ali izvira iz iste začetnice razvijalci. Če se potrdilo ujema, se bo namestitev aplikacije nadaljevala po načrtih, vaša aplikacija bo obdržala obstoječe podatke in vse je pokončano. Če podpis ni veljaven (kar pomeni, da je bil APK spremenjen) ali če se potrdilo ne ujema s potrdilom izvirne aplikacije, namestitev ne bo uspela. In kot je bilo že omenjeno, se bo potrdilo aplikacije ujemalo samo, če je podpisano z istim zasebnim ključem, ki je bil uporabljen za podpis prejšnje različice. Z drugimi besedami, aplikacijo lahko namestite le, če ima veljaven podpis, ki se ujema z APK-ji vsebine in posodobitev lahko namestite samo, če se tudi njeno potrdilo ujema s tistim v prejšnji različici aplikacije.

[Za nameček v tem sicer natrpanem članku je en zelo javen primer, v katerem je bil ključ za podpisovanje zasebne aplikacije izgubljen ali ogrožen. Seveda mislim na Googlovo aplikacijo Authenticator, ki je prejela posodobitev, ki je spremenila ime paketa iz com.google.android.apps.authenticator do com.google.android.apps.authenticator2 v posodobitvi pred približno dvema letoma. Zaradi te spremembe je bilo mogoče vse nadaljnje posodobitve aplikacije Authenticator izdati samo pod novim imenom paketa – z novim podpisom, ki ga ustvari novi zasebni ključ za podpisovanje.]

Zakaj morda želite (začasno) onemogočiti preverjanje podpisa

Zdaj pa si poglejmo možni scenarij, v katerem bomo morda želeli začasno onemogočiti preverjanje podpisa aplikacije. Kot je bilo omenjeno na začetku tega članka, lahko preverjanje podpisa povzroči nekaj glavobola pri spreminjanju obstoječih sistemskih aplikacij. Če namestite spremenjeno različico sistemske aplikacije, aplikacije ne boste mogli podpisati z veljavnim in ujemajočim se potrdilom. V takšnih primerih bi običajno najprej želeli odstraniti obstoječo aplikacijo in nato namestiti spremenjeno različico kot običajno. Lahko tudi onemogočite preverjanje podpisa, vendar je bolje (in varneje), če pustite preverjanje podpisa omogočeno in preprosto odstranite staro različico, da se lahko namesti nova. To pa lahko postane težava, če ima aplikacija, ki jo poskušate zamenjati, podatke, ki jih raje ne bi izgubili. Zagotovo obstajajo načini, kako ročno ohraniti podatke s korenskim dostopom in jih presaditi v novo različico aplikacijo, lahko pa uporabniki tudi preprosto začasno onemogočijo preverjanje podpisa in nato nadaljujejo s preverjanji pozneje. Druga možnost je, kot je poudaril višji član XDA mcbyte_it v komentarjih, to je lahko koristno tudi pri razvoju aplikacij.

Kako to storiti

Do zdaj je bila onemogočanje preverjanja podpisa grozljiva rešitev za skoraj vse težave. To je zato, ker s tem v bistvu zavržete vgrajeno zaščito Androida, ki zagotavlja da vaše aplikacije niso bile spremenjene in da njihove posodobitve izvirajo iz izvirnika razvijalci. Zdaj pa lahko zahvaljujoč čarobnosti Xposed Framework začasno onemogočite preverjanje podpisa in ga znova omogočite, ko končate z namestitvijo spremenjene aplikacije. En tak modul Xposed ki zmore natanko to, je nedavno izdal starejši član XDA pyler, in deluje po načrtih za vse naprave, ki lahko poganjajo Xposed. Na ta način, ko želite namestiti spremenjeno posodobitev aplikacije, ki ni pravilno podpisana, lahko preprosto omogočite modul, znova zaženite, namestite spremenjeno posodobitev aplikacije, onemogočite modul, znova zaženite in bodite veseli način.

Zdaj, ko veste, kako začasno onemogočiti preverjanje podpisa, je pomembno, da ponovite, kako pomembno preverjanje podpisa mora biti omogočeno ves čas, razen če imate zelo, zelo dober razlog, da onemogočite to. Tako orodje bi morali zares uporabljati samo za uporabo posodobitev aplikacij, ki jih ustvarite sami in kdaj obstajajo olajševalne okoliščine, ki zahtevajo, da to storite namesto, da najprej preprosto odstranite staro aplikacijo.

Bodite varni in to uporabljajte preudarno.