文章目錄
- 一、Android 應用安裝
- 二、APK 檔案格式
- 三、使用 Python 提取 APK 檔案
一、Android 應用安裝
APK 是 Android 應用的安裝檔案 , 現在也有 AAB 格式的 , AAB 安裝包也可以匯出 APK 安裝檔案 ;
應用安裝時 , 會將 APK 安裝包拷貝到 /data/app/packageName/ 目錄下的 base.apk ,
如 : 某應用會將 apk 檔案拷貝到 /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/base.apk 位置 ;
APK 安裝目錄參考 【Android 逆向】應用安裝目錄 ( Android 應用的默認安裝目錄 | 查找 Android 應用的安裝目錄 | 查詢當前正在運行的應用包名 | 根據包名查詢應用安裝路徑 ) 博客 ;
/data/data/package.name/lib 是應用自帶的 so 動態庫 , 在應用安裝時安裝的檔案 ;
/data/data/com.qidian.QDReader/lib檔案是軟鏈接檔案 , 真實的檔案地址是 /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/lib/arm 地址 , 這是應用的安裝目錄 ;
lrwxrwxrwx 1 root root 66 2021-10-26 10:10 lib -> /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/lib/arm
參考 【Android 逆向】應用資料目錄 ( files 資料目錄 | lib 應用自帶 so 動態庫目錄 | databases sqlite3 資料庫目錄 | cache 快取目錄 ) 博客 ;
二、APK 檔案格式
Android 的 APK 安裝包使用的資料格式就是 zip 格式 , 直接使用 zip 工具解壓即可 , 也可以將檔案命后綴改為 .zip 后解壓 ;
Zip 檔案格式中 , 每個檔案都是由 檔案頭 + 檔案資料 + 資料描述符 構成 , 如果有多個檔案 , 則上面的 檔案頭 + 檔案資料 + 資料描述符 資料 重復存放 即可 ;
Zip 檔案中 還有一個 核心目錄 , 以及 目錄結束標識 ;
在 010 Editor 工具中 , 打開 apk 檔案 , 然后選擇 " 選單欄 / 模板 / Zip 模板 " , 即可以 Zip 格式決議該 APK 檔案 ;

50 4B 03 04 開始的檔案 , 就是 Zip 檔案 , 這是 Zip 檔案的標識 ;

三、使用 Python 提取 APK 檔案
使用 Python 提取 APK 檔案完整代碼 :
import os
# 如果沒有使用 pip install zipfile 安裝
import zipfile
# 提取 APK 中的檔案
def extract_apk(apk_path: str):
# 創建 ZipFile 實體物件
zip_file = zipfile.ZipFile(apk_path)
# 解壓目錄 , 洗掉 "app.apk" 的后 4 個字符 ".apk" , 即 "app"
out = apk_path[:-4]
# 創建目錄
os.mkdir(out)
# 提取 zip 檔案
zip_file.extractall(out)
# 關閉 zip 檔案
zip_file.close()
def main():
extract_apk('app.apk')
if __name__ == '__main__':
main()
執行后會將 app.apk 檔案解壓到 app 目錄中 ;

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/341924.html
標籤:其他
