pe文件的文件格式

pe文件的文件格式,第1张

A.DOS STUB和DOS头

DOS插桩程序在大多数情况下由汇编器/编译器自动产生.通常它调用INT 21H服务9来显示上述字符串.可以通过IMAGE_DOS_HEADER结构来识别一个合法的DOS头.这个结构的头两个字节肯定是MZ.可通过该结构的e_lfanew成员来找到PE文件的开始标志.MS-DOS头部占据了PE文件的头64个字节.在微软的WINNT.H中可以找到其内容结构的描述. 在DOS STUB后是PE文件头(PE header).PE文件头是PE相关结构IMGAE_NT_HEADERS的简称,即NT映像头,存放PE整个文件信息发布的重要字段,包含了PE装载器用到的重要域.执行体在 *** 作系统中执行时,PE装载器将从DOS MZ头中找到PE头文件的起始偏移量e_lfanew,从而跳过DOS STUB直接定位真正的PE文件.它由3部分组成:

(1)PE文件标志(4H字节)

PE文件标志0x50450000即PE00,标志着NT映像头的开始,也是PE文件中与windows有关内容的开始.

(2)映像文件(14H字节)

是NT映像文件的主要部分,包含PE文件的基本信息

(3)可选映像头

包含PE文件的逻辑分布信息.

C.节表

节表其实是紧跟NT映像文件的一个结构数组.其成员数目由映像文件头结构NumberOFSectios域的值来决定.

D.节

PE文件的真正内容划分为块,称之为节.节的划分基于各组数据的共同属性.惟有节的属性设置决定了节的特性和功能.典型的windows NT应用程序可以具有9个节:.texr,.bss.rdata,.data,.rsrc,edata,idata,pdata,.debug

判断一个文件是否为PE文件

var //检测指定文件是否有效PE文件

PEDosHead: TImageDosHeader

PENTHead: TImageNtHeaders

m_file: integer

begin

Result := False

m_file := FileOpen(filename, fmOpenRead or fmShareDenyNone)//只读和其它任意

if m_File >0 then

try

FileSeek(m_file, 0, soFromBeginning)//将指针挪至文件头

FileRead(m_file, PEDosHead, SizeOf(PEDosHead))//读PEDosHead结构

FileSeek(m_file, PEDosHead._lfanew, soFromBeginning)//将指针挪至_lfanew

FileRead(m_file, PENTHead, SizeOf(PENTHead))//读PENTHead结构

finally

FileClose(m_file)

end

if (PENTHead.Signature = IMAGE_NT_SIGNATURE) then //检验文件头部第一个字的值是否等于 IMAGE_DOS_SIGNATURE

Result := True

end

pe文件结构图

1 下载ultralISO(软碟通)软件,并安装;

2 到“msdn”网站下载原版windows系统镜像文件(ISO格式);

3 将U盘插好启动软碟通,打开刚下载的系统镜像文件,将其刻录到U盘中(U盘选择FAT32文件系统);

4到需要安装系统的电脑上,插好U盘;

5开机,使用启动设备选择菜单选择从U盘启动;开始安装系统。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11615926.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存