ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PE文件详解三

2022-04-04 20:33:57  阅读:166  来源: 互联网

标签:文件 IMAGE 字段 详解 PE DWORD 区块


上一篇讲到了数据目录表的结构和怎找到到数据目录表(DataDirectory[16]),这篇我们我来讲讲数据目录表后面的另一个结构——区块表。

0x01 区块

  区块就是PE载入器将PE文件载入后,将PE文件分割成若干块,每块包含不同的信息,由读写数据块.data,代码块.code,只读数据块.rdata等等,一般至少得有读写数据块和代码块。区块的的划分信息保存在一张名为区块表(IMAGE_SECTION_HEADER)的结构中。区块表紧邻着PE文件头IMAGE_NT_HEAER。它的结构如下:

typedef struct _IMAGE_SECTION_HEADER 

{

        BYTE Name[IMAGE_SIZEOF_SHORT_NAME];     // 节表名称,如“.text” 

        //IMAGE_SIZEOF_SHORT_NAME=8

        union
         {

                DWORD PhysicalAddress;        // 物理地址

                DWORD VirtualSize;                // 真实长度,这两个值是一个联合结构,可以使用其中的任何一个,一

                                                              // 般是取后一个

        } Misc;

        DWORD VirtualAddress;              // 节区的 RVA 地址

        DWORD SizeOfRawData;            // 在文件中对齐后的尺寸

        DWORD PointerToRawData;        // 在文件中的偏移量

        DWORD PointerToRelocations;     // 在OBJ文件中使用,重定位的偏移

        DWORD PointerToLinenumbers;   // 行号表的偏移(供调试使用地)

        WORD NumberOfRelocations;      // 在OBJ文件中使用,重定位项数目

        WORD NumberOfLinenumbers;    // 行号表中行号的数目

        DWORD Characteristics;              // 节属性如可读,可写,可执行等} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; 

大小位40字节。由于它紧邻PE文件头,而PE文件头的中的Data[16]中的最后一个保留双字开头为100h+F0h=1F0h故区块表的开始位为1F0h+8h=1f8h,共占四十个字节,如下图:

 

由上图我们可读出很多重要信息,前八个字节可以知道这是个.code块,后面四个字节为00001000h这个是VirtualSize字段即Vsize,再后面四个字节是00001000h这个是VirtualAddress,即RAV字段,这个字段很有用,后面将会讲到。再后面是00000200h,标识的是SizeOfRawData字段,这个字段也很有用。再后面的几个字段就不再介绍了,其实用的也不多,用到了可以再进行分析。上图可知Code区段后面就是DATA区段了,分析方法和CODE字段一样,这里就不再做介绍了。

  对于上述的分析其实我们也可以通过工具来完成,我们今天来使用另一个强大的工具PEID,这个工具对于脱壳来说很有用。我们打开PEID.exe。直接把文件拖到PEID窗口即可,点击EP段:边上的按钮即可查看刚刚分析的内容。如下图:

 

显然我们的分析是正确的。注意这里写的V偏移即为RAV,V大小即为Vsize,R大小即为SizeOfRawData,至于R偏移后面会介绍。

标签:文件,IMAGE,字段,详解,PE,DWORD,区块
来源: https://www.cnblogs.com/cuixianglijian/p/16100274.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有