手机

解密SEHWindows操作系统的安全机制

解密SEH:Windows操作系统的安全机制

SEH简介

SEH全称为Structured Exception Handling,即结构化异常处理。它是Windows操作系统中用于处理异常和错误的核心机制。SEH允许程序员编写代码,以便在发生特定类型的错误或异常时,能够执行特定的代码块来进行错误恢复或者记录。

SEH框架

SEH框架由两个主要组成部分构成:顶层栈(Top-Level Stack)和底层栈(Bottom-Level Stack)。顶层栈负责存储用户定义的异常处理器,而底层栈则包含了操作系统内置的默认异常处理器。当一个新的线程被创建时,它会继承当前进程中的顶层栈,并将其作为自己的基础。

异常注册与搜索

在Windows系统中,程序可以通过调用SetUnhandledExceptionFilter函数来注册自定义的未捕获异常过滤器。当一个未捕获的异常发生时,系统会按照从新到旧、从高地址到低地址的顺序遍历所有已注册的过滤器,直至找到第一个能够有效处理该类别及级别以上或相同级别且更高优先级等级之上的过滤器。

异常传递与分发

当一个线程抛出一个异步事件或者同步事件引起的一个异步例外时,这个例外会被推送到当前线程所拥有的top-level exception链表上。如果这个例外没有得到适当地捕捉,那么它就会继续向下传播并最终触发整个进程中的unhandled exception filter。这种方式使得任何时候都有机会对某些类型的问题做出响应,无论这些问题是在何种深度嵌套环境中产生。

SEH攻击与防御

由于SEH提供了强大的控制流重定向能力,使得攻击者可以利用此功能实施各种恶意行为,如堆溢出、返回指针溢出等。这类攻击通常涉及修改堆区内存中的指针以实现控制流转移,从而绕过安全检查和执行恶意代码。在防御方面,可以采用数据执行保护(DEP)和无效页面保护(NX)的技术来减少攻击面。此外,对于敏感区域使用硬件加密也是一种重要的手段。

你可能也会喜欢...