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

PE结构-DOS

DOS部首 DOS部首结构 其结构分为两部分: DOSMZ’ HEADER 其在c中定义的结构体为_IMAGE_DOS_HEADER DOS sub DOS MZDOS MZ头在C语言中所定义的结构体为...: 定义于winnt.h typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic;..., *PIMAGE_DOS_HEADER; 分析_IMAGE_DOS_HEADER成员 DOS头的存在,是为了往下兼容在低版本DOS系统上运行,所以该部分主要用于DOS系统 目前在32/64位Windows...操作系统中还有效的成员只有两个 第一个成员:e_magic (WORD 2字节) 用于识别文件是否为PE格式文件 值固定为4d 5a (MZ) 最后一个成员: e_lfanew (LONG 4字节)...e_magic、e_lfanew之外的DOS部首成员选中清零 图片 另存为新文件后仍能正常使用,确认DOS部首其他值已在Windows平台弃用。

17920

PE文件和COFF文件格式分析--MS-DOS 2.0兼容Exe文件段

可以发现IMAGE_DOS_HEADER结构中e_magic对应的数据位0x5A4D(MZ),e_lfanew对应的是0x000000E0。这个两个数据是这个结构体中最需要关心的两个成员变量。...我们这个MS-Dos 2.0兼容EXE文件头中的幻数MZ也是纪念他的发明者,可以想到,这个名字应该不是盖茨,因为MZ和Bill Gates(BG)一点也没关系,也不是Paul Allen(PA),更不可能是销售出生的...那么为什么PE格式文件会有个Dos文件头呢?Dos系统时代,有两种(我所知道的,我压根没经历过那个年代)可执行文件格式,一种是.exe为后缀的文件,其结构是MZ格式。...从Wiki上对MZ格式的介绍可以看出来,MZ格式要比COM格式要新,MZ格式头中包含了重定向信息(本文第一个图中),且其支持可执行体大于64KiB。...于是我们PE可执行文件一开始处便插入了一个MS-Dos 2.0兼容Exe文件头,Dos系统加载我们PE文件时,从一开始读取我们文件,发现是“DOS下可执行程序”,于是成功且顺利的执行我们的程序中DOS

1.3K40
您找到你想要的搜索结果了吗?
是的
没有找到

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

PE格式中的DOS部分由MZ格式的文件头和可执行代码部分组成,可执行代码被称为DOS块(DOS stub).MZ格式的文件头由IMAGE_DOS_HEADER结构定义,以下就是DOS头部分的关键属性....mov esi,lpMemory assume esi:ptr IMAGE_DOS_HEADER movzx eax,[esi].e_magic ; 读取DOS的头部 movzx...e_lfanew ; 指向了PE文件的开头(重要) 第一个字段e_magic被定义为MZ,标志着DOS文件的开头部分,最后一个字段e_lfanew则指明了PE文件的开头位置,现在来说除了第一个字段和最后一个字段有些用处...UnmapViewOfFile,addr lpMemory invoke ExitProcess,NULL main ENDP END main 上面的核心代码原理也非常的简单,过程:读入文件,判断第一个字符是不是MZ...,如果是MZ,则在判断e_lfanew指针指向的地址是不是PE如果是,则说明这是PE文件.

25440

PE知识复习之PE的两种状态

从下面依次网上看.可以得出PE结构 其中DOS头有DOS头结构 也就是 IMAGE_DOS_HEADER 关于结构体的各项属性.前边已经写过了.本系列博客就是加深PE印象.理解复杂的原理....224个字节 十六进制 0xE0 IMAGE_SECTION_HEADER 40个字节 十六进制 0x28 二丶学习DOS头 根据上面得到DOS头所占用大小是0x40....也就是说一个按照16进制为一行的PE文件.4行正好就是一个DOS头大小. 例如: 使用Winhex查看. ? DOS结构体重要的成员就两个. 1.MZ头 2.指向PE偏移....MZ头就是标出来的 4D 5A 大小是两个字节. 操作系统会以检查这个标识.判断是否是PE文件. PE偏移 0x00000138 大小是4个字节.指向PE头....NT头中的PE标识.操作系统不光检查MZ 也检查PE. 三丶DOS stub Dos stub 大小是不确定的,他的大小是 PE头减掉 DOS头大小.其中成员都是Dos stub. ?

56760

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

