python获取apk内classes.dex文件
2017-12-05 11:28
375 查看
最近在用python写一个恶意文件检测工具,需要获取apk内classes.dex进行检测。
在编写工具的过程中发现了一个问题,很多人在获取dex文件时,用到了zipFile模块,思路是将.apk文件重命名为.zip文件,然后用.zip文件实例化zipfile成为一个对象,进而访问压缩包内的文件,这样处理不是很方便。参考文章:http://blog.csdn.net/chichoxian/article/details/42382695
但其实,zipFile模块是可以直接处理.apk文件的。接下来贴出部分代码:
这样做的好处是:
1、不用将.apk文件重命名处理
2、不用考虑同路径下是否存在同名.zip文件,导致重命名失败
3、不会改变源文件,不用还原.apk文件
在编写工具的过程中发现了一个问题,很多人在获取dex文件时,用到了zipFile模块,思路是将.apk文件重命名为.zip文件,然后用.zip文件实例化zipfile成为一个对象,进而访问压缩包内的文件,这样处理不是很方便。参考文章:http://blog.csdn.net/chichoxian/article/details/42382695
但其实,zipFile模块是可以直接处理.apk文件的。接下来贴出部分代码:
#!usr/bin/python # -*- coding: utf-8 -*- import os import zipfile import random import string def apk2dext(filepath): ''' 将apk中的dex文件提取出来 :param filepath: apk文件路径 :return: 命中:True ''' #直接用zipfule.ZipFile处理.apk文件 apkfile = zipfile.ZipFile(filepath,'r') if os.path.isdir('dex') == False: os.mkdir('dex') #将apk内所有.dex文件都生成在'dex/'路径下 for tempfile in apkfile.namelist(): #遍历apk包内的所有文件名 if tempfile.endswith('.dex'): dexfilename = ''.join(random.sample(string.ascii_letters + string.digits, 16)) + '.dex' #随机16位字符串文件名 f = open('dex/' + dexfilename,'w+') f.write(apkfile.read(tempfile)) return True
这样做的好处是:
1、不用将.apk文件重命名处理
2、不用考虑同路径下是否存在同名.zip文件,导致重命名失败
3、不会改变源文件,不用还原.apk文件
相关文章推荐
- apk文件中的classes.dex逆向成java源码
- python从apk文件中获取app的名字
- dex2jar.bat反编译apk的classes.dex文件错误:
- Python获取apk文件URL地址实例
- Python获取apk文件URL地址实例
- 使用python获取传入目录下apk文件的所有图标
- 将apk文件中的classes.dex反编译成java源码
- 将apk文件中的classes.dex反编译成java源码
- Python获取apk文件URL地址
- python3中获取文件当前绝对路径的两种方法
- python 获取文件下所有文件或目录os.walk()
- python中怎样获取文件的修改时间及其他系统信息状态-os.stat()
- python获取当前文件路径以及父文件路径
- 获取APK文件的签名信息,反射实现
- Python获取指定目录下文件数量及总大小
- python获取文件真实链接的方法,针对于302返回码
- python文件夹遍历,文件操作,获取文件修改创建时间
- python中如何获取文件列表
- Android ZIP文件提取classes.dex文件签名校验绕过漏洞
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等