这里记录一下Windows特供的保护。

trailofbits/winchecksec: Checksec, but for Windows

winchecksec对于vs2022编译的程序有点问题,可以用NetSPI/PESecurity

查看系统保护机制开启情况:Get-ProcessMitigation -System

查看进程保护情况: Get-ProcessMitigation xxx (xxx是pid)

DEP

*Data Execution Prevention,*就是NX Data Execution Prevention - Win32 apps | Microsoft Learn

需要注意的是,DEP未开启时,拿调试器看到的页权限可能仍然没有E(Execute)bit,但实际上是可执行的,会无视page权限。

SEH相关

首先,SEH是windows下的异常处理机制,我们先讨论x86 32bit的实现。

它的原始结构比较简单,就是一个链表,串起了所有异常处理函数,链表头存储在TEB中实际

SEH利用比较简单,它的结构如下,实际就是一个next指针+函数指针(参考Windows Exploit Development – Part 6: SEH Exploits - Security SiftSecurity Sift

typedef struct _EXCEPTION_REGISTRATION_RECORD { 
    struct _EXCEPTION_REGISTRATION_RECORD *Next; 
    PEXCEPTION_ROUTINE Handler; 
} EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD;

x86_64 SEH:

Exceptional behavior: the Windows 8.1 X64 SEH Implementation (talosintelligence.com)