部分由MZ格式的文件头和可执行代码部分组成,可执行代码被称为DOS块(DOS stub).MZ格式的文件头由IMAGE_DOS_HEADER结构定义,以下就是DOS头部分的关键属性.mov esi,lpMemoryassume...DOS代码段的初始堆栈段movzx eax,[esi].e_sp ; DOS代码段的初始堆栈指针movzx eax,[esi].e_cs ; DOS代码的入口地址...被定义为MZ,标志着DOS文件的开头部分,最后一个字段e_lfanew则指明了PE文件的开头位置,现在来说除了第一个字段和最后一个字段有些用处,其他的字段几乎已经废弃了,这里也不再介绍了.解析PE头结构从...UnmapViewOfFile,addr lpMemoryinvoke ExitProcess,NULLmain ENDPEND main上面的核心代码原理也非常的简单,过程:读入文件,判断第一个字符是不是MZ...,如果是MZ,则在判断e_lfanew指针指向的地址是不是PE如果是,则说明这是PE文件.解析各区块信息下面的代码,则用于读取PE文件的一些关键区块信息..386.model flat,stdcalloption

25720

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

,则系统一定会崩盘,为了避免这一情况的发生,PE文件的头部依然包括一个标准的DOS_MZ格式的可执行部分,这样万一在DOS下执行PE文件,那么系统会弹出一个提示This program cannot be...,这样不至于崩溃.PE格式中的DOS部分由MZ格式的文件头和可执行代码部分组成,可执行代码被称为DOS块(DOS stub).MZ格式的文件头由IMAGE_DOS_HEADER结构定义,以下就是DOS头部分的关键属性...指向了PE文件的开头(重要)第一个字段e_magic被定义为MZ,标志着DOS文件的开头部分,最后一个字段e_lfanew则指明了PE文件的开头位置,现在来说除了第一个字段和最后一个字段有些用处,其他的字段几乎已经废弃了...UnmapViewOfFile,addr lpMemoryinvoke ExitProcess,NULLmain ENDPEND main上面的核心代码原理也非常的简单,过程:读入文件,判断第一个字符是不是MZ...,如果是MZ,则在判断e_lfanew指针指向的地址是不是PE如果是,则说明这是PE文件.下面的代码,则用于读取PE文件的一些关键区块信息..386.model flat,stdcalloption casemap

30120

一个 Java 项目中的病毒

当项目加载完成以后,我打开了刚才报毒的那个文件,那个文件是一个第三方的 js 库文件,打开以后文件是空的。看来还是被查杀了! 我就只能去码云上查看这个文件,一看果然是有病毒。...在 Windows 下的可执行文件开头前两个字节的十六进制就是 4D5A,即 MZ 头。MZ 头是 DOS 时代的产物,那么这段很长的数据可能就是一个可执行文件的十六进制。...DOS 头和 PE 头清晰可见,然后从节区数据看到是加壳的。继续往下看,图下如: 文件结尾处的数据像是导入的 DLL 和 DLL 的导出函数,但是看这导入信息貌似也不全啊。...好吧,其实这样的事情是第二次遇到了(就是 Java 项目中存在这样被病毒感染的 js 文件或者 HTML 文件),对于 macOS 环境应该是无所谓了,但是 js 是浏览器端解析执行,用 Windows

21630

PE文件格式详解,第一讲,DOS头文件格式

一丶DOS头文件格式 我们看下结构体. typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic;..., *PIMAGE_DOS_HEADER; 可以看出,这个结构体中已经明确定义了各种DOS(16位年代的)头了....我们在32位年代下,主要要知道第一个成员和最后一个成员 第一个成员: 标志MZ,记录了MZ,占两个字节,这个是DOS系统作者的名字 最后一个成员: 这个成员主要记录了新的文件开始执行的地址位置....可以看出,在DOS头的位置,也就是成员 WORD e_lfarlc; 记录的是DOS的代码执行位置,这块区域属于DOS的代码执行区域 主要作用是,在16位系统下,不能运行32位程序,如果运行,则利用中断...,显示 This is Program cannot be run in Dos Mode (这个程序不能运行在DOS系统) 如果在32位系统下使用,那么这一段是没有任何作用的.DOS头只需要知道 第一个成员

82650

驱动开发:内核解析PE结构节表

