加载配置信息
加载配置信息最初最用在Windows NT操作系统中,作为文件头部的延伸部分,后来被用作异常处理。加载配置信息表中存放了基于结构化异常处理(SEH)技术的各项异常句柄。当程序运行发生异常后,操作系统会根据异常处理类别对异常进行分发处理,并依据这些句柄实施程序流程的转向,保证系统能从异常中全身而退。
10.1 何为加载配置信息
加载配置信息结构是PE中定义的一种基本数据类型,最初仅用于Windows NT操作系统,定义一些供Windows NT操作系统加载PE时用到的一些附加信息。后来该部分含义发生了变化。不再定义加载用的配置信息,而是被专门用来定义基于SEH技术的相关数据。
如果PE中的该部分表中没有对应的异常类别处理函数句柄,操作系统将会调用其内核模式的异常分发函数终止应用程序的运行。这种安全设置主要是为了阻止因异常句柄导致的溢出被恶意程序利用,从而造成对系统的破坏。
通常情况下,连接器会提供一个默认的加载配置信息结构,该结构包含了预留的SEH数据。如果用户代码中提供了该结构,则必须由用户来完成设置新的预留SEH字段,否则连接器不会讲SEH数据加入到加载配置信息中。
10.2 Windows 结构化异常处理
就是说SEH的原理和调用,之前写核心编程笔记的时候整理过:
http://blog.youkuaiyun.com/u013761036/article/details/54234212 这里只说当时没有整理的部分。
Windows 异常分类
由于SEH使用了与硬件平台如果的数据指针,所以在不同的硬件平台上,SEH的实现方法是不同的。在X86平台上的SEH处理框架中,把异常分为两大类:
硬异常(