PE文件结构及其加载机制(四)

时间:2023-02-01 10:19:14

下面我们开始学习节表。

不知道还记不记得在前面哪个结构体中出现过节的数量?

 

嘿嘿,忘记了吧,我们翻开以前的记录,看看。

原来是

typedef struct IMAGE_NT_HEADERS
  {
        DWORD Signature;
        IMAGE_FILE_HEADER FileHeader;
        IMAGE_OPTIONAL_HEADER32 OptionalHeader;
  }IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS; 

中的

typedef struct _IMAGE_FILE_HEADER {   
        WORD      Machine;                 //运行平台 
        WORD      NumberOfSections;        //块(section)数目      
        DWORD     TimeDateStamp;           //时间日期标记     
        DWORD     PointerToSymbolTable;    //COFF符号指针,这是程序调试信息    
        DWORD     NumberOfSymbols;         //符号数  
        WORD      SizeOfOptionalHeader;    //可选部首长度,是IMAGE_OPTIONAL_HEADER的长度    
        WORD      Characteristics;         //文件属性 
}

第二个成员就是了。

我们回去找找这个程序的这个值是多少。

PE文件结构及其加载机制(四)

原来是四个节啊,当然了,也可以说四个段。

PE文件结构及其加载机制(四)

果然是四个段。

好了,复习完需要的知识,我们就继续学习。

 

================================================

typedef struct _IMAGE_SECTION_HEADER {
  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];
  union {
    DWORD PhysicalAddress;
    DWORD VirtualSize;
  } Misc;
  DWORD VirtualAddress;
  DWORD SizeOfRawData;
  DWORD PointerToRawData;
  DWORD PointerToRelocations;
  DWORD PointerToLinenumbers;
  WORD  NumberOfRelocations;
  WORD  NumberOfLinenumbers;
  DWORD Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

 同样的,这也是一个结构体,而且有几个节,就有几个这种类似的结构体。

"#define IMAGE_SIZEOF_SHORT_NAME 8"    原来是个8