可执行文件结构,这看上去有些奇怪,但是这对于可执行程序的向下兼容性来说却是不可缺少的,当然现在已经基本不会出现纯DOS程序了,现在来说这个IMAGE_DOS_HEADER结构纯粹是历史遗留问题。...DOS头结构解析: PE文件中的DOS部分由MZ格式的文件头和可执行代码部分组成,可执行代码被称为DOS块(DOS stub),MZ格式的文件头由IMAGE_DOS_HEADER结构定义,在C语言头文件...winnt.h中有对这个DOS结构详细定义,如下所示:typedef struct _IMAGE_DOS_HEADER { WORD e_magic;..., *PIMAGE_DOS_HEADER;在DOS文件头中,第一个字段e_magic被定义为MZ,标志着DOS文件的开头部分,最后一个字段e_lfanew则指明了PE文件的开头位置,现在来说除了第一个字段和最后一个字段有些用处...,其他字段几乎已经废弃了,这里附上读取DOS头的代码。

32600

驱动开发:内核解析PE结构节表

上面PE结构图中可知PE文件的开头部分包括了一个标准的DOS可执行文件结构,这看上去有些奇怪,但是这对于可执行程序的向下兼容性来说却是不可缺少的,当然现在已经基本不会出现纯DOS程序了,现在来说这个IMAGE_DOS_HEADER...DOS头结构解析: PE文件中的DOS部分由MZ格式的文件头和可执行代码部分组成,可执行代码被称为DOS块(DOS stub),MZ格式的文件头由IMAGE_DOS_HEADER结构定义,在C语言头文件...winnt.h中有对这个DOS结构详细定义,如下所示: typedef struct _IMAGE_DOS_HEADER { WORD e_magic;..., *PIMAGE_DOS_HEADER; 在DOS文件头中,第一个字段e_magic被定义为MZ,标志着DOS文件的开头部分,最后一个字段e_lfanew则指明了PE文件的开头位置,现在来说除了第一个字段和最后一个字段有些用处...,其他字段几乎已经废弃了,这里附上读取DOS头的代码。

20020

浅谈ddos的测试方式

DOS(denial of service--拒绝服务)攻击的目的是使服务正常功能不可用。不像其他类型的攻击的目的是获取敏感信息,Dos攻击是不会威胁到敏感信息而是使合法用户不能使用服务。...DOS与DDOS的区别 Dos是拒绝服务攻击,而DDOS是分布式拒绝服务攻击;Dos与DDOS都是攻击目标服务器、网络服务的一种方式。...Dos是利用自己的计算机攻击目标,也是一对一的关系,而DDOS是DoS攻击基础之上产生的一种新的攻击方式,利用控制成百上千台肉鸡,组成一个DDOS攻击群,同一时刻对目标发起攻击。...从技术上来说,DOS和DDOS都是攻击目标服务器的带宽和连通性,使得目标服务器的带宽资源耗尽,无法正常运行。 DOS的类型 DOS攻击可以分为两个大类,一个是应用层攻击一个网路层攻击。...测试工具: 1 mz http://www.perihel.at/sec/mz/ 命令:mz -A rand -B TARGET_DNS_SERVER -t dns "q=pentest.blog" -

2.3K00

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

一个DOS头通常会包含以下一些主要信息:图片Magic Number: 接下来64字节的文件内容的开始是以MZ(Mark Zbikowski)2个字符(即0x4D, 0x5A)开头,被称为DOS签名。...DOS头结束标识:保留用于以后增加的内容, 用于确认DOS头的结束,通常被赋值给字节0x0B。...DOS头结构时PE文件中的重要组成部分,PE文件中的DOS部分由MZ格式的文件头和可执行代码部分组成,可执行代码被称为DOS块(DOS stub),MZ格式的文件头由IMAGE_DOS_HEADER结构定义..., *PIMAGE_DOS_HEADER;在DOS文件头中,第一个字段e_magic被定义为MZ,标志着DOS文件的开头部分,最后一个字段e_lfanew则指明了PE文件的开头位置,现在来说除了第一个字段和最后一个字段有些用处...== NULL) return FALSE; // 将映射文件转为DOS结构,并判断开头是否为MZ pDosHead = (PIMAGE_DOS_HEADER)ImageBase

33230

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

一个DOS头通常会包含以下一些主要信息: Magic Number: 接下来64字节的文件内容的开始是以MZ(Mark Zbikowski)2个字符(即0x4D, 0x5A)开头,被称为DOS签名。...DOS头结束标识:保留用于以后增加的内容, 用于确认DOS头的结束,通常被赋值给字节0x0B。...DOS头结构时PE文件中的重要组成部分,PE文件中的DOS部分由MZ格式的文件头和可执行代码部分组成,可执行代码被称为DOS块(DOS stub),MZ格式的文件头由IMAGE_DOS_HEADER结构定义..., *PIMAGE_DOS_HEADER; 在DOS文件头中,第一个字段e_magic被定义为MZ,标志着DOS文件的开头部分,最后一个字段e_lfanew则指明了PE文件的开头位置,现在来说除了第一个字段和最后一个字段有些用处...== NULL) return FALSE; // 将映射文件转为DOS结构,并判断开头是否为MZ pDosHead = (PIMAGE_DOS_HEADER)ImageBase

