首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PE Headers的哪个字段告诉我们是否有效的PE文件?

在PE文件中,PE Headers的哪个字段告诉我们是否有效的PE文件是"Magic Number"字段。Magic Number是一个16位的唯一标识符,用于区分不同类型的可执行文件。在PE文件中,Magic Number字段的值为0x5A4D,表示该文件是有效的PE文件。

在PE文件中,Magic Number字段位于DOS头部,即DOS MZ头部。DOS MZ头部是PE文件的第一部分,包含了一些基本的文件信息,如文件大小、重定位表等。Magic Number字段位于DOS头部的第0x3C个字节处,用于标识文件类型。

如果您需要检查PE文件是否有效,可以使用一些工具或者编程语言来读取Magic Number字段,并与0x5A4D进行比较。如果匹配,则表示该文件是有效的PE文件。

推荐的腾讯云相关产品:

  • 腾讯云对象存储(COS):一个高性能、可扩展的云存储服务,可以用于存储和管理PE文件。
  • 腾讯云容器服务:一个强大的容器管理平台,可以用于部署和运行基于PE文件的应用程序。
  • 腾讯云API网关:一个安全、高性能的API管理服务,可以用于管理和保护基于PE文件的API接口。

产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PE格式详解讲解1

装载到内存中时,PE状态器将从IMAGE_DOS_HEADER结构中e_lfanew字段中岛PE Header起始偏移量,加上基地址就得到PE文件头指针PEHeader = ImageBase +...FileHeader +18h IMAGE_OPTIONAL_HEADER32OptionalHeader } IMAGE_NT_HEADERS ENDS Signature字段 在一个有效...标志这 PE 文件开始。 “PE00” 字符串是 PE 文件开始,DOS 头部 e_lfanew 字段正是指向这里。...一般如果需要验证一个文件是否PE文件就要验证这个标志是否为这个值 FileHeader字段 这个字段是一个IMAGE_FILE_HEADER结构,他定义如下: struct IMAGE_FILE_HEADER...( 这些标志有效值是定义于 winnt.h 内 IMAGE_FILE_** 值,具体含义见下表。 普通EXE文件这个字段值一般是 0100h,DLL文件这个字段值一般是 210Eh。)

75220

PE格式:实现PE文件特征码识别

