Получение имени пакета и подписи из uid/pid приложения в родном клиенте

Это мой первый проект на платформе Android, и мне пока не комфортно в этой среде.

Мне нужно написать собственное приложение, которое может получить имя пакета приложения и его подписи из [идентификатора пользователя приложения и pid запущенного экземпляра приложения].

Я пробежался по фреймворку приложений для Android и обнаружил, что PackageManger может получать подписи пакетов. «..getPackageManager().getPackageInfo(packageName, GET_SIGNATURES)».

но это показывает возможность получения подписи из имени пакета в приложении Java. как я уже сказал, наши входные параметры — это только идентификатор пользователя/идентификатор запущенного экземпляра процесса приложения. а также мне нужен собственный клиент, а не java-приложение.

Мой вопрос можно разделить на следующие.

  1. Есть ли способ получить имя пакета из uid и pid запущенного приложения в собственной программе? Если собственный клиент невозможен, также приветствуются методы с Java.

  2. Есть ли способ получить подписи из имени пакета? Как я уже сказал, я нашел решение для Java.

  3. Возможно ли, чтобы собственный клиент использовал службу Binder? Поможет ли этот метод моим проблемам? если да, то как?

заранее спасибо!


person indi    schedule 16.11.2011    source источник


Ответы (1)


A1: я предполагаю, что можно сканировать каталоги приложений на наличие имени пакета, а затем попытаться сопоставить соответствующий идентификатор пользователя в собственном коде. В Java вы можете просто использовать getPackageForUid()< /а>.

A2: не видел ничего нативного для этого. Доступ к произвольным файлам .apk на самом деле должен быть невозможен на телефоне без рута.

A3: "Вероятно, нет" и "Вероятно, нет" и: Я не понимаю, как это сделать. Привязка к удаленной службе не предоставляет информацию об аутентификации службы; даже если бы это было так: как проверить подпись без доступа к подписанному содержимому, то есть .apk.

Редактировать:

Инструмент pm, как упоминалось здесь, может помочь.

person JimmyB    schedule 17.11.2011
comment
На самом деле файлы APK, расположенные в /data/app, доступны для чтения всем. Был механизм защиты от копирования, который существовал некоторое время назад, много лет назад, сейчас его нет, см. developer.android.com/google/play/licensing/overview.html - person satur9nine; 24.11.2015