PE结构

PE结构  exe

PE文件是Windows操作系统下使用的可执行文件格式。

PEPortable Executable)格式,是微软Win32环境可移植可执行文件(exedllvxdsysvdm)的标准文件格式。PE格式衍生于早期建立在VAX(R)VMS(R)上的COFF(Common Object File Format)文件格式。

Pe文件是指32位的可执行文件(PE32)。64的可执行文件称为PE+或者PE32+,是PE文件的一种扩展形式。

 

种类

 

基本结构

PE头:DOS头(DOS header)、节区头(Section header)

各节区头定义了各节区在文件或内存中的大小,位置,属性等。

PE头与各节区的尾部存在一个区域,称为NULL填充。相当于00

 

DOS文件头:

IMAGE_DOS_HEADER结构体(64字节)

两个重要成员:

e_magic  :DOS签名(4D5A “MZ”)

 

e_lfanew  :指示NT头的偏移

 

NT头:

IMAGE_NT_HEADERS

 

三个成员:

Singature  签名(PE:50450000h)

File Header  文件头

IMAGE_FILE_HEADER结构体:

Optional header 可选头

IMAGE_OPTIONAL_HEADER32是PE头结构体重最大的

 

节区头

节区中定义了各节区属性。

节区头是由IMAGE_SETION_HEADER结构体组成的数组,每个结构体对应一个节区。

重要组成成员

看一下notepad的节区头数组

 

 

RVA to RAW(文件偏移)

PE文件加载到内存是,每个节区都要能准确完成内存地址与文件偏移间的映射。这种映射一般称为RVA TO

RAW

方法如下:

查找RVA所在的节区。

使用简单的公式计算文件偏移(RAW)

换算公式:

例如 RVA=5000     File offset=?

 

位于.text中  (1001000<1005000<1008748)

RAW=5000-1000+400=4400

 

 

 

 

 

IAT(Image Address Table,导入地址表)

IAT保存的内容与windows操作系统的核心进程、内存、DLL结构有关。(理解了IAT,就掌握了windows操作系统的根基。)

DLL(动态链接库)

两个成员

Import 导入

Export 导出

 

IMAGE_IMPORT_DESCRIPTOR

IMAGE_EXPORT_DIRECTORY

 

 

 

 

PE病毒感染

PE病毒常见的感染其它文件的方法是在文件中添加一个新节,然后往该节中添加病毒代码和病毒执行后返回HOST程序的代码,并修改文件头中代码开始执行位置(Address Of EntryPoint)指向新添加的病毒节的代码入口,以便程序运行后先执行病毒代码。下面具体分析一下感染文件的步骤。

感染文件的基本步骤:

1,  判断目标文件开始的两个字节是否为“MZ”。

2,  判断PE文件标记“PE”。

3,  判断感染标记,如果已被感染过则跳出继续执行HOST程序,否则继续。

4,  获得Directory(数据目录)的个数,每个数据目录信息占8个字节。

5,  得到节表起始位置:

       Directory的偏移地址+数据目录占用的字节数=节表起始位置

6,  得到目前最后节表的末尾偏移(紧接其后用于写入一个新的病毒节)。

节表起始位置+节的个数×(每个节表占用的字节数28H)=目前最后节表的末尾偏移

7,  开始写入节表。

l  写入节名(8B)。

l  写入节的实际字节数(4B)。

l  写入新节在内存中的开始偏移地址(4B),同时可以计算出病毒入口位置。

上节在内存中的开始偏移地址+(上节大小/节对齐+1)×节对齐=本节在内存中的开始偏移地址

l  写入本节(即病毒节)在文件中对齐后的大小。

l  写入本节在文件中的开始位置。

上节在文件中的开始位置+上节对齐后的大小=本节(即病毒)在文件中的开始位置

l  修改映象文件头中的节表数目。

l  修改Address Of EntryPoint,同时保存旧的Address Of EntryPoint,以便返回HOST继续执行。

l  更新Size Of Image(内存中整个PE映象尺寸=原Size Of Image+病毒节经过内存节对齐后的大小)。

l  写入感染标记

l  写入病毒代码到新添加的节中:

ECX=病毒长度

ESI=病毒代码位置(并不一定等于病毒执行代码开始位置)

EDI=病毒节写入位置

l  将当前文件设置为文件结尾。

PE病毒感染其它文件的方法还有很多,例如PE病毒还可以将自己分散插入到每个节的空隙中等

 

 

小文章

https://blog.csdn.net/shangguanwaner/article/details/1911966

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值