APK をインストールする前に Android アプリの権限を確認する方法

A smartphone showing a list of app permissions with a magnifying glass

Google Play ストアからアプリをインストールすると、Android ではアプリがアクセスできる内容の簡略化された概要が表示されます。 Play 以外のソースから APK をサイドロードすると、自分でマニフェストを読まない限り、そのようなセーフティ ネットはありません。 「壁紙アプリにはSMSとマイクへのアクセスが本当に必要なのでしょうか?」 は、まさにこのガイドが答えるのに役立つ種類の質問です。

以下は、私たちのチームが不慣れな APK を優先順位付けするときに使用するのと同じワークフローです。APK を開いて、uses-permission エントリを読み取り、保護レベルをデコードし、アプリに必要なもの 言う とそのカテゴリに通常必要なものを比較します。当社の オンラインAPK情報ツール はバイナリ XML デコードを行うため、プロセス全体にかかる時間は約 10 秒です。

読書時間: ~9分。 必要なツール: ブラウザ。オプションで apksigner そして aapt2 ターミナルから同じチェックを実行したい場合は、Android SDK から実行してください。 最後にできること: APK の完全な権限リストを読み、ほぼ常に問題を示す 4 つまたは 5 つの「影響の大きい」リクエストを特定し、インストール後ではなくインストール前にインストールするかどうかを決定します。

なぜわざわざ権限を監査する必要があるのでしょうか?

悪意のある開発者は、人気の無料アプリを取得して変更し、サードパーティのサイトに再リリースします。アプリの見た目や機能は正常ですが、その隠されたコードが連絡先リストをコピーしたり、バックグラウンドオーディオを録音したりしている可能性があります。権限 プレインストール を表示すると、「権限のクリープ」の危険信号を見つけることができます。

APK ファイルを監査する方法 (オンライン)

私たちの APK情報ツール は、ファイルのマニフェスト全体をブラウザ内で読み取ります。ファイルがサーバーにアップロードされることはなく、コードも実行されません。使用方法は次のとおりです。

プロセス:

  1. APK情報ページ に移動します。
  2. .apk ファイルを選択します。
  3. 分析が完了するまで待ちます (通常は 5 秒)。
  4. 権限セクション まで下にスクロールします。
  5. READ_SMS、PROCESS_OUTGOING_CALLS、ACCESS_FINE_LOCATION などの高リスクフラグを探してください。

許可の危険信号リスト

電卓 または 懐中電灯 アプリが READ_CONTACTS または RECORD_AUDIO を要求した場合は、すぐにファイルを削除してください。これらのアプリがそのデータを保持する正当な理由はまったくありません。

Android のアクセス許可レベルを理解する

すべての権限が同じように作成されるわけではありません。 Android では、これらを 3 つのレベルに分類しています。

手動による方法 (ZIP ビューアを使用)

ある程度の技術スキルがある場合は、自分で権限を監査できます。

  1. app.apk の名前を app.zip に変更して開きます。
  2. AndroidManifest.xml を見つけます。 (注: これはバイナリ形式なので、テキスト エディタでは意味不明に見えます)。
  3. AXMLプリンター などのツールを使用して、読み取り可能なテキストに変換します。
  4. <uses-permission>で始まるタグを検索します。

推奨事項: これを瞬時にデコードする オンラインツール を使用する方がはるかに高速です。

今すぐアプリを監査する

アプリが何を要求しているのかを正確に把握しましょう。秘密もリスクもありません。

APKの権限を確認する

AndroidManifest.xml に実際に保存されるもの

マニフェストは、アプリが宣言するすべての権限、コンポーネント、機能の信頼できる情報源です。 APK 内のファイルは、ソース コードに見られるプレーン テキストではなく、バイナリXML 形式であるため、通常のテキスト エディターでは読み取ることができません。 APK 情報ツールはバイナリ XML をデコードし、関連するタグを表示します。最も重要なものは次のとおりです。

権限保護レベル: チートシート

Android では、すべての権限に「保護レベル」が割り当てられます。リクエストがどのレベルに属しているかを知ることで、OS がそのリクエストをどの程度真剣に扱うかがわかります。

