1.简介

用于存放基于结构化异常处理的各种异常句柄. 当程序运行发生异常后,os会根据异常类别对异常进行分发处理.

如果PE中该部分没有对应的异常类别处理函数句柄,os将会调用其内核模式的异常分发函数终止程序运行. 

 

2.定位

位于数据目录的第11个条目

 

3.解析其数据结构

typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32 {
    DWORD   Size;            //该结构大小
    DWORD   TimeDateStamp;     
    WORD    MajorVersion;
    WORD    MinorVersion;
    DWORD   GlobalFlagsClear;    //pe加载器加载该映像时需要清除的标记
    DWORD   GlobalFlagsSet;      //pe加载器加载它时需要清除的标记
    DWORD   CriticalSectionDefaultTimeout;  //
    DWORD   DeCommitFreeBlockThreshold;
    DWORD   DeCommitTotalFreeThreshold;
    DWORD   LockPrefixTable;                // VA指向一个地址列表,保存的是lock前缀的指令的地址
    DWORD   MaximumAllocationSize;      //最大分配粒度
    DWORD   VirtualMemoryThreshold;      //最大虚拟内存大小
    DWORD   ProcessHeapFlags;      //作为创建默认堆的HeapCreate的第一个参数
    DWORD   ProcessAffinityMask;    
    WORD    CSDVersion;
    WORD    Reserved1;
    DWORD   EditList;                       // VA
    DWORD   SecurityCookie;                 // VA 指向GS的安全cookie
    DWORD   SEHandlerTable;                 // VA与平台相关, 指向一个地址列表,保存的是SEhandler
    DWORD   SEHandlerCount;            // sehandler的数量
    DWORD   GuardCFCheckFunctionPointer;    // VA
    DWORD   Reserved2;
    DWORD   GuardCFFunctionTable;           // VA
    DWORD   GuardCFFunctionCount;
    DWORD   GuardFlags;
} IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32;

 

例如:windows的calc.exe