PE文件就是我们常说EXE可执行文件,针对文件特征识别可以清晰知道该程序是使用何种编程语言实现,前提是要有特征库,PE特征识别有多种形式,第一种是静态识别,此方法就是只针对磁盘中文件特征码字段进行检测来判断编译器版本...打开PE文件映射: 在读取PE结构之前,首先要做就是打开PE文件到内存,这里打开文件我们使用了CreateFile()函数该函数可以打开文件并返回文件句柄,接着使用CreateFileMapping(...: %d \n", lpMapAddress);system("pause");return 0;}判断是否PE文件: 当文件已经打开后,接下来就要判断文件是否有效PE文件,这里我们首先将镜像转换为...PIMAGE_DOS_HEADER格式并通过pDosHead->e_magic属性找到PIMAGE_NT_HEADERS结构,然后判断其是否符合PE文件规范即可,这里需要注意32位于64位PE结构所使用结构定义略有不同...,通常情况下我们只需要匹配程序开头前32个字节就差不多了,当然为了匹配精度更高,我们也可以对多个字段进行验证,这里就只写出大体轮廓吧.

87100

APT之旅 - PE静态内容结构

一、前言 PE 是一种文件格式,在Windows操作系统上执行可执行文件(.exe)、动态链接库(.dll)、驱动程序以及其他可执行文件类型都是 PE 格式。...NT Headers NT Headers 同 DOS Header e_magic 位一样有一个校验结构是否有效位 Signature,其值必定等于"PE\x00\x00",NT Headers...三、PE 解析器编写 根据之前内容,我们需要读取一个 PE 文件内容,其返回指针就是 DOS Header 地址,然后根据 DOS Header->e_lfanew 获取到 NT Headers 地址...最好通过 File Header Machine 字段判断 PE 文件架构后再调用对应结构体进行解析: 通过微软 IMAGE_FIRST_SECTION 宏定义加 NT Headers 地址获取到...Section Header 打印 PointerToRawData + SizeOfRawData 值验证是否等于我们用 WinAPI GetFileSize 或 ftell 函数计算出来大小:

24320

PE格式:实现PE文件特征码识别

PE文件就是我们常说EXE可执行文件,针对文件特征识别可以清晰知道该程序是使用何种编程语言实现,前提是要有特征库,PE特征识别有多种形式,第一种是静态识别,此方法就是只针对磁盘中文件特征码字段进行检测来判断编译器版本...打开PE文件映射: 在读取PE结构之前,首先要做就是打开PE文件到内存,这里打开文件我们使用了CreateFile()函数该函数可以打开文件并返回文件句柄,接着使用CreateFileMapping(...: %d \n", lpMapAddress); system("pause"); return 0; } 判断是否PE文件: 当文件已经打开后,接下来就要判断文件是否有效PE文件,这里我们首先将镜像转换为...PIMAGE_DOS_HEADER格式并通过pDosHead->e_magic属性找到PIMAGE_NT_HEADERS结构,然后判断其是否符合PE文件规范即可,这里需要注意32位于64位PE结构所使用结构定义略有不同...,通常情况是要用文件入口处代码和特征码进行匹配,通常情况下我们只需要匹配程序开头前32个字节就差不多了,当然为了匹配精度更高,我们也可以对多个字段进行验证,这里就只写出大体轮廓吧.

1.2K20

Win32汇编:汇编版PE结构解析器

PE格式是Windows系统下最常用可执行文件格式,有些应用必须建立在了解PE文件格式基础之上,如可执行文件加密与解密,文件型病毒查杀等,熟练掌握PE文件结构,有助于软件分析....e_lfanew ; 指向了PE文件开头(重要) 第一个字段e_magic被定义为MZ,标志着DOS文件开头部分,最后一个字段e_lfanew则指明了PE文件开头位置,现在来说除了第一个字段和最后一个字段有些用处...解析PE头结构 从DOS文件e_lfanew字段(文件头偏移003ch),PE文件格式排列在DOS头后面,也就是e_lfanew指针所指向地址,而PE文件第一个字节就是PE这两个字符,有了这些信息...,我们就可以写一个小工具,来检测指定一个程序是否是可执行文件啦. .data szFileName db "lyshark.exe",0h hFile dd ?...文件是否有效,是否是一个正常PE mov esi,lpMemory assume esi:ptr IMAGE_DOS_HEADER ; 判断是否为DOS文件头部 .if [esi].e_magic

27140

2.2 PE结构:文件头详细解析

从DOS文件头IMAGE_DOS_HEADERe_lfanew字段向下偏移003CH位置,就是真正PE文件位置,该文件头是由IMAGE_NT_HEADERS结构定义,IMAGE_NT_HEADERS...如上图所示,图中4D5A则表示这是一个PE文件,其下08010000则代表DOS头最后一个数据集e_lfanew字段,该字段指向了PE开始50450000用于表示NT头其实位置,而途中英文单词则是一个历史遗留问题...则指明了PE文件开头位置,现在来说除了第一个字段和最后一个字段有些用处,其他字段几乎已经废弃,当读者通过调用OpenPeFile打开一个PE文件时,则下一步我们需要实现对PE文件有效性及位数判断,并以此作为参考在后续解析中使用不同变量长度...IMAGE_NT_HEADERS结构定义,IMAGE_NT_HEADERSPE文件格式一部分,它包含了PE头和可选头信息,用于描述PE文件结构和属性。...其中,IMAGE_NT_SIGNATURE用于标识该文件是否有效PE文件,IMAGE_FILE_HEADER则用于描述可执行文件基本结构信息,包括机器类型、段数量、时间戳、符号表指针、符号表数量

31710

2.2 PE结构:文件头详细解析

从DOS文件头IMAGE_DOS_HEADERe_lfanew字段向下偏移003CH位置,就是真正PE文件位置,该文件头是由IMAGE_NT_HEADERS结构定义,IMAGE_NT_HEADERS...如上图所示,图中4D5A则表示这是一个PE文件,其下08010000则代表DOS头最后一个数据集e_lfanew字段,该字段指向了PE开始50450000用于表示NT头其实位置,而途中英文单词则是一个历史遗留问题...则指明了PE文件开头位置,现在来说除了第一个字段和最后一个字段有些用处,其他字段几乎已经废弃,当读者通过调用OpenPeFile打开一个PE文件时,则下一步我们需要实现对PE文件有效性及位数判断,并以此作为参考在后续解析中使用不同变量长度...IMAGE_NT_HEADERS结构定义,IMAGE_NT_HEADERSPE文件格式一部分,它包含了PE头和可选头信息,用于描述PE文件结构和属性。...其中,IMAGE_NT_SIGNATURE用于标识该文件是否有效PE文件,IMAGE_FILE_HEADER则用于描述可执行文件基本结构信息,包括机器类型、段数量、时间戳、符号表指针、符号表数量

40130

Win32汇编:汇编版PE结构解析器

; DOS代码入口IPmovzx eax,[esi].e_lfanew ; 指向了PE文件开头(重要)第一个字段e_magic被定义为MZ,标志着DOS文件开头部分,最后一个字段e_lfanew...则指明了PE文件开头位置,现在来说除了第一个字段和最后一个字段有些用处,其他字段几乎已经废弃了,这里也不再介绍了.解析PE头结构从DOS文件e_lfanew字段(文件头偏移003ch),PE文件格式排列在...DOS头后面,也就是e_lfanew指针所指向地址,而PE文件第一个字节就是PE这两个字符,有了这些信息,我们就可以写一个小工具,来检测指定一个程序是否是可执行文件啦..dataszFileName...文件是否有效,是否是一个正常PEmov esi,lpMemoryassume esi:ptr IMAGE_DOS_HEADER; 判断是否为DOS文件头部.if [esi].e_magic == IMAGE_DOS_SIGNATUREadd...esi,[esi].e_lfanew ; 递增指针assume esi:ptr IMAGE_NT_HEADERS; 判断是否PE可执行文件.if [esi].Signature

26420

PE格式:手写PE结构解析工具

我们需要编程实现读取PE结构,在读取PE文件数据前提下,我们先来打开文件,然后才能读取。...则指明了PE文件开头位置,现在来说除了第一个字段和最后一个字段有些用处,其他字段几乎已经废弃了,这里附上读取DOS头代码。...e_lfanew字段向下偏移003CH位置,就是真正PE文件位置,该文件头是由IMAGE_NT_HEADERS结构定义,定义结构如下: typedef struct _IMAGE_NT_HEADERS...读取NT文件头: 第1个函数用于判断是否为可执行文件,第2个函数用于读取PE文件头信息。...和FirstThunk字段指向两个同样IMAGE_THUNK_DATA数组,由于要导入4个函数,所有数组中包含4个有效项目并以最后一个内容为0项目作为结束。

97420

PE格式:手写PE结构解析工具

,PE文件头被放置在节和节表前面,上面介绍是真正PE文件,为了兼容以前DOS系统,所以保留了DOS文件格式,接下来将依次介绍这几种数据结构.我们需要编程实现读取PE结构,在读取PE文件数据前提下...则指明了PE文件开头位置,现在来说除了第一个字段和最后一个字段有些用处,其他字段几乎已经废弃了,这里附上读取DOS头代码。...字段向下偏移003CH位置,就是真正PE文件位置,该文件头是由IMAGE_NT_HEADERS结构定义,定义结构如下:typedef struct _IMAGE_NT_HEADERS {...读取NT文件头: 第1个函数用于判断是否为可执行文件,第2个函数用于读取PE文件头信息。...和FirstThunk字段指向两个同样IMAGE_THUNK_DATA数组,由于要导入4个函数,所有数组中包含4个有效项目并以最后一个内容为0项目作为结束。

1.5K20

PE文件结构

DOS头 每一个PE文件都是以一个DOS程序开始,一旦程序在DOS下执行,DOS就能识别出这是有效执行体,然后运行DOS stub(DOS块)。...DOS stub其实就是一个有效EXE,如果OS是不支持PE文件,那么它将显示为一个错误提示 对于DOS头信息我们只需要关注两个字段即可:e_magic和e_lfanew,e_magic字段(一个字大小...这里是 0x000000D0,也就代表偏移0xd0处是NT头开始位置 NT头(内容多) 有三个成员:PE签名、PE文件头、PE可选头 1、NT头结构信息-PE签名 在一个有效PE文件里,Signature...这个值也通常被用来判断是否为标准PE文件。...使用Stud_PE查看文件可选头结构如下 我们只对这些字段做解释分析。

13810

IAT 三连之什么是 IAT?

在 Hook 操作中也有相应 IAT 钩子…… IAT 数据结构 今天我们目的是找出一个 PE 文件中所有的 DLL 以及每个 DLL 导入函数并通过编程体会这一过程,先用一张图介绍一下 PE...函数返回 dosHeader = (IMAGE_DOS_HEADER*)lpBase; //检测是否有效PE文件 if (dosHeader->e_magic !...//判断是否是一个有效win32文件 if (ntHeader->Signature !...上述形态字符串都可以再加一个 b 字符,如 rb、w+b 或 ab+ 等组合,加入 b 字符用来告诉函数库打开文件为二进制文件,而非纯文字文件。...) 元素个数(nitems) 提供数据文件指针(stream) 思路如下: 我们可以通过 fopen() 打开相应 PE 文件,接着调用 fseek() 函数并设置相应偏移,最后调用 fwrite

1.5K10

PE文件小知识

其中我们最常见是exe和dll,那么它们两个有什么区别呢,exe和dll区别完全是语义上,他们使用完全相同PE格式。唯一区别就是用一个字段标识出这个文件是exe还是dll。...结构选择依赖于用户正在编译模式(尤其_WIN64是否被定义)。...DOS stub其实就是一个有效EXE,如果OS是不支持PE文件,那么它将显示为一个错误提示 对于DOS头信息我们只需要关注两个字段即可:e_magic和e_lfanew,e_magic字段(一个字大小...1.6.2 NT头 有三个成员:PE签名、PE文件头、PE可选头 A、NT头结构信息-PE签名 在一个有效PE文件里,Signature字段被设置为00004550h,ASCII码字符是“PE00”...这个值也通常被用来判断是否为标准PE文件

9510

Win32汇编:汇编版PE结构解析器

指向了PE文件开头(重要)第一个字段e_magic被定义为MZ,标志着DOS文件开头部分,最后一个字段e_lfanew则指明了PE文件开头位置,现在来说除了第一个字段和最后一个字段有些用处,其他字段几乎已经废弃了...◆PE头结构◆从DOS文件e_lfanew字段(文件头偏移003ch),PE文件格式排列在DOS头后面,也就是e_lfanew指针所指向地址,而PE文件第一个字节就是PE这两个字符,有了这些信息...,我们就可以写一个小工具,来检测指定一个程序是否是可执行文件啦..dataszFileName db "lyshark.exe",0hhFile dd ?...文件是否有效,是否是一个正常PEmov esi,lpMemoryassume esi:ptr IMAGE_DOS_HEADER; 判断是否为DOS文件头部.if [esi].e_magic == IMAGE_DOS_SIGNATUREadd...esi,[esi].e_lfanew ; 递增指针assume esi:ptr IMAGE_NT_HEADERS; 判断是否PE可执行文件.if [esi].Signature

32020

免杀基础之一文学废PE文件格式

我们知道知道CPU只认识二进制数,所以可执行文件保存在磁盘中都是以二进制数保存,不过为了查看,所以市面上编辑器都是用16进制显示,比如下面这样,使用010Editer打开一个PE文件PE文件结构如下...当我们程序运行在DOS系统时候,就会运行DOS存根中代码,代码内容就是输出一段字符串告诉用户,这个程序不能在16位系统运行。...: 第一个成员e_magic,作为判断是否PE文件一个表示,如果不是"MZ"(16进制0x5A4D),那就不是PE文件,如果是还要看PE头标识。...Signature表示是否PE,vs中有一个宏来定义它: PE头其实由两部分组成,一个是标准PE文件头,一个是可选头。...FOA:File Offset Address ,文件偏移地址 某个位置距离文件偏移 Subsystem: 可执行文件期望子系统值,宏定义如下: 通过C++打印相关成员,在监视中,我们也能看到相关成员属性值

1.3K20

PE文件格式详解,第二讲,NT头文件格式,以及文件头格式

,生成最小PE(不通用) 首先我们要知道PE区在哪里,以及怎么使内存对齐缩小,不至于让PE很大....首先看下我们标准PE格式二进制.(使用Winhex,或者010 Editor都可以) ? 可以看出,生成时候默认会为我们生成.const常量区,那么我们可以让它和代码区合并吗?...不过这样写还要另外加选项,不能保证她是否是能运行,不通用,所以使用标准pe讲解  二丶NT头 首先看下NT头和文件结构体....//机器型号,作用是区别这个exe是哪个CPU可以跑.重要....SizeOfOptionalHeader;          //可选头大小,这个字段很重要.因为要通过这个字段,才知道可选头是多大,而不懂PE的人求选项头都是用sizeof()求出来.所以真正选项头大小要靠这个字段

73360

五十四.恶意软件分析 (6)PE文件解析及利用Python获取样本时间戳详解

(参考文献见后) 你是否想过如何判断PE软件或APP来源哪个国家或地区呢?你又想过印度是如何确保一键正确卸载中国APP呢?使用黑白名单吗?...PE文件格式总体结构 接着让我们来欣赏下PE文件格式总体结构图,包括:MZ头部、DOS stub、PE文件头、可选文件头、节表、节等。 本文第二部分我们将对PE文件格式进行详细解析。...代码植入 控制权获取 图标更改 Hook … PE文件解析常用工具包括: PEView:可按照PE文件格式对目标文件字段进行详细解析。...Stud_PE:可按照PE文件格式对目标文件字段进行详细解析。 Ollydbg:可跟踪目标程序执行过程,属于用户态调试工具。...最后欢迎大家讨论如何判断PE软件或APP来源哪个国家或地区呢?印度又是如何确保一键正确卸载中国APP呢?未知攻,焉知防。加油~ 感谢大家2023年支持和关注,让我们在2024年继续加油!

79810

三十四.恶意代码检测(4)编写代码自动提取IAT表、字符串及时间戳溯源地区

文章同时也普及了PE文件分析和APT溯源相关基础,基础性文章,希望对您有所帮助~ 你是否想过如何判断PE软件或APP来源哪个国家或地区呢?你又想过南亚如何确保一键正确卸载中国APP呢?使用黑白名单吗?...PE文件格式总体结构 接着让我们来欣赏下PE文件格式总体结构图,包括:MZ头部、DOS stub、PE文件头、可选文件头、节表、节等。 本文第二部分我们将对PE文件格式进行详细解析。...代码植入 控制权获取 图标更改 Hook … PE文件解析常用工具包括: PEView:可按照PE文件格式对目标文件字段进行详细解析。...Stud_PE:可按照PE文件格式对目标文件字段进行详细解析。 Ollydbg:可跟踪目标程序执行过程,属于用户态调试工具。...偏移3cH处字段Offset to New EXE Header,指示“NT映象头偏移地址”,其中000000B0是NT映象头文件偏移地址,定位PE文件头开始位置,用于PE文件合法性检验。

1.3K20

PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头2

OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;         该结构给出了PE文件结构体布局,但是切记,这仅仅是布局。...我们千万不要想当然认为直接从PE头部开始将IMAGE_NT_HEADERS32(64)结构体大小数据拷贝到该结构体对象中。...原因在《可选文件头1》做了介绍,IMAGE_FILE_HEADER中字段SizeOfOptionalHeader指定了该文件中保存“可选文件头”真实长度,我们应该根据该元素来给IMAGE_OPTIONAL_HEADER32...可能有人会记起,我们在《可选文件头1》中介绍了判断文件是32位还是64位方法,我们是否可以通过该判断结果来判断是哪种结构体呢?...切记PE32和PE32+和这个文件是32位文件还是64位文件是没有关系!它们是两种不同概念!切记要分清。

1.1K30
领券