
上QQ阅读APP看书,第一时间看更新
3.10 异常处理
异常就是函数操作中发生的意外情况。例如,被除0将会产生一个异常。很多程序员采取实现异常处理程序的方式来处理这些特殊情况,以避免非预期的程序中止。另外,异常处理程序被串在一起并以一定的顺序被调用,直到其中一个能够处理异常为止。
Microsoft Windows操作系统提供了如下三种形式的异常处理程序。操作系统按给定的顺序调用它们,直到其中某一个被成功执行。
1.向量化异常处理(Vectored Exception Handling,VEH)。向量化异常处理程序首先调用以重写结构化异常处理程序。Windows XP增加了对这种异常处理程序的支持。
2.结构化异常处理(Structured Exception Handling,SEH)。这种方式被实现为每函数(per-function)或每线程(per-thread)的异常处理程序,即每一个函数或每一个线程都有自己的异常处理程序。
3.系统默认异常处理。这是一个全局异常过滤器和处理器,用于处理整个进程的异常情况。如果上面两个异常处理程序都无法处理异常,那么它将会被调用。
下面一节将讨论结构化异常处理和系统默认异常处理。向量化异常处理由于未在软件漏洞利用中广泛使用,因而略去。