批量提取出apk文件中的classes.dex文件
应用场景
如果需要批量分析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 zipfilepath="/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 appsif 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 filesos.rename(APK,newname)if APK.endswith(".zip"):apkname = portion[0]zip_apk_path = os.path.join(path,APK) # get the zip filesz = zipfile.ZipFile(zip_apk_path, 'r') # read zip filesfor 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 dexfilepathf.write(z.read(filename))print "all work done!"
利用这个方法还可以从apk文件中批量的提取出其他文件。比如说so文件等。
转载注明出处:http://blog.csdn.net/chichoxian/article/details/42382695
批量提取出apk文件中的classes.dex文件相关推荐
- vs android 压缩,Android Studio是否压缩classes.dex文件?
看起来输出文件夹中apk文件的classes.dex与已安装的应用程序不同. 我正在使用classes.dex文件来解决一些安全问题,所以通常我解压缩最终的apk文件并从classes.dex文件中获 ...
- Excel如何从记录信息里批量提取出QQ号码
今天我和大家分享的是:Excel如何从记录信息里批量提取出QQ号码,详见下面的动图演示. 从某个群里面,我们获得了QQ号和昵称的字段,那现在我们只想要QQ号,以便于我们添加好友,怎么提取出来呢 (方方 ...
- 在SCSS文件中导入常规CSS文件?
本文翻译自:Import regular CSS file in SCSS file? Is there anyway to import a regular CSS file with Sass's ...
- 如何在另一个JavaScript文件中包含一个JavaScript文件?
JavaScript中是否有类似于CSS中@import的内容,可让您在另一个JavaScript文件中包含一个JavaScript文件? #1楼 而不是在运行时添加,而是使用脚本在上传之前进行串联. ...
- java jar metainf_java – 从生成的jar文件中排除META-INF / maven文件夹
我正在尝试创建一个jar文件,其中包含jar中提取的所有必需类.但对于像 log4j这样的少量依赖jar,它会在META-INF / maven / *中创建一些文件夹.我有一个限制,我将放置生成的j ...
- SQL导入文本错误:大容量插入: 在数据文件中遇到意外的文件结尾 (EOF)。
服务器: 消息 4832,级别 16,状态 1,行 1 大容量插入: 在数据文件中遇到意外的文件结尾 (EOF). 服务器: 消息 7399,级别 16,状态 1,行 1 OLE DB 提供程序 'S ...
- gulp 批量添加类名 在一个任务中使用多个文件来源
1.首先安装环境 1.安装gulp: npm install gulp 2.安装gulp-clean-css npm install gulp-clean-css 3.安装gulp-css-wrap ...
- linux 查看文件中数据类型,Linux下使用file命令确定文件中数据的类型-文件类型...
青年是学习智慧的时期,中年是付诸实践的时期.--卢梭 在Linux系统中查看一个文件之前,要先确定该文件中数据的类型,之后再使用适当的命令或方法打开该文件. 与windows系统不同,在Linux系统 ...
- 编写图形界面程序,接受用户输入的5个浮点数据和一个文件目录名,将这五个数据保存在该文件中,再从文件中读取出来并且进行从大到小排序,然后再一次追加保存在该文件中。
File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的 ...
最新文章
- Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;
- 在C#里怎样获得当前Windows操作系统的语言种类?以及如何知道当前Windows版本?...
- 计算机专业哪家强,计算机专业哪家强?这4所大学水平一流,网友:都是“大佬”级别...
- HDU - 7072 Boring data structure problem 双端队列 + 思维
- 一直认为in,exists 不走索引,被同事鄙视了……
- Java 8 Optional类深度解析(转)
- 惠普打印机136w硒鼓芯片怎么清零_HP惠普打印机清零技巧
- 2022年除了深度学习,人工智能算法有可能突破的10个方向
- C10K问题及解决方案
- 分辨率,像素,像素密度易懂
- linux sed替换行,shell - 使用Sed替换包含字符串的整行
- 树莓派装专用服务器系统,Raspberry Pi 树莓派安装64位系统打造全功能NAS [全网最正确操作记录]...
- 如何修改apk文件,反编译(转)
- Python pypinyin库,实现文字转拼音
- Greenplum初始化数据库时出现gpadmin-[ERROR]:-gpstart error: Do not have enough valid segments to start the arr
- mpVue的基本介绍
- HTTP请求中POST与GET的区别
- ELISPOT酶联免疫斑点技术说明书
- 如何创建小程序商店?
- 利用Div CSS(嵌套 盒模型)布局页面完整实例流程