一、加载配置表
1.位置与简介
载入配置表早期是用于描述当PE文件头或PE可选头无法描述或者因为太大而无法描述的各种功能。
后来以XP及以后的系统主要是为了存储SEH句柄,称为安全结构化异常处理程序列表,如果SEH异常处理没有经过注册,在载入配置表中没有句柄,这个异常处理就不会被执行。
据微软官方说明,这个载入配置表的作用是为了防止“x86异常处理程序劫持”的漏洞。因为年代久远就无从考据了。
PE文件头可选映像头中数据目录表的第11成员IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG]指向加载配置表。
2.数据结构
加载配置表起始于IMAGE_LOAD_CONFIG_DIRECTORY,它的定义如下:
typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
DWORD Characteristics; //属性,当前没使用
DWORD TimeDateStamp; //(GMT时间)
WORD MajorVersion; //主版本号
WORD MinorVersion; //子版本号
DWORD GlobalFlagsClear; //启动时清除全局标志
DWORD GlobalFlagsSet; //启动时设置全局标志
DWORD CriticalSectionDefaultTimeout;//程序关键部分默认超时值
DWORD DeCommitFreeBlockThreshold; //返回系统前必须释