Получаване на име на пакет и подписи от 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