这里记录一下Windows特供的保护。
trailofbits/winchecksec: Checksec, but for Windows
winchecksec对于vs2022编译的程序有点问题,可以用NetSPI/PESecurity
查看系统保护机制开启情况:Get-ProcessMitigation -System
查看进程保护情况: Get-ProcessMitigation xxx
(xxx是pid)
*Data Execution Prevention,*就是NX Data Execution Prevention - Win32 apps | Microsoft Learn
需要注意的是,DEP未开启时,拿调试器看到的页权限可能仍然没有E(Execute)bit,但实际上是可执行的,会无视page权限。
首先,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)