指南:三種工具從 APK 中提取與解碼 AndroidManifest.xml)
文檔教程網(wǎng)絡(luò)安全【免費下載鏈接】mastgThe OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.項目地址https://gitcode.com/gh_mirrors/ow/mastg點擊查看免費下載AndroidManifest.xml 是 Android 應(yīng)用的安全身份證它聲明了權(quán)限、組件、導(dǎo)出狀態(tài)、備份開關(guān)、SDK 版本等關(guān)鍵信息是移動應(yīng)用安全測試中最先要檢查的文件之一。本文基于 OWASP MASTG 的 MASTG-TECH-0117完整講解如何用 jadx、apktool、aapt2 三種主流工具從 APK 中提取并解碼該文件對比各工具輸出格式的差異尤其是uses-sdk元素的處理差異并銜接 MASTG 中后續(xù)的 Manifest 分析與組件暴露測試流程。讀完本文你將掌握在任何一次 Android 滲透測試開始時快速、正確地獲取可讀 Manifest 的實操方法。為什么不能直接解壓 APK 來讀 Manifest在 Android 平臺概覽 章節(jié)中明確說明每一個 Android 應(yīng)用在 APK 的根目錄都包含一個AndroidManifest.xml文件但該文件以二進制 XML 格式binary XML存儲而不是普通的文本 XML。這個文件定義了應(yīng)用的結(jié)構(gòu)與關(guān)鍵屬性Android 操作系統(tǒng)在安裝和運行時依賴它來完成權(quán)限授予、組件注冊、Intent 路由等操作。因此直接用unzip等工具解壓 APK 得到的AndroidManifest.xml是一堆二進制字節(jié)無法用文本編輯器直接閱讀。在 apktool 工具頁 中也印證了這一點僅用標準unzip解包 APK 會留下一些不可讀的文件AndroidManifest.xml就是其中之一——它被編碼為二進制 XML 格式。要從 APK 中獲得人類可讀的 Manifest必須先用專用工具提取并解碼。不同工具解碼出的結(jié)果格式各不相同有的盡量保留原始 XML 結(jié)構(gòu)有的在解碼過程中對內(nèi)容進行了解釋或改寫。下面依次介紹 MASTG 推薦的三種方案。方法一使用 jadxMASTG-TOOL-0018jadx 是一款開源 Dex/Java 反編譯器同時提供 CLIjadx與 GUIjadx-gui兩種形態(tài)其功能覆蓋資源與 Manifest 解碼、符號重構(gòu)、交叉引用查找、類/符號/資源/代碼搜索、自定義擴展 API 以及應(yīng)用調(diào)試支持等是 MASTG 中最常用的 Android 分析工具之一。在只關(guān)心 Manifest而不需要反編譯全部源碼的場景下使用 jadx CLI 的--no-src參數(shù)僅提取資源而不反編譯源碼jadx --no-src -d out_dir MASTG-DEMO-0001.apk其中--no-src跳過 Java 源碼反編譯只處理資源速度更快、輸出更干凈-d out_dir指定輸出目錄末尾參數(shù)為待分析的 APK 文件路徑。jadx 會將 Manifest完整地輸出到out_dir/resources/AndroidManifest.xml并且包含uses-sdk元素——這一點是 jadx 與 apktool 的關(guān)鍵差異詳見下文。例如對 MASTG 演示應(yīng)用 MASTG-DEMO-0001 解包后其 Manifest 開頭形如?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/android ... uses-sdk android:minSdkVersion29 android:targetSdkVersion35 /可以看出 jadx 的輸出是標準的 XML 格式屬性沿用android:命名空間前綴minSdkVersion與targetSdkVersion直接以元素形式呈現(xiàn)無需再查其他文件。方法二使用 apktoolMASTG-TOOL-0011apktool 是 Android 安全測試與逆向工程的另一款核心工具。除了解碼 Manifest 之外默認運行時會自動將二進制 Manifest 解碼為文本 XML、提取文件資源并將 DEX 反匯編為 smali 代碼后者在本書后續(xù)的代碼層面分析中會再次用到。提取 Manifest 的推薦命令$ apktool d -s -f -o output_dir MASTG-DEMO-0001.apk I: Using Apktool 2.11.1 on MASTG-DEMO-0001.apk with 8 threads I: Copying raw classes.dex file... ... I: Loading resource table... I: Decoding file-resources... I: Decoding values */* XMLs... I: Decoding AndroidManifest.xml with resources...各參數(shù)含義ddecode解碼模式-sno-src跳過對 dex 文件的 baksmali 反匯編只保留原始classes.dex因此速度更快——在僅需 Manifest 的場景下務(wù)必加上-fforce若輸出目錄已存在則強制覆蓋-o output_dir指定輸出目錄。解碼完成后Manifest 位于output_dir/AndroidManifest.xml可以直接用文本編輯器打開查看。apktool 輸出的目錄中還包含apktool.yml記錄解碼輸出信息、original/含 JAR 的MANIFEST.MF、res/應(yīng)用資源目錄等具體結(jié)構(gòu)見 apktool 工具頁。注意apktool 會隱藏uses-sdk元素使用 apktool 解碼 APK 時你可能會注意到反編譯后的AndroidManifest.xml中缺少uses-sdk元素即包含minSdkVersion與targetSdkVersion的那個元素。這是預(yù)期行為——apktool 并沒有丟棄這些值而是把它們移入了同目錄下的獨立文件apktool.yml而非插入到解碼后的 XML Manifest 中sdkInfo: minSdkVersion: 29 targetSdkVersion: 35這意味著如果測試流程依賴從 Manifest 直接讀取 SDK 版本信息例如判斷targetSdkVersion是否達到平臺安全要求使用 apktool 時需同時查閱apktool.yml的sdkInfo字段而使用 jadx 時則可以直接在 XML 內(nèi)看到uses-sdk。這一差異在 MASTG-TECH-0117 中被明確強調(diào)也是兩種工具輸出行為最重要的區(qū)別之一。方法三使用 aapt2MASTG-TOOL-0124如果你只關(guān)心 Manifest 中的特定值包名、版本、權(quán)限、SDK 版本等可以使用 aapt2。aapt2 位于 Android SDK Build Tools自 26.0.2 修訂版起提供中路徑形如[SDK-Path]/build-tools/[version]/aapt2。讀取 Manifest 摘要信息的命令$ aapt2 d badging MASTG-DEMO-0001.apk package: nameorg.owasp.mastestapp versionCode1 versionName1.0 platformBuildVersionName15 platformBuildVersionCode35 compileSdkVersion35 compileSdkVersionCodename15 sdkVersion:29 targetSdkVersion:35 uses-permission: nameandroid.permission.INTERNET uses-permission: nameorg.owasp.mastestapp.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION application-label:MASTestApp ...重要提醒aapt2 的輸出不是 XML 文件而是類似上面的鍵值對格式。它以自定義命名約定輸出各條目例如package:給出包名與版本信息、sdkVersion:/targetSdkVersion:給出 SDK 版本、uses-permission:逐行列出聲明的權(quán)限、application-label:給出應(yīng)用顯示名稱等。這種格式適合快速提取單個值可配合grep過濾但結(jié)構(gòu)信息如組件聲明、導(dǎo)出狀態(tài)不如 XML 輸出完整需要時仍需回到前兩種方法。三種工具輸出格式對比工具輸出位置格式是否含uses-sdk適用場景jadx--no-srcout_dir/resources/AndroidManifest.xml標準 XMLandroid:前綴命名是直接在 XML 內(nèi)需要完整可讀的 Manifest且不想反編譯源碼apktoold -s -foutput_dir/AndroidManifest.xml標準 XMLandroid:前綴命名否值移入apktool.yml的sdkInfo后續(xù)可能還要反匯編 smali 或重打包 APKaapt2d badging終端標準輸出自定義鍵值格式非 XML如application-debuggable以sdkVersion:/targetSdkVersion:行呈現(xiàn)只查包名、版本、權(quán)限等特定值正如 MASTG-TECH-0150分析 AndroidManifest所強調(diào)的輸出格式取決于提取工具。jadx 與 apktool 輸出標準 XML屬性沿用android:前綴如android:debuggabletrue而 aapt2 輸出自定義解碼格式命名約定不同如application-debuggable。后續(xù)的 grep 搜索、字段定位腳本等分析手段都應(yīng)基于所選工具的格式來設(shè)計。提取之后在 MASTG 測試體系中的銜接AndroidManifest.xml的提取是整個 Android 安全測試鏈的第一步MASTG 中大量測試項都以本技術(shù)為前提MASTG-TECH-0126提取 Manifest 后檢索所有uses-permission元素評估權(quán)限是否遵循最小權(quán)限原則MASTG-TECH-0150系統(tǒng)性地分析 Manifest 中的屬性、標志、權(quán)限與組件聲明MASTG-TECH-0159查找android:exportedtrue的導(dǎo)出 ActivityMASTG-TECH-0160、MASTG-TECH-0161、MASTG-TECH-0162分別針對activity/activity-alias、service、receiver元素記錄其android:name、android:exported、android:permission與 intent filter識別暴露給其他應(yīng)用的 IPC 入口點。同時在 Android 平臺概覽 中還提到一個容易被忽視的事實構(gòu)建期 Manifest 會被合并——最終 APK 中的 Manifest 是應(yīng)用自身聲明與所有依賴庫合并后的產(chǎn)物可能包含開發(fā)者并未顯式聲明的權(quán)限、組件或設(shè)置。因此安全評估必須分析合并后的最終輸出即從 APK 中實際提取出的那份才能理解應(yīng)用的真實暴露面。例如從 MASTG-DEMO-0001 的 APK 提取出的 Manifest 中就可以看到比源碼聲明更多的元素package屬性唯一應(yīng)用標識、uses-sdkminSdkVersion/targetSdkVersion、新增的 activity、provider、receiver以及android:debuggabletrue這類暴露調(diào)試狀態(tài)的標志。小結(jié)獲取 AndroidManifest.xml 是 Android 應(yīng)用安全評估的起點也是 OWASP MASTG 中眾多測試項的共同前置步驟。根據(jù)場景選擇工具即可需要完整 XML 且含 SDK 信息用 jadx--no-src需要兼顧后續(xù) smali 分析或重打包用 apktoold -s -f注意sdkInfo在apktool.yml只查關(guān)鍵值用 aapt2d badging注意非 XML 輸出。掌握這三種工具的差異你就能在任何 Android 測試項目的開局階段快速獲得準確的 Manifest 數(shù)據(jù)為后續(xù)的權(quán)限審計、組件暴露檢測與加固評估奠定基礎(chǔ)。贊分享文檔教程網(wǎng)絡(luò)安全【免費下載鏈接】mastgThe OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.項目地址https://gitcode.com/gh_mirrors/ow/mastg點擊查看免費下載相關(guān)推薦OpenCore Legacy Patcher舊Mac免費升級最新macOSOpenCore Legacy Patcher舊Mac免費升級最新macOS 蘋果給每代macOS都劃定了機型門檻舊Intel Mac到點就被擋在外面。Op文檔教程網(wǎng)絡(luò)安全OWASP MASTG Android UnCrackable L4r2Pay破解實戰(zhàn)PIN 碼提取與白盒密碼逆向指南OWASP MASTG Android UnCrackable L4r2Pay破解實戰(zhàn)PIN 碼提取與白盒密碼逆向指南 本文以 apps/android/文檔教程網(wǎng)絡(luò)安全OWASP MASTG 實戰(zhàn)Android UnCrackable L1 逆向挑戰(zhàn)——從 APK 靜態(tài)分析到動態(tài) Hook 提取隱藏密鑰OWASP MASTG 實戰(zhàn)Android UnCrackable L1 逆向挑戰(zhàn)——從 APK 靜態(tài)分析到動態(tài) Hook 提取隱藏密鑰 UnCrackabl文檔教程網(wǎng)絡(luò)安全上一篇如何一鍵為海量本地音樂添加同步歌詞LRCGET完整使用指南下一篇如何免費激活Windows和OfficeKMS_VL_ALL_AIO終極指南創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考