Последнее обновление Карт Google недоступно в моей стране, поэтому я скачал версию, найдя «Google Maps 5.4.0 apk». Я действительно нашел это, но теперь мне интересно, как я могу определить, действительно ли это та же версия, что и на рынке.
Как я могу быть уверен, что это не было подделано? Подписаны ли приложения каким-либо образом? Есть ли способ проверить подписи?
m.google.com/maps
предлагает ли она ссылку для скачивания или что-то в этом роде?Ответы:
В дополнение к дискуссии о легитимности установки этого приложения на ваш телефон, вопрос проверки является тем, который я хотел понять некоторое время, и вы предложили мне попытаться выяснить возможный способ проверки того, кто подписал апк.
Приложения Android подписываются обычным образом .jar-файлами (на самом деле .apk - это просто специальный .jar, который является просто специальным .zip), однако проследить подлинность сертификатов, если у вас есть что-то хорошее по сравнению с. Это в основном то, что делает сам телефон - проверяет, что то, что, как утверждают, принадлежит той же стороне, что и то, что уже есть на телефоне, - телефон не отказывается устанавливать вещи с неизвестными подписчиками, он может только (возражать против / очищать приложение данные о) очевидных подделках, когда что-то новое не соответствует старому, на которое оно претендует.
Вам понадобится jarsigner и keytool. Я считаю, что они исходят от JDK, который является предпосылкой для Android SDK, а не сам SDK.
Сначала вы хотите проверить открытый ключ, содержащийся в .apk. Обычно это в META-INF / CERTS.RSA, но это может быть в другом файле - unzip -l скажет вам. Вы хотите увидеть, что вы можете узнать об этом:
Это даст много информации о том, кем подписчик утверждает. Некоторые сертификаты, очевидно, сами подписаны известными сторонами, но, не зная, как это отследить, я подозреваю, что вы могли бы сделать что-то вроде этого:
Если у вас есть известный доверенный apk от того же автора, который использовал тот же сертификат. Я предполагаю, что сертификатов с одинаковой суммой MD5 достаточно.
Предполагая, что вы решили доверять сертификату, вы сможете увидеть, использовался ли он для подписи каждого из файлов в .apk.
(Если в архиве более одного файла .RSA, вы должны добавить флаг -certs, чтобы указать, какие сертификаты использовались для подписи каждого файла, чтобы вы могли быть уверены, что это сертификат, который вы проверяли)
источник
Существует (сейчас)
apksigner
инструмент,build-tools
который делает то, что вы хотите. Из документов :источник
Вы также можете попробовать загрузить APK в бесплатную программу проверки на вирусы VirusTotal.com . Он сгенерирует уникальный хеш для APK, и если другие уже загрузили его для тестирования (очень вероятно), у вас будет больше идеи о том, что APK действителен.
Служба также будет сканировать APK с помощью более 60 антивирусных сканеров и сообщит, считает ли он, что он имеет сигнатуры, аналогичные уже обнаруженным вирусам.
источник
Чтобы сравнить сертификаты из подозрительного apk-файла, возможно, одна из идей заключается в том, чтобы скачать его версию в официальном Play Store на вашем телефоне, сделать резервную копию на вашем компьютере и зайти в каталог резервных копий, выбрать соответствующий apk-файл и выполнить те же проверки. Вы также можете просмотреть сертификаты Google, выполнив проверку в приложении по умолчанию для устройства (как и любой com.google.android. * Apk).
источник
Правильный способ проверить файл APK - использовать
apksigner
.apksigner
является частью инструментов сборки Android, поэтому вы можете найти несколько установленных версий, по одной для каждой установленной версии инструментов сборки.Одним из примеров пути в Android SDK
apksigner
является:Выполните apksigner следующим образом:
Теперь вы проверили APK, но вы все еще не знаете, можете ли вы доверять человеку / организации, подписавшим APK-файл. Это потому, что на Android APK подписи используют по определению самозаверяющие сертификаты. Если вы можете доверять сертификату, это сложный вопрос. Единственный способ - проверить другие приложения, которые были подписаны с использованием того же сертификата.
Единственный способ, которым я знаю, - это использовать сервис сканирования PlayStore androidobservatory.org. Он имеет API для проверки того, какие приложения были подписаны тем же сертификатом с использованием дайджеста сертификата SHA-1:
Изменить: apkmirror.com также позволяет искать дайджест сертификата. Просто введите простой дайджест сертификата SHA-1 или SHA-256 (без двоеточий и пробелов) в поле поиска:
На этой странице вы можете увидеть все другие APK-файлы в Google Play Store, которые подписаны тем же сертификатом.
источник