Ево зашто не можете да учитавате ажурирања на Гоогле камеру и диктафон

click fraud protection

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

Када је Гоогле лансирао Пикел 5 у октобру, били смо узбуђени што смо се дочепали његових нових апликација. (Сам телефон је прилично кул, такође.) Са лансирањем Пикел-а 5 стигле су нове верзије Гоогле камеру и Гоогле Рецордер апликације које смо делили са заједницом. Међутим, када су многи корисници старијих Пикел уређаја покушали да учитају ажурирања, наишли су на грешку (приказано изнад). Бизарно, нису сви имали проблема са инсталирањем ажурирања. Неки су били у стању да их добро инсталирају, док су други морали да се ресетују на фабричка подешавања само да би могли да инсталирају нове верзије. Због наизглед насумичне природе овог проблема, многи су га приписали грешци. Сада смо прилично уверени да овај проблем не потиче од грешке, већ због Гоогле-ове употребе новог АПИ-ја у Андроид-у 11 за блокирање ажурирања са стране.

Ако покушате да учитате Гоогле камеру 8.0 или новију или Гоогле Рецордер 2.0 или новију верзију на Пикел уређај који користи Андроид 11, видећете поруку о грешци која каже да верификација није успела. Чак и ако покушате да учитате АПК помоћу команде љуске, нећете добити конкретнији разлог за неуспех инсталације. Повратни код инсталације који ћете добити је "

ИНСТАЛЛ_ФАИЛЕД_ВЕРИФИЦАТИОН_ФАИЛУРЕ“, што вам нажалост не говори зашто верификација не успева. Испитујући логцат, можемо сазнати тачно зашто верификација није успела:

AppIntegrityManagerServiceImpl: Integritycheckofcom.google.android.GoogleCameraresult: DENYdueto[Rule: (PACKAGE_NAME EQ com.google.android.GoogleCamera) AND (VERSION_CODE GTE 32045130) AND (APP_CERTIFICATE EQ F0FD6C5B410F25CB25C3B53346C8972FAE30F8EE7411DF910480AD6B2D60DB83) AND NOT (INSTALLER_NAME EQ com.android.vending), DENY]

Према овој поруци, провера интегритета инсталације Гоогле камере није успела јер се „ИНСТАЛЛЕР_НАМЕ“ не подудара са „цом.андроид.вендинг“, називом пакета за Гоогле Плаи продавницу. (Покушавао сам да инсталирам Гоогле камеру 8.0 користећи апликацију АПКМиррор Инсталлер, колико вреди.) Ова порука је додата у системски дневник од стране „АппИнтегритиМанагерСервицеИмпл“, што је део нове Андроид-ове функције „Апп Интегрити“. Према коду у АОСП-у, Апп Интегрити је дизајниран да обезбеди додатни слој провера на врху постојеће верификације АПК потписа менаџера пакета. Чини се да АПИ за интегритет апликације користи скуп Правила да одлучи да ли да дозволи или одбије инсталацију. Правила обезбеђује системска апликација — за коју верујемо да је Гоогле Плаи услуге — и јесте сачувана у датотеци.

Поред тога, интегритет апликације такође позива зове се други разред СоурцеСтампВерифиер ако је „жиг извора“ уграђен у метаподатке Манифеста. На пример, ево за шта верујемо да је „изворни печат“ из манифеста апликације Гоогле камера:

<meta-dataandroid: name="com.android.stamp.source"android: value="https://play.google.com/store"/>

Из онога што можемо закључити, изворни печат се користи за верификацију потписа инсталатера пакета. Тако, на пример, не можете преварити АппИнтегрити да дозволи инсталацију чак и ако лажирао Плаи продавницу као инсталатер.

Осим тога, нисмо успели да сазнамо тачно како Гоогле користи АппИнтегрити и сродне АПИ-је за блокирање ажурирања са стране за апликације Гоогле Цамера и Гоогле Рецордер. Брзи преглед АПК-а Гоогле Плаи услуга открива да користи ове АПИ-је, али је код превише замагљен да би заиста имао смисла у свему. Чак смо пронашли и директоријум у коме се чувају правила интегритета — /дата/систем/интегрити_рулес — али је био од мале користи јер садржи само серијализоване податке. Такође нисмо пронашли начин да онемогућимо верификацију интегритета (изгледа да то није тако једноставно као мењање подешавања), мада верујемо да је разлог зашто ресетовање на фабричка подешавања за неке функционише тај што Гоогле Плаи услуге немају прилику да иницијализују свој скуп правила да би блокирали инсталацију. Логцат порука и увођење ових нових АПИ-ја у Андроид 11 снажно сугеришу да је ово све по дизајну, а не грешка.

Гугл није јавно коментарисао употребу ових АПИ-ја (нити очекујемо од њих), а нису одговорили ни када су добили коментар. Међутим, имамо неколико теорија зашто блокирају ажурирања са стране. Прво, могли би да штите људе од инсталирања погрешне верзије апликације за свој уређај. Гоогле испоручује одређене верзије својих апликација на одређене Пикел уређаје. На пример, неколико верзија апликације Девице Персонализатион Сервицес може се наћи на мрежи. Иако се сви могу инсталирати на Пикел уређаје, у једном тренутку је то било могуће изгубите функцију титлова уживо на Пикел 4 тако што ћете преузети верзију направљену за старији Пикел уређај. Други разлог би могао бити да се „побољша следљивост апликација у односу на неовлашћену дистрибуцију“, како је објаснио Гоогле у класи СоурцеСтампВерифиер.

До сада је само неколико Гоогле-ових апликација које користе формат пакета апликација (као што су Гоогле камера и Гоогле рекордер) блокирају инсталације које нису у Плаи продавници, али не знамо да ли ће компанија проширити ово понашање на своје друге апликације када сви пређу на ААБ формат. Такође смо размотрили да ли прелазак на скупове апликација захтева примену Апп Интегрити, али смо открили да је Гоогле већ има решење за руковање када корисници покушају да инсталирају апликацију која нема све потребне поделе. Шта год да је случај, не мислимо да Гугл намерава да блокира сва бочна учитавања својих апликација, иако им ови алати то свакако омогућавају.

Хвала програмерима ввб2060, авиракп и Куинни899 на њиховој помоћи у овом чланку, и тхвала ПНФ софтверу што нам је дао лиценцу за коришћење ЈЕБ Децомпилер, алат за обрнути инжењеринг професионалног нивоа за Андроид апликације.