下面我们开始学习节表。
不知道还记不记得在前面哪个结构体中出现过节的数量?
嘿嘿,忘记了吧,我们翻开以前的记录,看看。
原来是
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