8

私が Android アプリの開発を引き継いだとします。上司から、Android マーケットでアプリを購入するユーザーにアプリを表示するために特定のアクセス許可が必要な理由を尋ねられたとします。

アプリが機能的にそれらのアクセス許可を必要とする理由を理解できるように、各アクセス許可をトリガーするコードを特定するために使用できるツールやトリックはありますか? 特に、次の権限に興味があります。

  • 電話 - 電話の状態と身元を読み取る

  • システム ツール - 実行中のアプリケーションを取得する - 現在および最近実行されているタスクに関する情報をアプリが取得できるようにします。悪意のあるアプリが他のアプリに関する個人情報を発見できるようにする可能性があります。

このアプリは GPS 追跡アプリであり、この許可が必要な理由は明らかではありません。

また、コードを直接分析して調べる方法がわからない場合でも、このアクセス許可が必要な理由についてのヒントを得ると役立ちます。

4

4 に答える 4

15

これらを追跡する方法は次のとおりです。

ステップ 1 - AndroidManifest.xml で宣言されているマニフェスト アクセス許可を見つける

基本的に<uses-permission />タグ内のすべての例:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

ステップ 2 - developer.android.com で、これらの権限を使用するクラスを検索します

READ_PHONE_STATE の場合を考えてみましょう。目標は、このパーミッションが必要なパッケージを見つけることです。開発ポータルで「READ_PHONE_STATE」を簡単に検索すると、検索が開始されます。ここでクラスを探しています。上位 5 つの検索結果には、次のクラスが表示されます。

  • テレフォニーマネージャー
  • PhoneStateListener

クラスをクリックして、パッケージ名を取得します。

  • android.telephony.TelephonyManager
  • android.telephony.PhoneStateListener

ステップ 3これらのパッケージをインポートするプロジェクト内のクラスを検索します

単純な grep を実行するか、Eclipse で Ctrl-H を実行し、ファイル検索 -> テキストを含む

ステップ 4インポートをコメントアウトし、何が壊れているかを確認します

これらは、許可が必要な理由の候補となる可能性があります。開発ポータルを見て、問題のメソッドを確認し、そのメソッドで実際にアクセス許可が必要であることを確認します。

最後に、UVW を提供する関数 XYZ を呼び出すため、READ_PHONE_STATE が必要であることを上司に伝えることができるはずです。

于 2012-10-25T03:47:49.700 に答える
2

アクセス許可を削除し、アプリが失敗する場所を確認します。答えは logcat 出力にあります。

ただし、その許可をトリガーするためにアプリで何をする必要があるかがわからない可能性があるため、これは理想的な解決策ではありません。

「電話のステータスとIDを読み取る」とは、アプリがデバイスIMEIまたは同様の識別情報を使用してデバイスを一意に識別し、アプリが登録されたデバイスでのみ実行されていることを意味すると思います. または、所有者を追跡するための一種の Cookie として使用される場合もあります。そのコードを探します。それを削除するのは間違った方法だからです。特定の Android デバイスを識別する必要がある場合は、Settings.Secure クラスの ANDROID_ID を使用します。 http://developer.android.com/reference/android/provider/Settings.Secure.html

「実行中のアプリケーションを取得する」に関しては、やや疑わしいと思います。GPS 追跡を実装する非常に一般的な方法は、独自のプロセスで別のサービスを起動することです。これにより、アプリがクラッシュした場合でも、サービスは継続して再接続できます。この場合、アプリが「実行中のアプリケーションの取得」を使用して、サービス プロセスを特定して強制終了している可能性があります。しかし、もしそうなら、それは不器用な方法です。

于 2012-10-24T23:48:55.133 に答える
0

上司への答えは、「アプリで使用する特定の API 機能/呼び出し/メソッドでは、 calee が特定の権限を保持する必要があるためです。これはセキュリティ上の理由によるものであり、それが Android の仕組みです」。前述の権限については、コードをチェックして、これらの権限が本当に必要かどうかを確認する必要があります。Read phone status and identityデバイスを一意に識別するためにアプリが IMEI などを取得しようとしていることを示している可能性があります。Retrieve running applications- GPS追跡アプリがこれを保持する理由はありません. しかし、これを使用するサードパーティのライブラリ/コードを使用している可能性があります。

于 2012-10-24T23:28:50.127 に答える