关于异常STATUS_STACK_BUFFER_OVERRUN(0xC0000409)
简介
STATUS_STACK_BUFFER_OVERRUN,值为0xC0000409,又称栈缓冲区溢出异常,其定义如下:
/
// MessageId: STATUS_STACK_BUFFER_OVERRUN
//
// MessageText:
//
// The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
//
#define STATUS_STACK_BUFFER_OVERRUN ((NTSTATUS)0xC0000409L) // winnt
说明
系统在此应用程序中检测到基于堆栈的缓冲区溢出。此溢出可能允许恶意用户获得此应用程序的控制权。同时现在的Windows系统上也不仅仅用来表达着个异常,也用来做一些会导致致命错误的安全检测,而引发进程快速失败。与所有其他异常代码不同,Fail Fast异常绕过所有异常处理程序(基于帧或向量)。如果启用了Windows错误报告,引发此异常将终止应用程序并调用Windows错误报告。本异常代码最初设计用于引发安全检查失败。具体来说,是违反警戒线(/GS)。随着时间的推移,出于非安全原因,应用程序利用了立即终止功能的愿望。这些应用程序利用第一个参数来指定场景(子代码)。原始的“安全检查失败”用例保留值为0。由于每个应用程序的性质,当前未定义异常参数值。
异常填充结构
ExceptionAddress: 0f2846a9 (msvcr120!_invoke_watson+0x0000000e)
ExceptionCode: c0000409 (Security check failure or stack buffer overrun)
ExceptionFlags: 00000001
NumberParameters: 1
Parameter[0]: 00000005//异常子代码
Subcode: 0x5 FAST_FAIL_INVALID_ARG