如何在安裝 APK 之前查看 Android 應用程式權限
當您從 Google Play 商店安裝應用程式時,Android 會顯示該應用程式可以存取的內容的簡化摘要。從非 Play 來源旁載入 APK,除非您自己閱讀清單,否則您沒有這樣的安全網。 “壁紙應用程式真的需要簡訊和麥克風存取嗎?” 正是本指南將幫助您回答的問題。
接下來是我們團隊在分類不熟悉的 APK 時使用的相同工作流程:打開它,讀取 uses-permission 條目,解碼保護級別,並將應用程式 說 所需的內容與其類別通常需要的內容進行比較。我們的 線上 APK 資訊工具 為您進行二進位 XML 解碼,因此整個過程大約需要 10 秒。
為什麼要費心審核權限?
惡意開發人員獲取流行的免費應用程序,對其進行更改,然後在第三方網站上重新發布它們。雖然該應用程式的外觀和功能可能正常,但其隱藏代碼可能會複製您的聯絡人清單或錄製背景音訊。透過查看權限 預先安裝,您可以發現這些「權限蠕變」的危險訊號。
如何審核任何 APK 檔案(線上)
我們的 APK資訊工具 完全在您的瀏覽器中讀取您的檔案清單;該檔案永遠不會上傳到伺服器,也不會執行任何程式碼。使用方法如下:
過程:
- 請前往並使用我們的 APK資訊頁面。
- 選擇您的 .apk 檔案。
- 等待分析完成(通常 5 秒)。
- 向下捲動到 權限部分。
- 尋找高風險標誌,例如:READ_SMS、PROCESS_OUTGOING_CALLS 或 ACCESS_FINE_LOCATION。
權限危險訊號列表
如果 計算機 或 手電筒 應用程式要求 READ_CONTACTS 或 RECORD_AUDIO,請立即刪除該檔案。這些應用程式擁有該資料的合法理由為零。
了解 Android 權限級別
並非所有權限都是一樣的。 Android 將它們分為三個級別:
- 普通的: 不會直接威脅隱私的低風險權限(例如 SET_ALARM)。 Android 會自動授予這些權限。
- 危險的: 高風險權限(聯絡人、位置、相機)。這些 必須 將在應用程式運行時由您確認。
- 簽名/系統: 極高風險。這些僅適用於由設備製造商或作業系統本身簽署的應用程式。
手動方法(使用 ZIP 檢視器)
如果您有一定的技術能力,您可以自行審核權限:
- 將 app.apk 重新命名為 app.zip 並開啟。
- 找到AndroidManifest.xml。 (注意:它是二進位格式,在文字編輯器中看起來像亂碼)。
- 使用 XML印表機 等工具將其轉換為可讀文字。
- 搜尋以 <uses-permission> 開頭的標籤。
建議:使用我們的 線上工具 會更快地為您立即解碼。
AndroidManifest.xml 中實際儲存的內容
清單是應用程式聲明的每個權限、元件和功能的真實來源。在 APK 中,檔案採用 二進位XML 形式,而不是您在原始程式碼中看到的純文本,因此無法使用普通文字編輯器讀取。我們的 APK 資訊工具可解碼二進位 XML 並顯示相關標籤。最重要的是:
- <uses-permission android:name="..."/>:應用程式可能請求的每個權限。 滿的 清單位於此處,包括應用程式在運行時可能永遠不會實際使用的清單。
- <uses-permission-sdk-23 ... />:相同,但僅當應用程式在 Android 6 或更高版本上運行時才請求。較舊的設備會在沒有提示的情況下默默地允許。
- <uses-feature android:name="..." android:required="true|false"/>:應用程式使用的硬體功能(相機、GPS、NFC)。當標記為 必需的 時,Play 商店會向缺乏該功能的裝置隱藏該應用程式。
- <application android:debuggable="true">:發布的 APK 中存在巨大的危險訊號。可偵錯應用程式向具有 ADB 存取權的任何人公開其記憶體和進程狀態。拒絕。
- <activity android:exported="true"> 關於敏感活動:讓其他應用程式啟動該畫面。對於隱私應用程式來說,這通常意味著編碼很草率。
權限保護等級:備忘單
Android 為每個權限指派一個「保護等級」。了解請求屬於哪個層級可以告訴您作業系統將如何認真地對待它。
| 防護等級 | 使用者體驗 | 範例 |
|---|---|---|
| 普通的 | 在安裝時以靜默方式授予。沒有提示。 | 網路、振動、存取網路狀態、喚醒鎖定 |
| 危險的 | 第一次使用該功能時會出現執行時間提示。可在設定中撤銷。 | 攝影機、錄音音訊、讀取聯絡人、存取精細位置 |
| 簽名 | 僅授予使用與授予應用程式或作業系統相同的憑證簽署的應用程式。 | BIND_VPN_SERVICE、INSTALL_PACKAGES(僅限系統) |
| 簽名|特權 | 僅適用於系統映像的 priv-app 目錄中預先安裝的應用程式。 | 管理用戶、讀取日誌 |
| 應用程式/角色 | 需要單獨的設定流程才能啟用。 | SYSTEM_ALERT_WINDOW、BIND_ACCESSIBILITY_SERVICE、MANAGE_EXTERNAL_STORAGE |
「隱藏」權限的實際意義是什麼
一個常見的誤解是某些權限是秘密的。它們不是:應用程式可能使用的每個權限都必須在 AndroidManifest.xml 中聲明,並且作業系統拒絕授予此處未列出的任何權限。人們通常所說的「隱藏」是指以下兩件事之一:
- 普通等級的權限是靜默的。 它們在安裝時獲得授權,無需任何使用者互動。 Play 商店摘要甚至沒有顯示其中一些。它們的“隱藏”是指“容易被忽視”,而不是“未公開”。
- 應用程式定義的自訂權限。 應用程式可以聲明自己的 <permission> 標籤,並在內部元件上要求它們。這些存在用於應用程式間通信,本身並不是隱私問題,但如果流行的應用程式聲明具有錯誤保護等級的自訂權限,然後另一個應用程式將其用作後門,則它們可能會被濫用。
無論哪種方式,答案都是一樣的:閱讀清單,不要相信 Play 商店本身的描述。
工作範例:審核真實的 APK
假設您的下載資料夾中有 example.apk。這是確切的工作流程:
- 在瀏覽器中開啟 APK資訊工具。
- 將 APK 拖放到上傳區域。處理發生在本機;該檔案不會離開您的裝置。
- 閱讀 權限 部分。每個條目都顯示常數名稱 (android.permission.READ_CONTACTS 及其允許的簡單語言描述)。
- 將清單與應用程式的類別進行比較。粗略地,預計:
- 相機應用程式: CAMERA、RECORD_AUDIO(用於視訊)、STORAGE/MEDIA 寫入
- 訊息應用程式: INTERNET、READ_CONTACTS、SEND_SMS(僅基於簡訊)、RECORD_AUDIO(用於語音註釋)、CAMERA(用於發送照片)
- 遊戲: INTERNET,有時RECORD_AUDIO(用於遊戲內語音聊天),計費相關權限;很少有其他事情
- 實用應用程式(計算機、手電筒、天氣):INTERNET(用於廣告)、ACCESS_NETWORK_STATE,可能是 LOCATION(僅限天氣)。除此之外的任何事情都是可疑的。
- 如果清單中的任何內容不符合該類別,請不要安裝。計算器沒有充分的理由需要簡訊訪問。
無論檔案是 APK、XAPK(我們在其中讀取內部基礎 APK)還是 APKS 捆綁包(在其中我們讀取每個拆分的清單),都適用相同的邏輯。
從命令列執行此操作
如果您喜歡終端路線,Android SDK 附帶 aapt2,它以純 XML 格式轉儲來自任何 APK 的清單:
aapt2 dump badging example.apk | grep "uses-permission"
或同時使用apksigner來驗證簽章憑證:
apksigner verify --print-certs example.apk
對於那些不想安裝 SDK 只是為了檢查單一檔案的用戶,瀏覽器工具可以執行相同的操作。
常見問題 (FAQ)
安裝 APK 後可以拒絕權限嗎?
是的。在 Android 6.0 及更高版本上,您可以前往 設定 > 應用程式 > [應用程式名稱] > 權限 開啟或關閉各個危險權限。
XAPK 檔案是否有不同的權限?
一個 XAPK 包含一個或多個 APK。裡面的每個 APK 都有自己的清單。我們的工具將分析捆綁包中的 主要APK 以向您顯示相關權限。
為什麼每個應用程式都要求「網路存取」?
幾乎所有應用程式都需要存取互聯網才能進行分析、錯誤報告或廣告。雖然這很常見,但這也是將被盜資料發送到駭客伺服器的方式。
在點擊安裝之前檢查清單權限
你無法判斷你看不到的東西。在旁加載之前花十秒 查看APK的權限 是了解應用程式可以達到的目標和只是希望它表現出來的差異。首先閱讀列表,然後安裝。