zoukankan      html  css  js  c++  java
  • PE文件结构详解(三)

    0x01 前言

      上一篇讲到了数据目录表的结构和怎找到到数据目录表(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这个是VirtualAddressRAV字段,这个字段很有用,后面将会讲到。再后面是00000200h,标识的是SizeOfRawData字段,这个字段也很有用。再后面的几个字段就不再介绍了,其实用的也不多,用到了可以再进行分析。上图可知Code区段后面就是DATA区段了,分析方法和CODE字段一样,这里就不再做介绍了。

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

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

  • 相关阅读:
    Educational Codeforces Round 20 D. Magazine Ad
    Educational Codeforces Round 20 C. Maximal GCD
    紫书第三章训练2 暴力集
    Educational Codeforces Round 20 B. Distances to Zero
    Educational Codeforces Round 20 A. Maximal Binary Matrix
    紫书第三章训练1 D
    紫书第一章训练1 D -Message Decoding
    HAZU校赛 Problem K: Deadline
    Mutual Training for Wannafly Union #8 D
    紫书第三章训练1 E
  • 原文地址:https://www.cnblogs.com/2f28/p/9817371.html
Copyright © 2011-2022 走看看