__security_init_cookie
初始化全局安全 Cookie。
语法
void __security_init_cookie(void);
备注
全局安全 Cookie 用于在使用 /GS(缓冲区安全检查)编译的代码中和使用异常处理的代码中提供缓冲区溢出保护。 进入受到溢出保护的函数时,Cookie 被置于堆栈之上;退出时,会将堆栈上的值与全局 Cookie 进行比较。 它们之间存在任何差异则表示已经发生缓冲区溢出,并导致该程序的立即终止。
通常,在初始化时,CRT 会调用 __security_init_cookie
。 如果绕开 CRT 初始化(例如,使用 /ENTRY
指定一个入口点),则必须自己调用 __security_init_cookie
。 如果不调用 __security_init_cookie
,全局安全 Cookie 将设定为默认值,缓冲区溢出保护将受到威胁。 由于攻击者可利用此默认 Cookie 值使缓冲区溢出检查无效,我们建议,在定义自己的入口点时,始终调用 __security_init_cookie
。
在进入任何受到溢出保护的函数前,必须调用 __security_init_cookie
,否则将检测到虚假的缓冲区溢出。 有关详细信息,请参阅 C 运行时错误 R6035。
示例
请参阅 C 运行时错误 R6035 中的示例。
要求
例程 | 必需的标头 |
---|---|
__security_init_cookie |
<process.h> |
__security_init_cookie
是标准 C 运行库的 Microsoft 扩展。 有关兼容性信息,请参阅兼容性。
另请参阅
Microsoft Security Response Center(Microsoft 安全响应中心)