瀏覽器端 APK 靜態分析技術
「APK 資訊檢視器」是一款在瀏覽器內運作的線上工具,專為在安裝 Android 應用程式套件(APK)之前,協助使用者檢查其內部宣告內容與中介資料而設計。本工具採用靜態分析技術,直接讀取並解析套件資訊,無須實際執行或安裝該應用程式,即可協助使用者驗證 APK 的真實性,並與官方發布的版本進行比對。
為了確保資料隱私與安全性,本工具的所有檔案讀取、雜湊值計算與套件解析工作,皆完全在使用者瀏覽器本機的 Web Worker 中執行。整個處理過程中,檔案不會上傳至任何外部伺服器,且檔案僅供讀取,絕不會在使用者的裝置上進行安裝或執行。
本工具支援單一 .apk 格式檔案,檔案大小上限為 500 MB。若使用者同時拖入多個檔案,系統僅會處理第一個檔案,並顯示「一次只能處理一個檔案——正在檢視第一個檔案。」的提示。
Android 系統需求與版本相容性
在「系統需求」(系統需求) 區段中,本工具會解析並呈現該 APK 所設定的 Android 軟體開發套件(SDK)版本限制:
- 最低 Android 版本 (
最低 Android 版本):應用程式運作所需的最低系統版本,顯示格式為Android ‹version› (API ‹level›)或API ‹level›。 - 目標 Android 版本 (
目標 Android 版本):開發者設計與測試該應用程式時所針對的系統版本,這會決定應用程式在不同 Android OS 版本上的安全行為與相容性特徵。 - 最高 SDK (
最高 SDK ‹n›):若 APK 中有定義適用之上限,則會顯示此欄位。
這些 SDK 版本設定直接決定了應用程式的相容性邊界,也是評估應用程式是否能在特定 Android 裝置上安全運作的重要指標。
權限宣告與安全風險評估
在「權限」(權限) 區段中,工具會列出該 APK 申請的所有權限。Android 系統將權限分為不同安全等級,其中涉及存取使用者私密資料(如位置、聯絡人、相機、麥克風、儲存空間)的項目,會被歸類為危險權限。
為了便於使用者快速識別潛在風險,本工具在解析權限時會採用以下規則:
- 優先排序:所有權限在列表中會進行排序,將帶有「危險」(
危險) 標籤的權限優先置於列表頂端。 - 危險標記:凡是符合 Android 官方定義、可存取私密資料的權限,其旁皆會顯示紅色的「危險」標籤。
使用者可藉此評估應用程式所請求的權限,是否與其宣稱的功能相符,以避免安裝過度索求權限的惡意套件。
應用程式元件與資源結構
Android 應用程式由多個核心元件構成,本工具在「元件」(元件) 區段中會將其分類顯示,並針對每個類別最多顯示 100 筆項目,超出限制時則會附加「還有 ‹count› 個」(還有 ‹count› 個) 的標記:
- Activities:應用程式的互動畫面,若可被其他應用程式呼叫,會標示「已匯出」(
已匯出)。 - Services:在背景執行的工作,同樣會標示「已匯出」狀態。
- Receivers:接收系統或應用程式廣播事件的接收器,會標示「已匯出」狀態。
- Providers:資料共享介面,會顯示其供應商授權(Authority)或「無」(
None),並標示「已匯出」狀態。
此外,在「原生程式碼」(原生程式碼) 與「資源」(資源) 區段中,工具會呈現以下結構資訊:
- 處理器架構:支援的 ABI 類型與原生程式庫數量。
- 資源統計:包含「螢幕畫素密度」(
螢幕畫素密度)、「資源檔」(資源檔)、「資產檔」(資產檔)、「程式碼檔案 (.dex)」(程式碼檔案 (.dex)) 以及「套件中的檔案」(套件中的檔案) 總數。
程式碼簽章與安全憑證驗證
在「簽章」(簽章) 區段中,工具會提取 APK 內部的 X.509 憑證資訊。Android 系統利用簽章機制來建立發布者身分,本工具支援從 v1 (PKCS#7) 以及 APK 簽章區塊(v2、v3、v3.1 方案)中提取中介資料,並顯示以下欄位:
- 簽署者編號(如
簽署者 ‹n›) - 主體 (
主體)、發行者 (發行者)、序號 (序號) - 有效起始日 (
有效起始日) 與有效截止日 (有效截止日) - 簽章演算法 (
簽章演算法) 與金鑰演算法 (金鑰演算法) - MD5、SHA-1、SHA-256 憑證指紋
若套件未包含任何可識別的簽章資訊,系統則會顯示「找不到可辨識的簽章區塊 — 此套件可能未經簽署或已被重新打包。」。請注意,本工具僅提取並呈現憑證中介資料,並不會對簽章進行密碼學上的完整性驗證,亦不會驗證憑證信任鏈或發行者的真實世界身分。
檔案雜湊值與異常處理機制
在「檔案雜湊」(檔案雜湊) 區段中,工具會計算並顯示該 APK 檔案整體的 MD5、SHA-1 與 SHA-256 雜湊值,供使用者與官方發布的雜湊值進行比對,以確保檔案未被篡改。
在解析過程中,工具會針對各種異常與邊界情況輸出明確的錯誤訊息:
| 異常狀況 | 顯示錯誤訊息 |
|---|---|
| 檔案大小超過 500 MB | 此檔案超過 500 MB——大到超出瀏覽器分頁安全檢視的範圍。 |
| 檔案為 XAPK/APKM 分割套件 | 這是 XAPK 分割套件——包含多個 APK 的容器。請解壓縮出基礎 APK 並改為檢視該檔案。 |
| 檔案為 Android App Bundle (.aab) | 這是 Android App Bundle (.aab)——屬於發布格式,而非可安裝的 APK。請改為檢視建構後的 APK。 |
| 非 APK 檔案(無 AndroidManifest.xml) | 這看起來不像 APK:在內部找不到可讀取的 AndroidManifest.xml。 |
| 檔案損壞或不完整 | 此套件看起來已損壞或遭截斷,因此無法讀取其內容。 |
| 檔案讀取失敗 | 無法讀取檔案。請重新選擇。 |
| 其他解析失敗 | 檢視失敗。請嘗試其他檔案。 |
常見問題
不安裝 APK 可以從中了解到什麼?
相當多資訊:應用程式的套件名稱與版本、所需的 Android 版本、其請求的每個權限、所宣告的畫面與背景元件、其原生程式碼所支援的處理器類型,以及簽署該檔案的憑證。
這個工具能告訴我 APK 是否為惡意軟體嗎?
不行——對於任何承諾透過快速掃描就能給出判定結果的工具,請保持懷疑。你在這裡取得的是事實:權限、元件、簽署者與雜湊值。將它們與開發者公佈的內容進行比對,若發現非預期的權限或與官方版本不同的簽署者,請將其視為放棄安裝的理由。
支援哪些檔案?
最大 500 MB 的單一 APK 檔案。分割套件(XAPK、APKM)與 Android App Bundles (.aab) 屬於容器或發布格式,而非單一可安裝套件,因此系統會拒絕並顯示明確訊息,而不是產生令人混淆的報告。
簽章詳細資料能告訴我什麼?
每個 Android 應用程式都有簽章,憑證會識別其發布者。你可以看到套件所帶有的簽章方案(v1、v2、v3)以及各個簽署者的主體、有效期限,以及 MD5、SHA-1 和 SHA-256 指紋。指紋相符的兩個 APK 來自相同的發布者——至於你是否信任該發布者,則由你自己判斷。
權限上的「危險」標籤是什麼意思?
這是 Android 自身的分類:危險權限可以存取私密資料——位置、聯絡人、相機、麥克風、儲存空間——因此系統會在授予權限前詢問使用者。此標籤並非指控;地圖應用程式要求位置權限是很正常的。它只是標記出那些值得仔細閱讀兩次的權限。