doc头lfanew偏移,可以找到标准pe头,标准pe头结束就是可选pe头,可选pe头大小不确定。
怎么找节表:计算可选pe头的大小后,doc+标准pe+可选pe
标准节表内:SizeOfOptionalHeader可选pe头大小
节表:线性结构,多少个,在标准pe头的numberofSection(节)决定有多少个。
...
#define IMAGE_SIEZOF_SHORT_NAME 8
typedef struct _IMAGE_SECTION_HEADER{
BYTE Name[IMAGE_SIEZOF_SHORT_NAME];
union{
DWORD PhysicalAddress;
DWORD VirtualSize;
}Misc;
DWORD VirtualAddress;
DWORD SizeOfRawData;
DWORD PointerToRawData;
DWORD PointerToRlocations;
WORD NumberOfRelocations;
WORD NumberOFLinenumbers;
DWORD Characteristics;
}IMAGE SECTION HEADER. *PIMAGE SECTION HEADER;
...
1、Name 8个字节 一般情况下是以“\0”结尾的ASCII码字符串来标识的名称,内容可以自定义。
注意:该名称并不遵守必须以“\0”结尾的规律,如果不是以“\0”结尾,系统会截取8个字节的长度进行处理。
2、Misc 双字 是该节在没有对齐前的真是尺寸,该值可以不准确。//可改
3、VirtualAddress 节区在内存中的偏移地址。加上ImageBase才是在内存中的真正地址。
4、SizeOfRawData 节在文件中对齐后的尺寸
5、PointerToRawData 节区在文件中的偏移
//6、DWOED PointerToRelocations 在obj文件中使用 对exe无意义
//7、DWOED PointerToLinenumbers 行号表的位置 调试的时候使用
//8、WOED NumberOfRelocations 在obj文件中使用 对exe无意义
//9、WOED NumberOfLinenumbers行号表中行号的数量 调试的时候使用
10、charactistics 节的属性