初识文件dos头pe头cunren

PE(Portable Executable),即可移植的执行体。

Linux平台:ELF(Executable and Linking Format)文件结构。

一般在Windows平台下,所有的可执行文件诸如:exe、dll、sys、ocx、com等均适用PE文件结构。这些使用PE文件结构也被称为PE文件。

PE 结构是由若干个复杂的结构体组合而成的,不是单单的一个结构体那么简单,它的结构就像文件系统的结构是由多个结构体组成的。

PE 结构包含的结构体有 DOS 头、PE 标识、文件头、可选头、目录结构、节表等。

1.通过导入文件到c32asm等工具,观察MZ头。

2.通过lordpe等工具。

从 数据管理的角度来看,可以把 PE 文件大致分为两部分,DOS 头、PE 头和节表属于 PE 文件的数据管理结构或数据组织结构部分,而节表数据才是 PE 文件真正的数据部分,其中包含着代码、数据、资源等内容。

从PE结构图中可以看出,PE 结构主要分为 4 大部分(DOS头、PE头、节表、节表数据),其中每个部分又进行了细分,存在若干个小的部分。

无论是32位或64位可执行文件,其文件的头部必定是IMAGE_DOS_HEADER.

IMAGE_DOS_HEADER 数据结构定义如下:

而DOS头又分两部分:

MZ文件头和Dos Stub。

MZ文件头:IMAGE_DOS_HEADER 结构体,其大小占64个字节,并且该结构中的最后一个LONG类型e_lfanew成员指向PE文件头的位置为中的PE文件头标志的地址。

这里有两个比较有用的成员信息:

1、e_magic,用于判断PE文件的标识。如果不是MZ即不是十六进制值:0x5A4D。计算机存储顺序是低位在前高位在后,所以存储为:0x4D5A。

2、e_lfanew,这里是指pe的偏移量,用于找到pe头的位置。

如下阴影区域:

DOS stub:dos存根,在IMAGE_DOS_HEADER和IMAGE_NT_HEADERS之间存在一DOS存根,这其实是一段汇编代码:

PE文件是运行在32位或64位操作系统下的。

其功能是当该EXE运行在16位环境下,输出一段文字:“This program cannot be run in DOS mode”,然后并退出该进程。

在pe文件利用的时候,我们可以把payload写入到当前区域,诸如存放我们的shellcode,在读取时,获取dos头字节数,减去MZ头字节数,即为dos存根字节大小。然后拿去操作加载shellcode等。

IMAGE_NT_HEADER数据结构定义:

参数具体含义:

将文件标识为 PE 映像的 4 字节签名。字节为“PE\0\0”。这个字段是PE文件的标志字段,通常设置成00004550h,其ASCII码为PE00,这个字段是PE文件头的开始,前面的DOS_HEADER结构中的字段e_lfanew字段就是指向这里。

这个字段也是包含几个字段结构,它包含了PE文件的一些基本信息,最重要的是其中一个域指出了IMAGE_OPTIONAL_HEADER的大小。

在PE文件头的后面,1234567个框分别对应_IMAGE_FILE_HEADER结构的七个参数位置以及各自的值。我们需要判断运行平台,就可以通过第一个参数位置的值来判断。

上述e_lfanew中,可以在下图中看到,e_lfanew的值为0080,这里可以看到PE头就在0080h。

常见标识如下,比如这里的014c,就是在Intel I386机器上运行。

机器 标识

Intel I386 14ch

MIPS R3000 162h

Alpha AXP 184h

Power PC 1F0h

MIPS R4000 184h

2)NumberOfSection,标识区块的数目,关于区块后面会详细讲。

3)TimeDateStamp

4)PointerToSymbolTable。这个字段用的比较少,略

5)NumberOfSymbol。这个字段也用得很少,略

6)SizeOfOptionalHeader:紧跟着IMAGE_FILE_HEADER后面的数据大小,这也是一个数据结构,它叫做IMAGE_OPTIONAL_HEADER,其大小依赖于是64位还是32位文件。32位文件值通常是00EOh,对于64位值通常为00F0h。

7)Characteristics:文件属性,普通EXE文件这个字段值为010fh,DLL文件这个字段一般是0210h。

这个结构是IMAGE_FILE_HEADER结构的补充。这两个结构合起来才能对整个PE文件头进行描述。左边的16位字符表示相对于文件头的偏移量。

