手工打造PE文件:[1]什么是PE文件

2026-05-28 16:28:00

翻阅了很多资料,也有了一个完整的思路,我们先从PE的各部份认识起,然后将会对PE文件有一个全新的认识和进步,希望对各位有所帮助,文章中如果有不当的地方或者错误欢迎给我指出或者留言在本博客!

首先我们得了解为什么要手工打造PE文件:

我们知道,往往从一个系统可执行文件结构上,就可以看整个操作系统的一些特性。也就是说PE里有Windows操作系统结构与运行机理的影子。由此可见,PE文件必然是一个非常庞杂且逻辑复杂的结构,那么为什么我们还要“自取其辱”来手工制造一个PE文件呢?这就要从PE文件的重要性说起了。

我们现今组成Windows大家庭的主要成员就是PE文件了,里面包括EXE、DLL、OCX、SYS等一切最有价值的文件都是PE文件格式,出于对版权的考虑或对某种技术的渴求,任何一种与Windows系统相关的行为最终都要归集到这里--PE文件。

特别是对于想学习加壳、破解、搞虚拟机的朋友们来说,熟知PE文件结构更是必不可少的基本功!

但也正是由于PE文件的复杂性,我们才要采取一些特别的办法来攻克它,其中手工打造PE文件就是一条捷径。

你可以想像一下,如果你都可以手工打造PE文件的话,那么对于PE文件的了解更是可见一斑了。但是我还想提醒一下各位读者,即便是如此,我们所了解的也仅仅是一部分,不过一般情况下已经足够了。

下面我们就来看看PE文件的整体结构,找了很多,这个算是比较完整和清晰的了,花了点时间做成了一个表:

分类

   

详细

   

大小(byte)

   

解释

   

DOS头部

   

DOS Header(IMAGE_DOS_HEADER)

   

64

   

MZ  头部 

   

DOS Stub

   

112

   

实模式残余程序  

   

PE文件头

   

"PE"00 (Signature)

   

4

   

PE文件标志

   

IMAGE_FILE_HEADER

   

20

   

PE文件头

   

IMAGE_OPTIONAL_HEADER32

   

96

   

PE文件可选头

   

数据目录表

   

128

   

块表

   

IMAGE_SECTION_HEADER

   

40

   

各段头部

   

IMAGE_SECTION_HEADER

   

40

   

IMAGE_SECTION_HEADER

   

40

   

   

.text

   

512

   

一般存储汇编机器码

   

.rdata

   

512

   

存储输入表、输出表、IAT、资源等等信息

   

.data  

   

512

   

一般存储const字符串等

   

调试信息

   

COFF行号 

   

NULL

   

COFF符号表

   

NULL

   

Code View 调试信息

   

NULL

   

(共篇)下一篇:
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