6

これは Android プラットフォームでの最初のプロジェクトであり、この環境にはまだ慣れていません。

[アプリのユーザー ID とアプリの実行中のインスタンスの pid] からアプリケーション パッケージ名とその署名を取得できるネイティブ アプリケーションを作成する必要があります。

Android アプリのフレームワークをざっと調べたところ、PackageManger にはパッケージ署名を取得する機能があることがわかりました。「..getPackageManager().getPackageInfo(パッケージ名, GET_SIGNATURES)..」</p>

しかし、これは Java アプリケーションでパッケージ名から署名を取得できる可能性を示しています。前述したように、入力パラメーターはアプリケーションのユーザー ID / 実行中のインスタンス プロセス ID のみです。また、Javaアプリケーションではなくネイティブクライアントが必要です。

私の質問は次のように分けることができます。

  1. ネイティブ プログラムで実行中のアプリケーションの uid と pid からパッケージ名を取得する方法はありますか? ネイティブ クライアントが不可能な場合は、Java を使用したメソッドも歓迎します。

  2. パッケージ名から署名を取得する方法はありますか? 私が言ったように、私はそれのためのJavaソリューションを見つけました。

  3. ネイティブ クライアントが Binder サービスを使用することは可能ですか? この方法は私の問題に役立ちますか? もしそうなら、どのように?

前もって感謝します!

4

1 に答える 1

5

A1:アプリケーション ディレクトリでパッケージ名をスキャンし、関連付けられたユーザー ID をネイティブ コードで照合することは可能だと思います。Java では、getPackageForUid()を使用できます。

A2:これをネイティブで行うものは見たことがありません。実際、root 化されていない電話では、任意.apkのファイルにアクセスすることはできないはずです。

A3:「おそらくない」と「おそらくない」と: 方法がわかりません。リモート サービスにバインドしても、サービスの認証情報は提供されません。署名されたコンテンツにアクセスせずに署名を検証する方法、つまり.apk.

編集:

ここに記載されているpmツールが役立つ場合があります。

于 2011-11-17T18:04:11.467 に答える