手动写一个PE文件.docVIP

  • 7
  • 0
  • 约3.86千字
  • 约 7页
  • 2020-11-08 发布于浙江
  • 举报
dncwbc、a1pass前辈们的文章 手动写一个PE文件,完成如下功能 调用MessageBox,弹出一个对话框 调用ExitProcess,退出程序。效果如图: PE文件即Portable Execute,是微软Windows操作系统上的程序文件 每天当我们不经意地点开一个exe文件时,你知道它背后的秘密吗?OK,让我们一起来了解下PE文件吧! 我们知道,计算机只认识0和1,所在任何文件在计算机中都是用一串串0和1。为了便于阅读,我们把4个二进制数合到一起看,也就是一个16进制数。用UltraEdit打开一个可执行的程序和一个图片文件。 怎么样,文件的本质就是由这些东西组成的! 为什么PE文件能跑起来呢?让我们来了解下PE文件是怎么组织的 吧!如图 一个PE文件的组织就如同一本书一样,DOS、PE头相当于一本书的前言;而块表相当于一本书的目录;.data\.rdata\.text等就相当于书本的每一章。PE文件的“每一章”存放不同的内容。例如.text用来存放代码。 介绍完这些让我们现在就开始吧!我们用的工具是Hex Workshop。 打开工具,文件/新建文件。如图在空白处右击,选插入: ――――――――――――――――――――――――――――――――― 先解决DOS头。 在弹出的对话框中选择十六进制,字节数量填40。点确定,40h就是DOS头的大小。 光标插到第一字节前,输入4D5A,对应ASCII码MZ,这是DOS可执行文件标志。如图,最后四个字节用来指示PE文件头开始的地址,我们的PE头将置开始,所以把最后四个字节改为40 00 00 00(低低高高对应关系)。 DOS头完成了,是不是很简单啊! ――――――――――――――――――――――――――――――――――― 下面就是PE头,不过它比较复杂,在讲PE头之前我们先看几个重要的概念:文件偏移地址和相对虚似地址,上图黄色框中所示的就是文件偏移地址。即某个数据位置相对于文件头的偏移量。 文件执行过程中会把文件映射到内存中,在内存中文件头被映射到某一位置。其它字节的位置相对于头部映射的位置被称为相对虚似地址(RVA)。 文件从磁盘到内存映射过程中发生了一些变化。也就是怎样“对齐”的概念。 比如,一本书如果用32K的纸来印刷的话,假设一页32K的纸能容纳100个字,假设第一章有113个字,那么需要一页多一点的纸张(但下一章必须从新的一页开始),多出的地方就是空白(相当于文件中用0填充),所以第一章会占两页32K的纸。 假如现在用8K的纸来印刷的话,假设一页8K的纸能容纳400个字,那么第一章只用一页8K纸可以了。(因为第二章将从新一页开始),没字的部分就是空白(相当于文件中用0填充)。 在文件中“1页纸”一般200字节,在内存中一般1000字节。 ――――――――――――――――――――――――――――――――――― 让我们继续吧! PE头我们分成二块来讲。 第一部分:在空白的地方如前面的方法,插入18H个字节的0。需要修改的字节如图所示: = 1 \* GB3 ①处4个字节PE文件头的标志对应ASCII:PE\0\0; = 2 \* GB3 ②处2个字节说明运行平台,014c表示intel处理器; = 3 \* GB3 ③区块个数,相当于一本书多少章; = 4 \* GB3 ④PE头第二部分的大小(可选头文件大小) = 5 \* GB3 ⑤文件属性,普通exe文件一般是010f。 第二部分:插入E0h个字节。需要修改的字节如图所示: = 1 \* GB3 ①标志字,普通可执行映像一般是010B。 = 2 \* GB3 ②程序入口RVA,对应.text块的RVA,一般是1000。 = 3 \* GB3 ③文件装入内存的起始地址,一般 = 4 \* GB3 ④内存对齐,1000,很重要。 = 5 \* GB3 ⑤磁盘对齐,是200,很重要。 = 6 \* GB3 ⑥要求最低子系统版本的主版本号,一设为0040对应win32子系统。 = 7 \* GB3 ⑦文件装入内存后的总大小,内存对齐是1000。DOS头+PE头+块表占1000字节;.text、.rdata、.data块分别占1000字节。所以这儿填4000。 = 8 \* GB3 ⑧DOS头+PE头+块表在磁盘中所占大小,磁盘对齐是200,这儿填00 02 00 00 = 9 \* GB3 ⑨这个可执行文件所期待的子系统,02为图形接口子系统。 = 10 \* GB3 ⑩ 对应最下面红框中数据的个数(8字节一组),PE文件基本都是10h。 A位置数据我们放在后面再讲。 ――――――――――――――――――――――――――――――― 下面是块表 块表是对块的位置、大小以及一些

文档评论(0)

1亿VIP精品文档

相关文档