【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )
文章目錄
- 一、Android 應(yīng)用安裝
- 二、APK 文件格式
- 三、使用 Python 提取 APK 文件
一、Android 應(yīng)用安裝
APK 是 Android 應(yīng)用的安裝文件 , 現(xiàn)在也有 AAB 格式的 , AAB 安裝包也可以導(dǎo)出 APK 安裝文件 ;
應(yīng)用安裝時(shí) , 會(huì)將 APK 安裝包拷貝到 /data/app/packageName/ 目錄下的 base.apk ,
如 : 某應(yīng)用會(huì)將 apk 文件拷貝到 /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/base.apk 位置 ;
APK 安裝目錄參考 【Android 逆向】應(yīng)用安裝目錄 ( Android 應(yīng)用的默認(rèn)安裝目錄 | 查找 Android 應(yīng)用的安裝目錄 | 查詢當(dāng)前正在運(yùn)行的應(yīng)用包名 | 根據(jù)包名查詢應(yīng)用安裝路徑 ) 博客 ;
/data/data/package.name/lib 是應(yīng)用自帶的 so 動(dòng)態(tài)庫(kù) , 在應(yīng)用安裝時(shí)安裝的文件 ;
/data/data/com.qidian.QDReader/lib文件是軟鏈接文件 , 真實(shí)的文件地址是 /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/lib/arm 地址 , 這是應(yīng)用的安裝目錄 ;
lrwxrwxrwx 1 root root 66 2021-10-26 10:10 lib -> /data/app/com.qidian.QDReader-GTqLCxuMlq6CJtnOVz1LgQ==/lib/arm參考 【Android 逆向】應(yīng)用數(shù)據(jù)目錄 ( files 數(shù)據(jù)目錄 | lib 應(yīng)用自帶 so 動(dòng)態(tài)庫(kù)目錄 | databases sqlite3 數(shù)據(jù)庫(kù)目錄 | cache 緩存目錄 ) 博客 ;
二、APK 文件格式
Android 的 APK 安裝包使用的數(shù)據(jù)格式就是 zip 格式 , 直接使用 zip 工具解壓即可 , 也可以將文件命后綴改為 .zip 后解壓 ;
Zip 文件格式中 , 每個(gè)文件都是由 文件頭 + 文件數(shù)據(jù) + 數(shù)據(jù)描述符 構(gòu)成 , 如果有多個(gè)文件 , 則上面的 文件頭 + 文件數(shù)據(jù) + 數(shù)據(jù)描述符 數(shù)據(jù) 重復(fù)存放 即可 ;
Zip 文件中 還有一個(gè) 核心目錄 , 以及 目錄結(jié)束標(biāo)識(shí) ;
在 010 Editor 工具中 , 打開 apk 文件 , 然后選擇 " 菜單欄 / 模板 / Zip 模板 " , 即可以 Zip 格式解析該 APK 文件 ;
50 4B 03 04 開始的文件 , 就是 Zip 文件 , 這是 Zip 文件的標(biāo)識(shí) ;
三、使用 Python 提取 APK 文件
使用 Python 提取 APK 文件完整代碼 :
import os # 如果沒(méi)有使用 pip install zipfile 安裝 import zipfile# 提取 APK 中的文件 def extract_apk(apk_path: str):# 創(chuàng)建 ZipFile 實(shí)例對(duì)象zip_file = zipfile.ZipFile(apk_path)# 解壓目錄 , 刪除 "app.apk" 的后 4 個(gè)字符 ".apk" , 即 "app"out = apk_path[:-4]# 創(chuàng)建目錄os.mkdir(out)# 提取 zip 文件zip_file.extractall(out)# 關(guān)閉 zip 文件zip_file.close()def main():extract_apk('app.apk')if __name__ == '__main__':main()執(zhí)行后會(huì)將 app.apk 文件解壓到 app 目錄中 ;
總結(jié)
以上是生活随笔為你收集整理的【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Android 逆向】ELF 文件格式
- 下一篇: 【Android 逆向】逆向修改游戏应用