下面我们开始学习节表。
不知道还记不记得在前面哪个结构体中出现过节的数量?
嘿嘿,忘记了吧,我们翻开以前的记录,看看。
原来是
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; //文件属性 }
第二个成员就是了。
我们回去找找这个程序的这个值是多少。
原来是四个节啊,当然了,也可以说四个段。
果然是四个段。
好了,复习完需要的知识,我们就继续学习。
================================================
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