瀏覽器端 APK 靜態分析技術
「APK 資訊檢視器」是一款免安裝的線上工具,專為 Android 應用程式套件(APK)提供即時的靜態分析。本工具完全在使用者瀏覽器的本機環境中運作,透過解析套件內部的結構與元數據,讓使用者在實際安裝應用程式至行動裝置之前,能先一步掌握其底層技術細節與安全宣告。
本工具的運作機制是在瀏覽器分頁內建立本機 Worker 執行緒,直接讀取並解析上傳的檔案。這意味著整個分析過程(包括檔案讀取、密碼學雜湊計算及套件結構解析)皆不會將任何資料傳送至外部伺服器,檔案亦不會在您的裝置上被執行或安裝,保障了極高的私密性與安全性。
輸入限制與錯誤處理機制
為了確保瀏覽器運作流暢並避免記憶體溢出,本工具設有明確的輸入規範與防錯機制:
- 單一檔案限制:本工具每次僅能處理一個
.apk檔案。若使用者同時拖放多個檔案,系統將僅處理第一個檔案,並顯示提示訊息:一次只能處理一個檔案,正在檢視第一個檔案。 - 檔案大小上限:僅接受不超過 500 MB 的檔案。若檔案超出此限制,系統將拒絕處理並顯示錯誤:
此檔案大於 500 MB,超出瀏覽器分頁的安全檢視範圍。 - 格式相容性檢查:
- 分割套件:若偵測到 XAPK 或 APKM 等分割套件,系統會阻擋並提示:
這是 XAPK 分割套件,內含多個 APK 的容器。請改為解壓縮並檢視基礎 APK 檔案。 - Android App Bundle:若上傳
.aab發布格式,系統會提示:這是 Android App Bundle (.aab),屬於發布格式而非可安裝的 APK。請改為檢視建構後的 APK。 - 非 APK 檔案:若檔案內缺少關鍵的
AndroidManifest.xml,系統會判定為非 Android 套件並顯示:此檔案看起來不像 APK:找不到可讀取的 AndroidManifest.xml。
- 分割套件:若偵測到 XAPK 或 APKM 等分割套件,系統會阻擋並提示:
- 損壞與讀取失敗:針對損壞或不完整的套件,系統會顯示
此套件可能已損壞或遭截斷,因此無法讀取其內容。;若遇上一般性讀取錯誤,則會提示無法讀取檔案,請重新選取。或檢視失敗,請嘗試其他檔案。
狀態指示與操作流程
當使用者將檔案拖放到顯示有 將 APK 拖放至此或點擊以選擇(副標題為 單個.apk 檔案,上限 500 MB)的區域時,工具會依序經歷以下狀態:
- 初始狀態:顯示
就緒。拖放 APK 即可進行檢視。 - 讀取檔案:顯示
正在讀取 ‹name›… - 計算雜湊:顯示
正在計算檔案雜湊值 — ‹percent›% - 解析套件:顯示
正在解析套件… - 完成分析:顯示
報告已備妥。
分析完成後,使用者可點擊 下載報告 按鈕匯出完整數據,或點擊 清除 按鈕重設介面,此時系統會分別顯示 報告已下載。 或 已清除。
報告欄位與技術指標解析
本工具產生的分析報告分為七大核心區塊,完整呈現 APK 的靜態配置:
1. 系統需求 (系統需求)
此區塊呈現應用程式相容的 Android 版本資訊:
- 最低 Android (
最低 Android):顯示為Android ‹version› (API ‹level›)或API ‹level›,定義了可安裝此程式的最低系統門檻。 - 目標 Android (
目標 Android):顯示為Android ‹version› (API ‹level›)或API ‹level›,代表開發者設計與測試時所針對的 SDK 版本,這會直接影響系統對該程式啟用的安全行為與權限模型。 - 最高 SDK:若套件有限制最高支援版本,會顯示
最高 SDK ‹n›。
2. 權限宣告 (權限)
列出 APK 申請的所有 Android 系統權限。為了協助使用者快速識別潛在風險,本工具會將被 Android 官方定義為會存取私密數據(如聯絡人、定位、相機等)的權限排在列表最上方,並在其旁標註紅色的 危險 標籤。
3. 應用程式元件 (元件)
Android 應用程式的四大元件會被分類列出,且每類別最多僅顯示 100 筆項目,超出時會以 還有 +‹count› 個 標記:
- Activities:應用程式的互動畫面。若元件允許被其他應用程式啟動,會標註
已匯出。 - Services:背景執行緒。允許外部呼叫時標註
已匯出。 - Receivers:廣播接收器。允許接收系統或外部廣播時標註
已匯出。 - Providers:內容提供者。會顯示其授權網域(Authority),若無則顯示
None,允許外部存取時標註已匯出。
4. 原生程式碼 (原生程式碼)
顯示該 APK 所支援的處理器架構(ABI,例如 arm64-v8a、armeabi-v7a、x86_64)以及對應的原生動態連結庫(.so 檔案)數量。
5. 資源統計 (資源)
統計套件內部的靜態資源分佈,包含:
螢幕密度:支援的螢幕解析度適配目錄。資源檔案:XML 配置與圖檔等。資產檔案:assets/目錄下的原始檔案。代碼檔案 (.dex):編譯後的 Dalvik 執行檔數量。套件內的檔案:APK 壓縮檔內的總檔案數。
6. 簽章資訊 (簽章)
本工具會從 v1 (PKCS#7) 區塊以及 v2、v3、v3.1 簽署區塊中提取 X.509 憑證元數據。針對每個簽署者(顯示為 簽署者 ‹n›),會列出以下欄位:
主體、發行者、序號有效起始日期、有效截止日期簽章演算法、金鑰演算法- 憑證的 MD5、SHA-1 與 SHA-256 指紋。
注意:本工具僅提取並顯示憑證元數據,並不會進行密碼學上的完整性驗證、憑證鏈信任驗證,亦無法核實發行者的真實世界身分。若套件未簽署或遭篡改導致找不到簽章,會顯示:找不到識別的簽章區塊 — 此套件可能未簽署或已被重新打包。
7. 檔案雜湊值 (檔案雜湊值)
提供整個 APK 檔案的 MD5、SHA-1 與 SHA-256 雜湊值,便於使用者與官方發布管道提供的雜湊值進行比對,確保檔案未被篡改。
常見問題
不安裝 APK 的情況下,我可以從中得知什麼?
可以得知相當多的資訊:應用程式的套件名稱與版本、所需的 Android 版本、要求的所有權限、所宣告的畫面與背景元件、原生程式碼支援的處理器類型,以及簽署該應用程式的憑證。
這個工具可以告訴我某個 APK 是否為惡意程式嗎?
不行。請對任何聲稱透過快速掃描就能給出判定結果的工具保持懷疑。此工具提供給您的是事實:權限、元件、簽署者與雜湊值。請將這些資訊與開發者公佈的內容進行比對,若發現預期之外的權限,或簽署者與官方發布的不同,請提高警覺並避免安裝。
支援哪些檔案格式?
支援大小上限為 500 MB 的單一 APK 檔案。由於分割套件(XAPK、APKM)和 Android App Bundle (.aab) 屬於容器或發布格式而非單一可安裝套件,因此系統會拒絕讀取並顯示明確的訊息,而不會產生容易混淆的報告。
簽署詳細資料代表什麼意思?
每個 Android 應用程式都會經過簽署,憑證可用以識別其發布者。您可在此查看套件所支援的簽署機制(v1、v2、v3),以及各簽署者的主體、有效期限、MD5、SHA-1 與 SHA-256 指紋。指紋相符的兩個 APK 來自相同的發布者,但您仍需自行判斷是否信任該發布者。
權限上的「危險」標籤是什麼意思?
這是 Android 自身的分類:危險權限可能會存取私密資料(例如位置、聯絡人、相機、麥克風、儲存空間),因此系統會在授權前徵求使用者同意。此標籤並非指控,地圖應用程式要求存取位置屬於正常現象,它只是標記出那些值得您仔細閱讀兩遍的權限。