这里总共31个字段。通常用的就是加*字段。

这里可以知道我们确定的PE文件头在0080h处,通过偏移计算,我们可以得到IMAGE_OPTIONAL_HEADER结构的的首个字段在80h+18h=98h的地方。这里直接通过c32asm跳转到对应位置。如图所示:

然后比较重要的就是最后一个成员,即数据目录表,大小为16,每个元素都是一个IMAGE_DATA_DIRECTORY结构体,这里看到是一个数组类型。

它的定义如下:

在winnt.h中的定义:

在这个数据目录结构体中只有两个成员VirtualAddress和Size,这两个成员的含义比较简单,VirtualAddress指定了数据块的相对虚拟地址(RVA)。Size则指定了该数据块的大小,有时并不是该类型数据的总大小,可能只是该类型数据一个数据项的大小。这两个成员(主要是VirtualAddress)成为了定位各种表的关键,所以一定要知道每个数组元素所指向的数据块类型,以下表格就是它的对应关系:

下面是DataDirctory[16]即数据目录表的各个成员

对于安全人员来说,通常需要了解比较重要的导出表和导入表。这里放在下篇学习。

THE END
0.PE文件格式详细解析(一)pe格式本文深入解析Windows下的PE文件格式,包括PE文件的种类、位置标识、整体结构等内容,并通过WinHex和PEtools等工具进行实例演示。 PE文件格式详细解析 本篇文章将会详解Windows操作平台下PE文件格式,同时以具体的示例辅佐大家更好理解PE文件格式。本文章主要使用到以下两个工具:WinHex:用于将PE文件以16进制和ASCII码显示;PEjvzquC41dnuh0lxfp0tfv8|gkzooa=<976>:68ftvkimg8igvcomu864336:;>5
1.PE文件结构详解本文深入解析PE文件结构,包括DOS头部、PE头部、节表、节数据等内容,阐述PE文件在磁盘与内存中的状态差异,以及如何利用PE文件进行代码修改、节的扩展与合并等高级操作。 PE 视频学习 1.认识PE 首先,先介绍什么是可执行文件(executable file):可以由操作系统进行加载执行的文件 jvzquC41dnuh0lxfp0tfv8vsa7764:7421gsvrhng1jfvjnnu1734997:9>
2.PE文件结构详解针对在硬盘上存储文件中的地址,称为原始存储地址或物理地址,表示距离文件头的偏移。 针对加载到内存以后映象中的地址,称为相对虚拟地址(RVA),表示相对内存映象头的偏移。 RVA 是当PE 文件被装到内存中后,某个数据位置相对于文件头的偏移量。 举个例子:如果 Windows 装载器将一个PE 文件装入到 00400000h 处的内jvzquC41z|4bnr~wp0ipo8sgyu524;;9
3.PE文件整体结构介绍吾爱破解1、本文章使用的将PE文件编译为十六进制字节码格式用的是C32Asm,但大家实际操作还是推荐使用WinHex,工具均取自于爱盘。2、这篇文章主要是讲PE文件的整体结构,还有数据目录表没有具体讲解,数据目录之后会以单独的形式一个个讲解。PE文件是可移植的可执行的文件,什么是可执行文件?可执行文件是为进程创建所服务的,jvzquC41yy}/7;uqlkk/ew4vjtkbf6698796966/30nuou
4.PE文件详解(C制作PE格式解析器)pe文件解析器本文介绍了PE文件的基本结构,包括DOS头部、PE文件头、节表等,并深入探讨了导入表和导出表的工作原理。此外,还提供了一个使用C语言编写的简易PE文件解析器示例。 0x00:前言 PE文件可以说是在逆向的各个领域都有涉及,特别是病毒领域,如果你是一名病毒制造者,那你肯定是对PE文件有详细的了解,那么这里我就详细介绍一jvzquC41dnuh0lxfp0tfv8HjctrfuPtfZ1gsvrhng1jfvjnnu1>97B<625
5.PE文件格式分析pe文件格式详解本文详细解析了PE文件的基本概念、结构分析、区块对齐、文件偏移与RVA转换、输入表与输出表、基址重定位等核心内容,提供了深入理解PE文件的全面指南。 一、PE的基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任何jvzquC41dnuh0lxfp0tfv8xjkvjci8ftvkimg8igvcomu89;95:5;>
6.PE文件格式详细解析(二)pe头的大小本文深入解析PE文件结构,包括NT头、可选头、节区表等关键组件,揭示PE文件如何组织代码与数据。 3.PE文件的结构 3.2 NT头 由一个IMAGE_NT_HEADERS结构组成,该结构中包含了PE文件被载入内存时需要用到的重要域。通过DOSheader中的e_lfanew,可以直接定位到真正的PE Header部分。该结构体的大小为0xf8字节。 jvzquC41dnuh0lxfp0tfv8|gkzooa=<976>:68ftvkimg8igvcomu86433715@:
7.PE文件结构解析DOS Stub(存根)实际上是个有效的 MS-DOS .EXE 或者.COM 程序(如果文件格式不对会报错),在不支持 PE文件格式的操作系统中,它将通过简单调用中断21h服务9来显示字符串"This program cannot run in DOS mode"或者根据程序员自己的意图实现完整的 DOS 代码。它的大小一般不能确定。利用链接器(linker)的 /STUB:fijvzquC41dnuh0lxfp0tfv8~i{cthi~fpi1gsvrhng1jfvjnnu1;33?;:4
8.PE文件结构详解快速的计算方法是从文件的偏移0x3C(第59字节)处获得一个4字节的PE文件签名的偏移地址,这个偏移地址就是本文所定义的DOS头的大小。NT头在32位系统是244字节,在64位系统是260字节。节头的大小由NT头的第1部分的NumberOfSections(节的数量)*40字节(每个节头是40字节)得出。如此,DOS头、NT头、节头3个头的大小jvzquC41dnuh0lxfp0tfv8vkokthaƒmcpi5bt}neng5eg}fknu5859>;2;
9.C++PE文件格式解析类(轻松制作自己的PE文件解析器)pe文件绑定(c++本文介绍了一个用C++封装的高效PE文件格式解析类,提供了丰富的接口函数,便于理解和使用。适用于学习PE文件结构及开发PE文件解析软件。 PE是Portable ExecutableFileFormat(可移植的执行体)简写,它是目前Windows平台上的主流可执行文件格式。 PE文件中包含的内容很多,具体我就不在这解释了,有兴趣的可以参看之后列出的参考jvzquC41dnuh0lxfp0tfv8ucuenfp8ftvkimg8igvcomu8:286654:
10.Windows基础知识PE结构之初始PE当执行体在支持PE文件结构的操作系统中执行时,PE装载器将从IMAGE_DOS_HEADER结构的e_lfanew字段里找到NT头的起始偏移量,用其加上基址,得到PE文件头的指针。 在C++中Signature会被预处理为IMAGE_NT_SIGNATURE #define IMAGE_NT_SIGNATURE 0x00004550// PE00 FileHeader 文件头,表现jvzquC41z|4bnr~wp0ipo8sgyu526=98
11.有效利用PE文件内部空间植入用户程序windowspe广告应用植入本文介绍了一种利用PE文件内部空间植入用户程序的方法。通过在PE文件的节间空隙存储额外代码,实现代码的隐蔽植入。该技术适用于寄生型病毒程序,能够有效避免因文件体积增大而被轻易检测。 【文章标题】: 有效利用PE文件内部空间植入用户程序 【文章作者】: 空手剑客 jvzquC41dnuh0lxfp0tfv8hpalkwqwx1ctzjeuj1fgzbkux143624A<
12.PE文件查看器(PeViewer)电脑版下载2025最新文件分割口碑排行榜 PDF猫分割合并软件 小说分割器(TXT文本) peview.exe Ultra Video Splitter 下载服务协议见页面底部 基本简介 PE文件查看器(PeViewer)是一款强大的PE文件查看器,PeViewer作为国人研制开发十分的强大并便捷,下载使用这款PeViewer文件,可以任意的dll等文件,马上下载PeViewer吧。 jvzq<84yyy4ppunpgfuxp7sgv1yph}4;997777mvo
13.LordPE下载LordPE(PE文件编辑器)v1.4绿色汉化版下载LordPE v1.4绿色汉化版是一款非常好用PE文件编辑工具,winwin7小编听闻该软件在网上享有“最好的PE文件修改工具”的称号!LordPE是一款相当专业功能强大的pe文件修改器工具,支持用户快速方便的修改pe文件,并且软件是完全汉化的,我们使用起来也完全不会因为不懂英文而烦恼,如有需要的用户快来下载这款反编译预处理的利器jvzq<84yyy4xkw|kp94dqv4uqhz06<950jznn
14.逆向基础PE文件结构windowspe结构本文详细介绍了PE文件的结构,包括DOS头、NT头、文件头、可选PE头、区段头等关键部分,并通过代码示例展示了如何解析这些头信息。同时,解释了PE文件在Windows平台上的执行过程,如DOS头的兼容性、PE头的标志、可选PE头中的入口点和内存基址等。此外,还涵盖了导出表、导入表、重定位表和TLS(线程局部存储)的概念及其jvzquC41dnuh0lxfp0tfv8FrrYnjvndUvcx0c{ykenk0fnyckny03;;295:18
15.pe文件结构PE文件的全称是Portable Executable,意为可移植的可执行文件,是微软Windows操作系统上广泛使用的程序文件格式(包括间接被执行的文件,如DLL)。PE文件被称为“可移植的”是因为在所有平台(如x86、Alpha、MIPS等)上实现的Windows NT及其后续版本(如Windows 95、Windows 2000、Windows XP、Windows Vista、Windows 7、WindowsjvzquC41dnuh0lxfp0tfv87525e93:;757>0c{ykenk0fnyckny03=5992>56
16.深入解析WindowsPE文件结构及其关键组成部分本文详细介绍了WindowsPE文件的基本概念,包括PE文件头、DOS头部、区块数据、虚拟地址和RVA等关键部分,展示了PE文件的内存映射和地址转换机制,以及如何通过API获取模块信息。 部分PE文件结构 一.PE文件基本概念 ​ PE文件是windows系统中遵循PE结构的文件,比如以.exe .dll .ocx .sys .com为后缀名的文件以及系统驱动jvzquC41dnuh0lxfp0tfv8r2a9;36<8841gsvrhng1jfvjnnu1748@76;6;
17.PE文件(一)PE结构概述PE文件(一)PE结构概述 本文详细介绍了Windows操作系统下的PE结构文件,包括.exe文件的内存分配、虚拟内存、PE文件的节和节表、DOS头与NT头的作用,以及编译器对文件对齐的影响。展示了不同操作系统文件结构的区别,以及如何手动解析PE文件的DOS头和NT头。 PE结构简述jvzquC41dnuh0lxfp0tfv87523e8:A8:86=0c{ykenk0fnyckny03<<;5;827
18.详解PE文件(一):PE文件基础概念详解PE文件(一):PE文件基础概念 PE(Portable Executable)文件格式是Windows操作系统中用于可执行文件(.exe)、动态链接库(.dll)和系统驱动程序(.sys)的标准文件格式。它是Windows平台上软件执行的基础,理解PE文件格式对于系统编程、逆向工程、恶意软件分析和软件安全等领域都很重要。jvzquC41dnuh0lxfp0tfv8lggukiq€ftf461294ctvodnn4fgvgjn|4376=53@55
19.PE文件格式详解:深入理解Windows可执行文件结构// 执行PE文件时,PE装载器先创建进程,再将文件载入内存,// 然后把EIP寄存器的值设置为ImageBase+AddressOfEntryPoint''// PE文件的Body部分被划分成若干节段,这些节段储存着不同类别的数据。'DWORD SectionAlignment;'// SectionAlignment指定了节段在内存中的最小单位, -> 00 00 10 00'DWORD FileAlignment;'//jvzquC41dnuh0lxfp0tfv8|gkzooa?75;3=478ftvkimg8igvcomu86676;82B7
20.PE文件结构剖析基本结构pe结构主模块基址PE文件衍生于早期建立的COFF文件格式,EXE和DLL文件实际上用的是同一种文件格式,唯一的区别就是用一个字段标识出这个文件是EXE还是DLL。64位Windows格式为PE32+。只是简单的将以前的32位字段扩展到64位。 重要要点 要认识到PE文件不是作为单一内存映射文件被装入内存的。 jvzquC41dnuh0lxfp0tfv8vsa669;9<781gsvrhng1jfvjnnu1>3:>>9;;