批量提取出apk文件中的classes.dex文件 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

批量提取出apk文件中的classes.dex文件

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:81

应用处景


如不雅须要批量分析apk以及每个apk文件中的classes.dex 文件。怎么提掏出它们?将apk改后缀名变为.zip文件,之后在解压,提掏出每个apk文件中的classes.dex文件,这是一个可行的筹划。然则中心解压大年夜量的apk文件会占据我们的大年夜量磁盘存储空间,怎么在不解压文件的情况下提掏出dex文件?在这里应用python自带的zipfile类,可以轻松的解决这个问题。






代码实现:



#!/usr/bin/env python
# coding=utf-8

'''
@author   : Chicho
@version  : 1.0
@ date    : Jan 4, 2015 01:54
@function : extract dexs file from apk files
               * create a new directory to store all dex files

@running  : python dex_extract.py
'''


import os
import zipfile


path="/home/chicho/test/test/"  # this is apk files' store path
dex_path="/home/chicho/test/test/dex/" # a directory  store dex files 


apklist = os.listdir(path) # get all the names of apps

if not 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

        os.rename(APK,newname)

    if APK.endswith(".zip"):
        apkname = portion[0]

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

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

        for filename in z.namelist():
            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文件中批量的提掏出其他文件。比如说so文件等。
转载注明出处:http://blog.csdn.net/chichoxian/article/details/42382695

相关案例查看更多