批量提取出apk中所需的檔案

2021-07-30 22:25:47 字數 1252 閱讀 1219

我需要批量提取出apk中的classes.dex檔案,如何在不解壓的情況下快速提取出dex檔案?在這裡使用python自帶的zipfile類,可以輕鬆的解決這個問題。
#!/usr/bin/env python

# coding=utf-8

import os

import zipfile

path="d:/tao/test/apkstore"

# this is apk files' store path

dex_path="d:/tao/test/dex/"

# a directory store dex files

ifnot os.path.exists(dex_path):

os.makedirs(dex_path)

for apk in apklist:

portion = os.path.splitext(apk)

if portion[1] == ".apk":

newname = portion[0] + ".zip"

# change them into zip file to extract dex files

#print newname

os.chdir(path)

os.rename(apk,newname)

apkname = portion[0]

#zip_apk_path = os.path.join(path,apk) # get the zip files

zip_apk_path = path+"/"+newname

z = zipfile.zipfile(zip_apk_path, 'r') # read zip files

for filename in z.namelist():

#print filename

if filename.endswith(".dex"):

dexfilename = apkname + ".dex"

dexfilepath = os.path.join(dex_path, dexfilename)

f = open(dexfilepath, 'w+') # eq: cp classes.dex dexfilepath

f.write(z.read(filename))

print

"all work done!"

借鑑了一下兩篇文章的解決思路,達到了我想要的效果。

提取手機上的所有apk檔案

今天學習了一些dos的命令,又想到上次換手機重下軟體特別麻煩,於是有了這個想法。在測試過程中發現我不會列出的包名和apk路轉成變數,於是我想到了把它們存為txt檔案,等需要時再讀取。以後會弄了回來把程式改一下。整個的分析過程 1.將包名存為txt檔案 我放在了d盤根目錄 adb shell pm l...

批量提取檔名的辦法

批量提取檔名的辦法 方法一 tree命令 命令提示符下 開始 執行 cmd tree 要獲得檔名的資料夾的路徑 f 存放的路徑 filename 例如 要獲得c盤下的所有檔案的檔名,並將生成的檔案儲存到d盤,可使用如下命令 tree c f d contents.txt 代表乙個空格 小tip 可以...

批量提取檔名的方法

想做個內容列表,如果把檔案名字乙個乙個複製,再貼上太麻煩了 可以利用dos命令列 tree和dir 讀取某個資料夾下所有檔案的名字 含字尾 然後到出到txt文字檔案。1 tree 以樹型結構顯示磁碟目錄結構命令 tree drive path f a 存放的路徑 f 顯示每個資料夾中檔案的名稱 省略...