Как я могу проверить подлинность загруженного файла APK?

Последнее обновление Google Maps недоступно в моей стране, поэтому я загрузил версию Google google для Google Maps 5.4.0 apk. Я действительно нашел его, но теперь мне интересно, как я могу сказать, действительно ли это та же версия, что и на рынке.

Как я могу быть уверен, что он не был подделан? Приложения подписаны каким-либо образом? Есть ли способ проверки подписей?

55 голосов | спросил Nathan Fellman 14 Maypm11 2011, 17:57:39

4 ответа


66

Уклоняясь от обсуждения законности установки этого приложения на вашем телефоне, вопрос проверки - это тот, который я хотел понять на некоторое время, и вы побудили меня попытаться выяснить возможный способ проверяя, кто подписал apk.

Приложения Android подписываются обычным образом .jar-файлов (.apk - это просто специальный .jar, который является только специальным .zip), однако не может быть тривиальным для trace аутентичность сертификатов, если у вас есть что-то знакомое, с которым можно сравнить. Это в основном то, что делает сам телефон, - проверяет, что на самом деле есть что-то, что утверждает, что оно принадлежит той же самой партии, что и телефон на самом деле, - телефон не отказывается устанавливать вещи с неизвестными подписчиками, он может только (объект /очистить приложение данные) явных фальсификаций, когда что-то новое не соответствует чему-то старому, на которое оно претендует.

Вам понадобится jarsigner и keytool. Я считаю, что это происходит из JDK, который является предварительным условием для SDK android, а не самого SDK.

Сначала вы хотите проверить открытый ключ, содержащийся в .apk. Обычно это в META-INF /CERTS.RSA, но это может быть в другом файле - unzip -l скажет вам. Вы хотите узнать, что вы можете узнать об этом:

unzip -p suspect.apk META-INF/CERT.RSA | keytool -printcert

Это собирается сбрасывать много информации о том, кто, как подписывается, утверждает. Некоторые сертификаты, по-видимому, сами подписываются известными сторонами, но, не выясняя, как это отслеживать, я подозреваю, что вы могли бы сделать что-то вроде этого:

unzip -p suspect.apk META-INF/CERT.RSA | keytool -printcert | grep MD5
unzip -p knowngood.apk META-INF/CERT.RSA | keytool -printcert | grep MD5

Если у вас есть известный доверенный apk от того же автора, который использовал тот же сертификат. Я предполагаю, что сертификатов, имеющих ту же сумму MD5, достаточно.

Предполагая, что вы решили доверять сертификату, вы можете увидеть, было ли оно использовано для подписывания каждого из файлов внутри .apk

jarsigner -verbose -verify suspect.apk

(Если в архиве содержится более одного файла .RSA, вы должны добавить флаг -certs, чтобы сообщить вам, какие сертификаты были использованы для подписания каждого файла, поэтому вы можете быть уверены, что его сертификат вы подтвердили)

ответил Chris Stratton 15 Mayam11 2011, 06:46:18
3

Существует (сейчас) инструмент apksigner в build-tools, который делает то, что вы хотите. Из документов :

  

Убедитесь, что подписи APK должны быть подтверждены как действительные на всех платформах Android, поддерживаемых APK:

apksigner verify [options] app-name.apk
ответил kahbou 13 Jam1000000amFri, 13 Jan 2017 10:15:47 +030017 2017, 10:15:47
0

Чтобы сравнить сертификаты от подозрительного файла apk, может быть, одна идея - загрузить его версию в официальный Play Store на вашем телефоне, сделать резервную копию на вашем компьютере и перейти в каталог резервного копирования, выбрать соответствующий файл apk и выполнить те же проверки. Вы также можете просмотреть сертификаты Google, выполнив проверку приложения по умолчанию для устройства (например, любой com.google.android. * Apk)

ответил Nozalys 8 22016vEurope/Moscow11bEurope/MoscowTue, 08 Nov 2016 13:11:54 +0300 2016, 13:11:54
0

В дополнение к приведенным выше ответам вы можете извлечь APK с устройства со следующим приложением: https://play.google.com/? магазин /приложений /подробности ID = com.ext.ui & амп; гл = еп

Бест, Пол

ответил Spipau 30 PM000000120000004731 2017, 12:50:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132