26310

十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)

EXE文件格式: DOSMZ格式 WIndows 3.0:NE(New Executable)、16位Windows可执行文件格式 为什么要重点学习这种文件格式呢?...PE文件格式总体结构 接着让我们来欣赏下PE文件格式总体结构图,包括:MZ头部、DOS stub、PE文件头、可选文件头、节表、节等。 本文的第二部分我们将对PE文件格式进行详细解析。...比如,MZ头文件是定位PE文件头开始位置,用于PE文件合法性检测。DOS下运行该程序时,会提示用户“This Program cannot be run in DOS mode”。...MZ头部+DOS stub+PE文件头+可选文件头+节表+节 (1) 使用010Editor工具打开PE文件运行模板 该PE文件可分为若干结构,如下图所示。...(3) DOS插桩程序(040h-0afh) DOS Stub部分大小不固定,位于MZ文件头和NT映象头之间,可由MZ文件头中的Offset to New EXE Header字段确定。

5.1K52

APT之旅 - PE静态内容结构

DOS Header DOS Header 用于兼容早期的DOS系统,此结构中的 e_magic 必定等于"MZ",大小不固定,大多数结构没有用,只需要记住结构中的 e_lfranew 位指明了 NT...在 NT Headers 的结尾处就是 Section Headers 的起点,而 NT Headers 大小固定,因此从 DOS Header 的 e_magic("MZ") 位置出发很容易手工爬取到...PE 结构总结 整个程序从 offset=0 处即 DOS Header 到程序的最后一处 EOF 的所有块状区域经 File Alignment 对齐之后都是紧密贴合的没有任何空隙。...三、PE 解析器编写 根据之前的内容,我们需要读取一个 PE 文件内容,其返回指针就是 DOS Header 地址,然后根据 DOS Header->e_lfanew 获取到 NT Headers 地址...首先,编写一个函数读取 PE 文件: 读取到 PE 文件内容并保存到 pe_content 指针中,然后直接转换为 PIMAGE_DOS_HEADER 结构就是 DOS Header 了: 通过 DOS

20720

PE文件解析器的编写(二)——PE文件头的解析

= IMAGE_DOS_SIGNATURE) { return FALSE; } pNtHeader = (PIMAGE_NT_HEADERS)((DWORD)...在PE的DOS头结构中的e_magic结构保存的是’MZ’这个标志对应的16进制数是0x4d5a,另外在pe头中有一个Sinature成员保存了0x50450000这个值,它对应的字符是‘PE’只有满足这两个条件的文件才是一个正常的...获取DOS头和PE头 在之前我们说过,PE文件开始的位置是一个DOS头结构——IMAGE_DOS_HEADER STRUCT,它的第一个成员作为DOS头的标识,一般保存的都是‘MZ’,而它里面的e_lfanew...则保存真正的PE头所在的偏移 所在获取DOS头的时候简单的将前面的几个字节转化为这个结构即可,在寻址PE头的时候用e_lfanew成员加上文件的起始地址就可以得到PE头的地址。...具体对应的代码如下: pDosHeader = (PIMAGE_DOS_HEADER)pImageBase; pNtHeader = (PIMAGE_NT_HEADERS)((DWORD)(pDosHeader

1.2K20

PE格式:IATHook原理分析与代码编写

在早些年系统中运行的都是DOS应用,所以DOS头结构就是在那个年代产生的,那时候还没有PE结构的概念,不过软件行业发展到今天DOS头部分的功能已经无意义了,但为了最大的兼容性微软还是保留了DOS文件头,...有些软件在识别程序是不是可执行文件的时候通常会读取PE文件的前两个字节来判断是不是MZ。...图片上图就是PE文件中的DOS部分,典型的DOS开头ASCII字符串MZ幻数,MZ是Mark Zbikowski的缩写,Mark Zbikowski是MS-DOS的主要开发者之一,很显然这个人给微软做出了巨大的贡献...在DOS格式部分我们只需要关注标红部分,标红部分是一个偏移值000000F8h该偏移值指向了PE文件中的标绿部分00004550指向PE字符串的位置,此外标黄部分为DOS提示信息,当我们在DOS模式下执行一个可执行文件时会弹出...This program cannot be run in DOS mode.提示信息。

39100
领券