Проверка подписи приложения: как это работает, как отключить ее с помощью Xpose и почему не следует этого делать

Вы можете легко отключить проверку подписи приложений Android (APK) с помощью Xposed Framework, но в подавляющем большинстве случаев этого делать не следует.

Если вы когда-либо пытались модифицировать и переустанавливать системное приложение, вы наверняка сталкивались с проверкой подписи приложения в той или иной форме. Либо вы удалили исходное приложение, прежде чем продолжить, либо дали измененному APK другое имя пакета, чтобы его можно было установить без предварительного удаления старого приложения. И в любом случае вам также пришлось самостоятельно переподписать приложение, чтобы его можно было установить.

Вы можете обойти все эти проблемы, временно отключив проверку подписей приложений. Но прежде чем мы перейдем к метафорическому мясу и картофелю этой статьи и расскажем вам, как это сделать, очень важно поговорить немного о проверках подписи приложений, о том, что они делают и почему вы должен никогда удалить их в подавляющем большинстве случаев.

Основы проверки подписи Android

По умолчанию ОС Android требует

все приложения, которые необходимо подписать для установки. Проще говоря, это означает, что подпись приложения используется для идентификации автора приложения (то есть проверить его легитимность), а также установить доверительные отношения между приложениями с одинаковой подписью. В первом случае вы уверены (в разумной степени), что приложение с действительной подписью исходит от ожидаемых разработчиков. Благодаря последнему приложения, подписанные одним и тем же закрытым ключом, могут работать в одном процессе и совместно использовать личные данные. Затем при установке обновления приложения ОС Android проверяет эту подпись, чтобы убедиться, что: А) APK не был подделано с момента его подписания, и Б) сертификат приложения соответствует сертификату установленного в данный момент приложения. версия.

Так как же все это влияет на меня в реальном мире? Это просто, правда. Если вы получили APK-файл не из магазина Google Play и попытались установить его как обновление установленного в данный момент приложения (читайте: одно и то же имя пакета), ОС попытается проверить сертификат приложения, чтобы убедиться, что он получен из того же исходного кода. Разработчики. Если сертификат соответствует, установка приложения продолжится по плану, ваше приложение сохранит существующие данные, и все в порядке. Если подпись недействительна (что указывает на подделку APK) или если сертификат не соответствует сертификату исходного приложения, установка завершится неудачно. Как указывалось ранее, сертификат приложения будет совпадать только в том случае, если он подписан тем же закрытым ключом, который использовался для подписи предыдущей версии. Другими словами, вы можете установить приложение, только если оно имеет действительную подпись, соответствующую APK-файлу. содержимое, и вы можете установить обновление только в том случае, если его сертификат также соответствует сертификату, найденному в более ранней версии. приложения.

[В качестве юмористического отступления в этой, в остальном скучной статье, есть один очень общеизвестный пример, когда приватный ключ подписи приложения был утерян или скомпрометирован. Я, конечно, имею в виду собственное приложение Google Authenticator, которое получило обновление, изменившее имя пакета с com.google.android.apps.authenticator к com.google.android.apps.authenticator2 в обновлении около двух лет назад. Из-за этого изменения все последующие обновления приложения Authenticator можно было выпускать только под новым именем пакета — с новой подписью, созданной с помощью нового закрытого ключа подписи.]

Почему вы можете захотеть (временно) отключить проверку подписи

Теперь давайте рассмотрим потенциальный сценарий, в котором мы можем временно отключить проверку подписи приложения. Как упоминалось в начале этой статьи, проверка подписи может стать головной болью при изменении существующих системных приложений. Если вы установите модифицированную версию системного приложения, вы не сможете подписать приложение действительным и соответствующим сертификатом. В подобных случаях обычно требуется сначала удалить существующее приложение, а затем установить измененную версию как обычно. Вы также можете отключить проверку подписи, но лучше (и безопаснее) оставить проверку подписи включенной и просто удалить старую версию, чтобы можно было установить новую. Однако это может стать проблемой, если приложение, которое вы пытаетесь заменить, содержит данные, которые вы не хотите терять. Конечно, есть способы сохранить данные вручную, используя root-доступ, и перенести их в новую версию. приложение, но пользователи также могут захотеть просто временно отключить проверку подписи, а затем возобновить проверку. после. В качестве альтернативы, как указал старший член XDA. mcbyte_it в комментариях это тоже может быть полезно при разработке приложений.

Как это сделать

До сих пор отключение проверки подписи было ужасным решением практически любой проблемы. Это связано с тем, что при этом вы по сути отказываетесь от встроенной защиты Android, которая гарантирует что ваши приложения не были изменены и что их обновления взяты из оригинала Разработчики. Но теперь, благодаря волшебству Xposed Framework, вы можете временно отключить проверку подписи и снова включить ее после завершения установки модифицированного приложения. Один из таких модулей Xposed который может сделать именно это, было недавно выпущено старшим участником XDA пайлер, и он работает, как и планировалось, на всех устройствах, поддерживающих Xpose. Таким образом, если вы хотите установить измененное обновление приложения, которое не было должным образом подписано, вы можете просто включи модуль, перезагрузись, установи модифицированное обновление приложения, отключи модуль, перезагрузись и будь счастлив способ.

Теперь, когда вы знаете, как временно отключить проверку подписи, важно еще раз подчеркнуть, насколько важно это значит всегда оставлять проверку подписи включенной, если только у вас нет очень и очень веской причины отключить ее. это. Таким образом, вам следует использовать такой инструмент только для применения обновлений приложений, которые вы создаете самостоятельно и когда существуют смягчающие обстоятельства, которые требуют от вас сделать это, а не просто сначала удалить старое приложение.

Будьте осторожны и используйте это разумно.