Możesz łatwo wyłączyć weryfikację podpisu aplikacji na Androida (APK) za pomocą Xposed Framework, ale w zdecydowanej większości przypadków nie powinieneś tego robić.
Jeśli kiedykolwiek próbowałeś zmodyfikować i ponownie zainstalować aplikację systemową, prawdopodobnie zetknąłeś się ze sprawdzaniem podpisu aplikacji w tej czy innej formie. Albo usunąłeś oryginalną aplikację przed kontynuowaniem, albo nadałeś zmodyfikowanemu pakietowi APK inną nazwę pakietu, aby umożliwić jego instalację bez uprzedniego usuwania starej aplikacji. W obu przypadkach konieczne było także samodzielne ponowne podpisanie aplikacji, aby w ogóle mogła zostać zainstalowana.
Można obejść wszystkie te zachowania, tymczasowo wyłączając sprawdzanie podpisów aplikacji. Ale zanim przejdziemy do metaforycznego mięsa i ziemniaków tego artykułu i powiemy, jak to zrobić, bardzo ważne jest, abyśmy porozmawiali trochę o sprawdzaniu podpisów aplikacji, o tym, co robią i dlaczego ty powinien nigdy w zdecydowanej większości przypadków je usuń.
Podstawy weryfikacji podpisu Androida
Domyślnie wymaga tego system operacyjny Android Wszystko aplikacje, które należy podpisać w celu instalacji. W bardzo uproszczeniu oznacza to, że podpis aplikacji służy do identyfikacji autora aplikacji (tj. zweryfikować jego legalność), a także ustanowić relacje zaufania pomiędzy aplikacjami o tym samym podpisie. W przypadku tego pierwszego masz pewność (w rozsądnym stopniu), że aplikacja z ważnym podpisem pochodzi od oczekiwanych programistów. Dzięki temu drugiemu aplikacje podpisane tym samym kluczem prywatnym mogą działać w tym samym procesie i udostępniać prywatne dane. Następnie podczas instalowania aktualizacji aplikacji system operacyjny Android sprawdza ten podpis, aby upewnić się, że: A) plik APK nie został modyfikowane od czasu jej podpisania oraz B) certyfikat aplikacji jest zgodny z certyfikatem aktualnie zainstalowanej aplikacji wersja.
Jak to wszystko wpływa na mnie w prawdziwym świecie? To naprawdę proste. Jeśli uzyskasz plik APK spoza Sklepu Google Play i spróbujesz zainstalować go jako aktualizację aktualnie zainstalowanej aplikacji (czytaj: ta sama nazwa pakietu), system operacyjny podejmie próbę sprawdzenia certyfikatu aplikacji, aby upewnić się, że pochodzi on z tego samego inicjału deweloperzy. Jeśli certyfikat jest zgodny, instalacja aplikacji przebiegnie zgodnie z planem, aplikacja zachowa istniejące dane i wszystko będzie gotowe. Jeśli podpis jest nieważny (co wskazuje, że plik APK został zmodyfikowany) lub jeśli certyfikat nie jest zgodny z certyfikatem oryginalnej aplikacji, instalacja nie powiedzie się. Jak wspomniano wcześniej, certyfikat aplikacji będzie zgodny tylko wtedy, gdy zostanie podpisany tym samym kluczem prywatnym, którego użyto do podpisania poprzedniej wersji. Innymi słowy, możesz zainstalować aplikację tylko wtedy, gdy ma ona ważny podpis zgodny z plikiem APK zawartość i można zainstalować aktualizację tylko wtedy, gdy jej certyfikat również jest zgodny z certyfikatem znajdującym się we wcześniejszej wersji aplikacji.
[Na marginesie tego skądinąd gęstego artykułu, jest jeden bardzo publiczny przykład, w którym klucz podpisywania prywatnej aplikacji został utracony lub naruszony. Mam oczywiście na myśli aplikację Google Authenticator, która otrzymała aktualizację zmieniającą nazwę pakietu com.google.android.apps.authenticator Do com.google.android.apps.authenticator2 w aktualizacji około dwa lata temu. W związku z tą zmianą wszystkie kolejne aktualizacje aplikacji Authenticator mogły być wydawane wyłącznie pod nową nazwą pakietu – z nowym podpisem wygenerowanym przez nowy prywatny klucz podpisujący.]
Dlaczego możesz chcieć (tymczasowo) wyłączyć weryfikację podpisu
Przyjrzyjmy się teraz potencjalnemu scenariuszowi, w którym możemy chcieć tymczasowo wyłączyć weryfikację podpisu aplikacji. Jak wspomniano na początku tego artykułu, weryfikacja podpisu może przyprawić o ból głowy podczas modyfikowania istniejących aplikacji systemowych. Jeśli zainstalujesz zmodyfikowaną wersję aplikacji systemowej, nie będziesz mógł podpisać aplikacji ważnym i pasującym certyfikatem. W takich przypadkach zwykle należy najpierw usunąć istniejącą aplikację, a następnie normalnie zainstalować zmodyfikowaną wersję. Możesz także wyłączyć weryfikację podpisu, ale lepiej (i bezpieczniej) pozostawić włączoną weryfikację podpisu i po prostu usunąć starą wersję, aby można było zainstalować nową. Może to jednak stanowić pewien problem, jeśli aplikacja, którą próbujesz zastąpić, zawiera dane, których nie chcesz stracić. Z pewnością istnieją sposoby na ręczne zachowanie danych przy użyciu uprawnień roota i przeszczepienie ich do nowej wersji aplikacji, ale użytkownicy mogą również chcieć po prostu tymczasowo wyłączyć weryfikację podpisu, a następnie wznowić weryfikację następnie. Alternatywnie, jak zauważył starszy członek XDA mcbyte_it w komentarzach może to być również przydatne przy tworzeniu aplikacji.
Jak to zrobić
Do tej pory wyłączenie weryfikacji podpisu było okropnym rozwiązaniem praktycznie każdego problemu. Dzieje się tak, ponieważ w ten sposób zasadniczo wyrzucasz wbudowaną ochronę Androida, która zapewnia że Twoje aplikacje nie zostały naruszone i że ich aktualizacje pochodzą z oryginału deweloperzy. Ale teraz, dzięki magii Xposed Framework, możesz tymczasowo wyłączyć weryfikację podpisu i włączyć ją ponownie po zakończeniu instalacji zmodyfikowanej aplikacji. Jeden taki moduł Xposed który może to dokładnie zrobić, został niedawno opublikowany przez starszego członka XDA pyleri działa zgodnie z planem na wszystkich urządzeniach, na których można uruchomić Xposed. W ten sposób, jeśli chcesz zainstalować zmodyfikowaną aktualizację aplikacji, która nie została poprawnie podpisana, możesz to po prostu zrobić włącz moduł, uruchom ponownie komputer, zainstaluj zmodyfikowaną aktualizację aplikacji, wyłącz moduł, uruchom ponownie komputer i bądź wesoły sposób.
Teraz, gdy wiesz, jak tymczasowo wyłączyć weryfikację podpisu, ważne jest, aby powtórzyć, jak ważne jest to oznacza to pozostawienie włączonej weryfikacji podpisu przez cały czas, chyba że masz bardzo, bardzo dobry powód, aby ją wyłączyć To. W związku z tym powinieneś używać takiego narzędzia tylko w celu stosowania aktualizacji aplikacji, które sam tworzysz i kiedy istnieją wyjątkowe okoliczności, które wymagają tego, zamiast po prostu najpierw odinstalować starą aplikację.
Bądź bezpieczny i korzystaj z tego rozsądnie.