<b>关于PE可履行文件的改正</b>[VC/C++编程]
本文“<b>关于PE可履行文件的改正</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在windows 9x、NT、2000下,全部的可履行文件都是基于Microsoft计划的一种新的文件格局Portable Executable File Format(可移植的履行体),即PE格局.有一些时刻,我们需求对这些可履行文件举行改正,下面文字试图具体的描写PE文件的格局及对PE格局文件的改正.
1、PE文件框架构成
DOS MZ header
DOS stub
PE header
Section table
Section 1
Section 2
Section ...
Section n
上表是PE文件构造的总体层次分布.全部 PE文件(乃至32位的 DLLs) 必须以一个简单的 DOS MZ header 开始,在偏移0处有DOS下可履行文件的“MZ标志”,有了它,一旦程序在DOS下履行,DOS就可以辨认出这是有效的履行体,然后运行紧随 MZ header 之后的 DOS stub.DOS stub实际上是个有效的EXE,在不支持 PE文件格局的操作系统中,它将简单显示一个错误提醒,近似于字符串 " This program cannot run in DOS mode " 大概程序员可按照自己的企图实现完好的 DOS代码.普通DOS stub由汇编器/编译器自动生成,对我们的用处不是很大,它简单调用中止21h服务9来显示字符串"This program cannot run in DOS mode".
紧接着 DOS stub 的是 PE header. PE header 是PE相关构造 IMAGE_NT_HEADERS 的简称,此中包含了很多PE装载器用到的重要域.可履行文件在支持PE文件构造的操作系统中履行时,PE装载器将从 DOS MZ header的偏移3CH处找到 PE header 的起始偏移量.因而跳过了 DOS stub 直接定位到真正的文件头 PE header.
PE文件的真正内容划分成块,称之为sections(节).每节是一块拥有共同属性的数据,比方“.text”节等,那么,每一节的内容都是什么呢?实际上PE格局的文件把具有相同属性的内容放入同一个节中,而没必要关心近似“.text”、“.data”的命名,其命名只是为了便于辨认,全部,我们假如对PE格局的文件举行改正,理论上讲可以写入任何一个节内,并调整此节的属性便可以了.
以上是“<b>关于PE可履行文件的改正</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |