Как узнать личность человека, подписавшего apk на устройстве Android?

Мне нужно посмотреть, кто подписал приложение, которое я установил на свое устройство. Это вообще возможно сделать на устройстве или на ПК?


person Alexei Tymchenko    schedule 01.12.2010    source источник
comment
Не в каждом приложении есть страница «О программе», верно? Кроме того, как разработчик приложения я могу написать на странице «О программе» все, что может не совпадать с информацией в сертификате, который я использовал для подписи приложения ...   -  person Alexei Tymchenko    schedule 01.12.2010
comment
На Android вы можете использовать PackageManager для перечисления всех приложений и получения сертификата подписи X509, см. [Ссылка] stackoverflow.com/a/16305427/ 2225646. В Google Play также есть бесплатное приложение: Indenile Signature.   -  person Yojimbo    schedule 27.02.2017


Ответы (2)


(при условии, что вы можете получить доступ к необработанному файлу apk - что обычно возможно, если вы знаете или делаете обоснованное предположение о его имени и местоположении, даже если вы не можете перечислить содержимое / data на не рутированном телефоне)

Вы можете открыть apk как zip-файл и отфильтровать текст ascii из двоичного содержимого META-INF / CERT.RSA

Или используя реальный инструмент,

jarsigner -verify -certs -verbose some_application.apk

Конечно, единственный способ проверить, что подписывающий является тем, кем они себя называют, - это получить что-то еще, подписанное с тем же ключом от этой стороны, с помощью прямых или проверенных средств и сравнить отпечатки ключей подписи - именно так Android сам проверяет, что приложение обновляется. и совместное использование идентификатора приложения осуществляется той же стороной, что и существующий APK-файл, на который они нацелены.

person Chris Stratton    schedule 01.12.2010
comment
Спасибо за подсказку! Может быть, вы тоже знаете, как достичь той же цели, используя только устройство? Моя личность может быть важна для конечных пользователей моего приложения, но они обычно слишком ленивы, чтобы выполнять манипуляции на ПК .... - person Alexei Tymchenko; 02.12.2010
comment
Я не удивлюсь, если jarsigner будет реализован в java, поэтому вы, вероятно, сможете перенести его на android. Однако первое предложение по извлечению текста ascii путем фильтрации непечатаемых материалов может быть проще. Но если это ваше приложение, в чем смысл? Если пользователь доверяет вашему коду для извлечения информации о подписывающей стороне, то они, вероятно, тоже будут доверять вашему экрану about. Также обратите внимание, что извлечение информации о подписывающей стороне не доказывает, что этот объект действительно подписал ее, вам нужно будет доказать, что использованный сертификат действительно принадлежит им. - person Chris Stratton; 03.12.2010
comment
Запуск jarsigner в apk, выпущенном Google (очевидно), дает (много) этих сообщений: X.509, CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US [certificate is valid from 22-08-08 01:13 to 08-01-36 00:13] [CertPath not validated: Path does not chain with any of the trust anchors]. Как мне получить сертификат Google, чтобы подтвердить, что они действительно были подписавшими. (Я думаю, что уместно добавить к этому ответу, но дайте мне знать, если вы хотите, чтобы я разместил отдельный вопрос.) - person mgd; 13.05.2015

Из получения сведений о сертификате из apk вы можете использовать следующую команду

openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs -text

person user2645905    schedule 02.08.2013