下面我們開始學習節表。
不知道還記不記得在前面哪個結構體中出現過節的數量?
嘿嘿,忘記了吧,我們翻開以前的記錄,看看。
原來是
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