保護レベル ユーザーエクスペリエンス 例
普通 インストール時にサイレントに付与されます。プロンプトはありません。 インターネット、バイブレーション、ACCESS_NETWORK_STATE、WAKE_LOCK
危険な 機能を初めて使用するときの実行時プロンプト。設定で取り消し可能。 カメラ、RECORD_AUDIO、READ_CONTACTS、ACCESS_FINE_LOCATION
サイン 付与するアプリまたは OS と同じ証明書で署名されたアプリにのみ付与されます。 BIND_VPN_SERVICE、INSTALL_PACKAGES (システムのみ)
署名|特権付き システム イメージの priv-app ディレクトリにプレインストールされたアプリでのみ使用できます。 ユーザーの管理、ログの読み取り
アプリ/役割 有効にするには別の設定フローが必要です。 SYSTEM_ALERT_WINDOW、BIND_ACCESSIBILITY_SERVICE、MANAGE_EXTERNAL_STORAGE

「隠された」アクセス許可の実際の意味

よくある誤解は、一部の権限は秘密であるということです。アプリが使用するすべての権限は AndroidManifest.xml で宣言する必要があり、OS はそこにリストされていない権限の付与を拒否します。通常、「隠された」という言葉が意味するものは、次の 2 つのうちのいずれかを指します。

どちらにせよ、答えは同じです。マニフェストを読み、Play ストアの説明だけを信用しないでください。

実用的な例: 実際の APK の監査

ダウンロード フォルダーに example.apk があるとします。正確なワークフローは次のとおりです。

  1. ブラウザで APK情報ツール を開きます。
  2. APKをアップロードエリアにドロップします。処理はローカルで行われます。ファイルはデバイスから流出しません。
  3. 権限 セクションをお読みください。各エントリには、定数名 (android.permission.READ_CONTACTS と、それが許可する内容の平易な説明が表示されます)。
  4. リストをアプリのカテゴリと比較します。おおよそ次のことが予想されます:
    • カメラアプリ: CAMERA、RECORD_AUDIO (ビデオ用)、STORAGE/MEDIA 書き込み
    • メッセージング アプリ: INTERNET、READ_CONTACTS、SEND_SMS (SMS ベースの場合のみ)、RECORD_AUDIO (音声メモ用)、CAMERA (写真送信用)
    • ゲーム: INTERNET、場合によっては RECORD_AUDIO (ゲーム内ボイスチャット用)、課金関連の権限。他にはほとんど何もない
    • ユーティリティアプリ (calculator, flashlight, weather): INTERNET (for ads), ACCESS_NETWORK_STATE, possibly LOCATION (weather only).それ以上のものは疑わしい。
  5. リスト内のものがカテゴリに適合しない場合は、インストールしないでください。電卓に SMS アクセスが必要な理由はありません。

ファイルが APK、XAPK (内部ベース APK を読み取る)、APKS バンドル (各スプリットのマニフェストを読み取る) のいずれであっても、同じロジックが適用されます。

コマンドラインから実行する

ターミナル ルートを希望する場合、Android SDK には aapt2 が同梱されており、APK からプレーン XML でマニフェストをダンプします。

aapt2 dump badging example.apk | grep "uses-permission"

または、apksigner を使用して、署名証明書を同時に検証します。

apksigner verify --print-certs example.apk

ブラウザ ツールは、単一のファイルを検査するためだけに SDK をインストールしたくないユーザーに対しても同じことを行います。

よくある質問 (FAQ)

APK をインストールした後に権限を拒否できますか?

はい。 On Android 6.0 and higher, you can go to 設定 > アプリ > [アプリ名] > 権限 to toggle individual dangerous permissions on or off.

XAPK ファイルには異なる権限がありますか?

XAPK には 1 つ以上の APK が含まれます。内部の各 APK には独自のマニフェストがあります。私たちのツールはバンドル内の メインAPK を分析し、関連する権限を表示します。

すべてのアプリが「ネットワーク アクセス」を要求するのはなぜですか?

ほとんどすべてのアプリは、分析、バグ報告、広告のためにインターネット アクセスを必要とします。これはよくあることですが、盗まれたデータがハッカーのサーバーに送信される方法でもあります。

「インストール」をタップする前にマニフェスト権限を検査する

目に見えないものを判断することはできません。サイドロードする前に APK の権限を表示する に 10 秒を費やすことは、アプリが到達できる範囲を知ることと、単にアプリが動作することを期待することの違いです。最初にリストを読み、次にインストールします。

Mst Shaefale による設計と文書化 リード開発者兼 Android パッケージ アーキテクト • Android 12 ~ 15 で検証済み

Mst Shaefale は、クライアント側の XAPK/APKS マージ、バイナリ マニフェスト パーサー、APK v1+v2 署名ツールを xapktoapk.com で保守しています。古いコマンドや OS の変更を見つけましたか?編集メモを送信します。