Получение имени пакета и подписей из uid / pid приложения в нативном клиенте - PullRequest
6 голосов
/ 16 ноября 2011

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

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

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

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

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

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

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

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

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

1 Ответ

5 голосов
/ 17 ноября 2011

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

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

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

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

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

...