前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用Python判断文件是否为PE文件

使用Python判断文件是否为PE文件

作者头像
Python小屋屋主
发布于 2018-04-16 06:45:06
发布于 2018-04-16 06:45:06
2.3K0
举报
文章被收录于专栏:Python小屋Python小屋

PE的全称是Portable Executable,指可移植的可执行文件,目前的最新版本是2013年2月6日发布的8.3版。PE文件包括exe文件、com文件、dll文件、ocx文件、sys文件、scr文件等Windows平台上所有可执行文件类型,可以说PE文件是Windows操作系统和Windows平台上所有软件和程序能够正常运行的重要基础。

# -*- coding:utf-8 -*-

import sys

import os

if len(sys.argv)!=2:

print('Usage: {0} anotherFile'.format(sys.argv[0]))

sys.exit()

filename = sys.argv[1] #获取要检测的文件名

if not os.path.isfile(filename): #判断是否为文件

print(filename + ' is not file.')

sys.exit()

with open(filename, 'rb') as fp:

flag1 = fp.read(2) #读取文件前两个字节

fp.seek(0x3c) #获取PE头偏移

offset = ord(fp.read(1))

fp.seek(offset)

flag2 = fp.read(4) #获取PE头签名

if flag1==b'MZ' and flag2==b'PE\x00\x00': #判断是否为PE文件的典型特征签名

print(filename + ' is a PE file.')

else:

