我需要批量提取出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 顯示每個資料夾中檔案的名稱 省略...