Ви можете легко вимкнути перевірку підпису додатка Android (APK) за допомогою Xposed Framework, але у переважній більшості випадків цього робити не варто.
Якщо ви коли-небудь намагалися змінити та перевстановити системну програму, ви, ймовірно, стикалися з перевіркою підпису програми в тій чи іншій формі. Або ви видалили оригінальну програму, перш ніж продовжити, або дали зміненому файлу .apk іншу назву пакета, щоб змусити її встановити без попереднього видалення старої програми. І в будь-якому випадку вам також довелося самостійно повторно підписати програму, щоб її встановити.
Ви можете обійти всі ці дії, тимчасово вимкнувши перевірку підпису програми. Але перш ніж ми перейдемо до метафоричного м’яса та картоплі цієї статті та розповімо вам, як це зробити, дуже важливо, щоб ми трохи поговорили про перевірку підпису додатків, що вони роблять і чому ви повинен ніколи видалити їх у переважній більшості випадків.
Основи перевірки підпису Android
За замовчуванням ОС Android вимагає все програми, які потрібно підписати для встановлення. У дуже простих термінах це означає, що підпис програми використовується для ідентифікації автора програми (
тобто перевіряти його легітимність), а також встановлювати довірчі відносини між програмами з однаковим підписом. З першим ви впевнені (до розумної міри), що програма з дійсним підписом надходить від очікуваних розробників. І завдяки останньому програми, підписані тим самим приватним ключем, можуть працювати в одному процесі та обмінюватися особистими даними. Тоді, коли ви встановлюєте оновлення програми, ОС Android перевіряє цей підпис, щоб переконатися, що: A) APK не було підроблено протягом часу з моменту його підписання; B) сертифікат програми збігається з сертифікатом поточної інсталяції версія.Отже, як усе це впливає на мене в реальному світі? Це просто, насправді. Якщо ви отримуєте файл .apk із-за меж магазину Google Play і намагаєтеся встановити його як оновлення поточної програми (прочитайте: те саме ім’я пакета), ОС спробує перевірити сертифікат програми, щоб переконатися, що він надійшов з того самого початкового імені розробників. Якщо сертифікат збігається, інсталяція програми відбуватиметься за планом, ваша програма збереже наявні дані, і все готово. Якщо підпис недійсний (що вказує на те, що APK було підроблено) або якщо сертифікат не збігається з сертифікатом оригінальної програми, встановлення не вдасться. І, як було сказано раніше, сертифікат програми збігатиметься, лише якщо він підписаний тим самим закритим ключем, який використовувався для підпису попередньої версії. Іншими словами, ви можете встановити програму, лише якщо вона має дійсний підпис, який відповідає файлу APK вміст, і ви можете інсталювати оновлення, лише якщо його сертифікат також відповідає сертифікату попередньої версії програми.
[Щодо гумору в цій, інакше, щільній статті, є один дуже публічний приклад, коли ключ підпису приватної програми було втрачено або зламано. Звичайно, я маю на увазі власну програму Google Authenticator, яка отримала оновлення, яке змінило назву пакета з com.google.android.apps.authenticator до com.google.android.apps.authenticator2 в оновленні близько двох років тому. Через цю зміну всі наступні оновлення програми Authenticator можна було випускати лише під новою назвою пакета — із новим підписом, згенерованим новим закритим ключем підпису.]
Чому ви можете (тимчасово) вимкнути перевірку підпису
Тепер давайте розглянемо можливий сценарій, у якому ми можемо забажати тимчасово вимкнути перевірку підпису програми. Як згадувалося на початку цієї статті, під час модифікації існуючих системних програм перевірка підпису може бути головним болем. Якщо ви інсталюєте модифіковану версію системної програми, ви не зможете підписати програму дійсним і відповідним сертифікатом. У подібних випадках зазвичай потрібно спочатку видалити наявну програму, а потім установити змінену версію як зазвичай. Ви також можете вимкнути перевірку підпису, але краще (і безпечніше) залишити перевірку підпису ввімкненою та просто видалити стару версію, щоб можна було встановити нову. Однак це може стати певною проблемою, якщо програма, яку ви намагаєтеся замінити, містить дані, які ви не хочете втратити. Звичайно, існують способи зберегти дані вручну за допомогою кореневого доступу та перенести їх до нової версії але користувачі також можуть забажати просто тимчасово вимкнути перевірку підпису, а потім відновити перевірку згодом. Альтернативно, як зазначив старший член XDA mcbyte_it у коментарях, це також може бути корисним у розробці програм.
Як це зробити
Дотепер відключення перевірки підпису було жахливим рішенням майже будь-якої проблеми. Це тому, що, роблячи це, ви фактично відкидаєте вбудований захист Android, який гарантує це що ваші програми не змінено та що їхні оновлення надходять з оригіналу розробників. Але тепер завдяки магії Xposed Framework ви можете тимчасово вимкнути перевірку підпису та знову ввімкнути її, коли завершите встановлення зміненої програми. Один із таких модулів Xposed який може робити саме це, нещодавно випустив XDA Senior Member pyler, і він працює за планом для всіх пристроїв, на яких можна запускати Xposed. Таким чином, якщо ви хочете інсталювати модифіковане оновлення програми, яке не було належним чином підписано, ви можете просто увімкніть модуль, перезавантажтеся, встановіть модифіковане оновлення програми, вимкніть модуль, перезавантажтеся та будьте щасливі спосіб.
Тепер, коли ви знаєте, як тимчасово вимкнути перевірку підпису, важливо повторити, наскільки важливо це означає залишати перевірку підпису ввімкненою завжди, якщо у вас немає дуже, дуже вагомих причин для вимкнення це. Таким чином, ви повинні справді використовувати такий інструмент лише для того, щоб застосовувати оновлення програм, які ви створюєте самостійно та коли є пом'якшувальні обставини, які вимагають від вас цього, а не просто видалення старої програми.
Будьте в безпеці та використовуйте це розумно.