print(filename + ' is not a PE file.')

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
pkg文件--一种简单的游戏资源打包格式
[四字节] 固定的内容, 值不重要  [四字节] 文件数目(unsigned int)  [四字节] 文件名表 的偏移(unsigned int)  [四字节] 文件名表 的长度(字节数)(unsigned int)  ……  中间一堆 各个文件的内容, 文件内容使用zlib压缩过  ……  直到  文件名表:  [两字节] 文件名长度  [文件名长度那么多字节] 文件名  [四字节] 固定的内容,值不重要  [四字节] 文件原长度  [四字节] 文件偏移  [四字节] 文件压缩后的长度  [两字节] 又一个文件名的长度  …
用户7886150
2020/11/23
2.2K0
python3基础:文件操作
相对路径:顾名思义就是相对于当前文件的路径。网页中一般表示路径使用这个方法。 绝对路径:绝对路径就是主页上的文件或目录在硬盘上真正的路径。 比如 c:/apache/cgi-bin 下的,那么 c:/apache/cgi-bin就是cgi-bin目录的绝对路径
py3study
2020/01/10
7300
python3基础:文件操作
2.5 PE结构:导入表详细解析
导入表(Import Table)是Windows可执行文件中的一部分,它记录了程序所需调用的外部函数(或API)的名称,以及这些函数在哪些动态链接库(DLL)中可以找到。在Win32编程中我们会经常用到导入函数,导入函数就是程序调用其执行代码又不在程序中的函数,这些函数通常是系统提供给我们的API,在调用者程序中只保留一些函数信息,包括函数名机器所在DLL路径。
微软技术分享
2023/09/05
6270
2.5 PE结构:导入表详细解析
使用python cgi上传文件并计算m
对文件拷贝后进行MD5值比较,看是不是拷贝完全。google和baidu上都是使用md5模块读取所有的文件进内存,在计算md5,导致计算超过1G大小的文件报错。增量计算MD5的方法:
py3study
2020/01/13
9690
21.1 使用PEfile分析PE文件
PeFile模块是Python中一个强大的便携式第三方PE格式分析工具,用于解析和处理Windows可执行文件。该模块提供了一系列的API接口,使得用户可以通过Python脚本来读取和分析PE文件的结构,包括文件头、节表、导入表、导出表、资源表、重定位表等等。此外,PEfile模块还可以帮助用户进行一些恶意代码分析,比如提取样本中的字符串、获取函数列表、重构导入表、反混淆等等。PEfile模块是Python中处理PE文件的重要工具之一,广泛应用于二进制分析、安全研究和软件逆向工程等领域。
微软技术分享
2023/08/10
5290
4.9 x64dbg 内存处理与差异对比
LyScript 插件中针对内存读写函数的封装功能并不多,只提供了最基本的内存读取和内存写入系列函数的封装,本章将继续对API接口进行封装,实现一些在软件逆向分析中非常实用的功能,例如ShellCode代码写出与置入,内存交换,内存区域对比,磁盘与内存镜像比较,内存特征码检索等功能,学会使用这些功能对于后续漏洞分析以及病毒分析都可以起到事半功倍的效果,读者应重点关注这些函数的使用方式。
微软技术分享
2023/07/11
3070
4.9 x64dbg 内存处理与差异对比
Python 实现进制转换与反汇编
通过利用反汇编库,并使用python编写工具,读取PE结构中的基地址偏移地址,找到OEP并计算成FOA文件偏移,使用反汇编库对其进行反汇编,并从反汇编代码里查找事先准备好的ROP绕过代码,让其自动完成搜索,这里给出实现思路与部分代码片段。
微软技术分享
2022/12/28
5960
Python 使用sigthief签发证书
Windows 系统中的一些非常重要文件通常会被添加数字签名,其目的是用来防止被篡改,能确保用户通过互联网下载时能确信此代码没有被非法篡改和来源可信,从而保护了代码的完整性、保护了用户不会被病毒、恶意代码和间谍软件所侵害,而一些杀毒软件也是通过检测程序中的证书来实现查杀判定的,本章将演示证书的签发与伪造。
微软技术分享
2022/12/28
8940
md5值输出脚本(python)
封装一个md5的模块,带入参数可以输入md5的值. 希望能对大家有用. #! /usr/bin/env python3 """Python utility to print MD5 checksums of argument files. """ bufsize = 8096 fnfilter = None rmode = 'rb' usage = """ usage: md5sum.py [-b] [-t] [-l] [-s bufsize] [file ...] -b : re
IT运维技术圈
2022/06/26
1.1K0
md5值输出脚本(python)
Python 学习入门(12)—— 文件
python进行文件读写的函数是open或file: f = open(filename, mode)
阳光岛主
2019/02/19
4980
Python 模版(三)
用于对特定的配置进行操作,当前模块的名称在python 3.x版本中变更为ConfigParser。
py3study
2020/01/14
5.1K0
LyScript 实现应用层钩子扫描器
Capstone 是一个轻量级的多平台、多架构的反汇编框架,该模块支持目前所有通用操作系统,反汇编架构几乎全部支持,本篇文章将运用LyScript插件结合Capstone反汇编引擎实现一个钩子扫描器。
微软技术分享
2022/12/28
2230
LyScript 实现应用层钩子扫描器
python文件操作二
结果: 我是最帮的!! 学习文件写入操作我是最帮的!! 学习文件写入操作,加油!!!
py3study
2020/01/07
7340
4.7 x64dbg 应用层的钩子扫描
所谓的应用层钩子(Application-level hooks)是一种编程技术,它允许应用程序通过在特定事件发生时执行特定代码来自定义或扩展其行为。这些事件可以是用户交互,系统事件,或者其他应用程序内部的事件。应用层钩子是在应用程序中添加自定义代码的一种灵活的方式。它们可以用于许多不同的用途,如安全审计、性能监视、访问控制和行为修改等。应用层钩子通常在应用程序的运行时被调用,可以执行一些预定义的操作或触发一些自定义代码。
微软技术分享
2023/07/10
2020
4.7 x64dbg 应用层的钩子扫描
PE结构:VA&RVA&FOA 转换复习
计算实际装入地址 VA imagebase (映像基址) + RVA(虚拟入口) =>
微软技术分享
2022/12/28
5760
PE结构:VA&RVA&FOA 转换复习
通过IP获取地理位置信息的几种方式
1、QQWry IP纯真数据库 纯真版IP地址数据库是当前网络上最权威、地址最精确、IP记录以及网吧数据最多的IP地址数据库。收集了包括中国电信、中国移动、中国联通、铁通、长城宽带等各ISP的最新准确IP地址数据。由于IP地址数据是民间收集的,而IP地址段会经常更改,所以有点遗漏、错误是难免的,也因此纯真IP数据库每5天更新一次。 数据库和代码下载地址:QQWry_IPLook.zip,源码如下: #!/usr/bin/env python2 # -*- coding: UTF-8 -*- from s
小小科
2018/05/02
2.6K0
通过IP获取地理位置信息的几种方式
[ibd2sql] mysql frm 文件结构解析
准备给ibd2sql加个解析 mysql 5.7 的ibd文件功能. mysql 8.0的元数据信息是存储在ibd文件的sdi page里面的. 但是mysql 5.7 的表结构信息是存储在 frm 文件的, 所以就得解析下这个frm文件了. 本以为它是文本文件, 很遗憾, 还是二进制的....
大大刺猬
2024/04/15
4730
[ibd2sql] mysql frm 文件结构解析
[MYSQL] 忘记root密码时, 不需要重启也能强制修改了!
之前讲过mysql忘记密码时的一些处理方法, 前面几种都是需要重启才生效的(包括修改ibd文件), 而不需要重启的方法(修改内存,或者gdb跳过认证)并没有给出完整实现. 而有的同学恰好就需要一个不用重启也能强制修改密码的方法...
大大刺猬
2025/02/06
8570
Python程序设计之文件(上)
1.1 文本文件(文本文件存储常规字符串,有若干文本行组成,通常每行使用'\n'结尾。字符串指的是记事本或其他文本编辑器能够正常显示、编辑并且能够被人类直接阅读和理解的字符串)
用户6256742
2024/05/30
900
[re入门]PE文件结构
EXE和DLL文件之间的区别完全是语义上的,他们使用完全相同的PE格式。唯一的区别就是用一个字段标识出这个文件是EXE还是DLL。还有许多DLL的扩展,如OCX控件和控制面板程序(.CPL文件)等都是DLL,它们有一样的实体。
李鹏华
2024/03/12
2690
[re入门]PE文件结构
相关推荐
pkg文件--一种简单的游戏资源打包格式
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文