2011-11-16 8 views
6

To jest mój pierwszy projekt na platformie Android i nie czuję się jeszcze komfortowo w tym środowisku.Otrzymywanie nazwy pakietu i podpisów od uid/pid aplikacji w natywnym kliencie

Potrzebuję napisać natywną aplikację, która może wyprowadzić nazwę pakietu aplikacji i jego podpisy z [identyfikator użytkownika aplikacji i, pid uruchomionej instancji aplikacji].

Przeszedłem przez ramy aplikacji dla systemu Android i odkryłem, że program PackageManger ma możliwość uzyskania sygnatur pakietów. "..getPackageManager(). GetPackageInfo (packageName, GET_SIGNATURES) .."

, ale pokazuje to możliwość pobrania podpisów z nazwy pakietu w aplikacji Java. jak już powiedziałem, nasze parametry wejściowe są tylko identyfikatorem użytkownika/uruchomionym identyfikatorem procesu instancji aplikacji. a także potrzebuję natywnego klienta, a nie aplikacji java.

Moje pytanie można podzielić na następujące.

  1. Czy istnieje sposób na uzyskanie nazwy pakietu z uid i pid uruchomionej aplikacji w natywnym programie? Jeśli natywny klient nie jest możliwy, mile widziane są również metody z Javą.

  2. Czy istnieje sposób na uzyskanie podpisów z nazwy pakietu? Jak już powiedziałem, znalazłem rozwiązanie java dla tego.

  3. Czy klient natywny może korzystać z usługi Binder? Czy ta metoda pomoże mi rozwiązać problemy? Jeśli tak to jak?

z góry dzięki!

Odpowiedz

5

A1: Zakładam, że jest to możliwe do skanowania katalogów aplikacji dla nazwy pakietu, a następnie spróbuj dopasować skojarzony identyfikator użytkownika w natywnym kodzie. W Javie możesz po prostu użyć getPackageForUid().

A2: Nie widziałem nic rodzimego do zrobienia tego. Uzyskiwanie dostępu do dowolnych plików .apk powinno być w rzeczywistości niemożliwe w przypadku telefonu nierootowanego.

A3: "Prawdopodobnie nie" i "prawdopodobnie nie" i: Nie widzę jak. Wiązanie z usługą zdalną nie zapewnia informacji o uwierzytelnieniu usługi; nawet jeśli tak: Jak zweryfikować podpis bez dostępu do podpisanej treści, tj. .apk.

Edit:

Narzędzie pm, jak wspomniano here, może pomóc.

+0

W rzeczywistości pliki APK znajdujące się w '/ data/app' są czytelne na całym świecie. Był mechanizm ochrony przed kopiowaniem, który istniał jakiś czas wiele lat temu, już go nie ma, zobacz http://developer.android.com/google/play/licensing/overview.html – satur9nine