__security_init_cookie
전역 보안 쿠키를 초기화합니다.
구문
void __security_init_cookie(void);
설명
전역 보안 쿠키는 /GS(버퍼 보안 검사)를 사용하여 컴파일된 코드와 예외 처리를 사용하는 코드에서 버퍼 오버런을 방지하는 데 사용됩니다. 오버런 방지 함수로 진입 시 쿠키가 스택에 배치되며 해당 함수 종료 시 스택의 값을 전역 쿠키와 비교합니다. 쿠키의 값이 서로 다르면 버퍼 오버런이 발생한 것이며 프로그램이 즉시 종료됩니다.
일반적으로 __security_init_cookie
CRT는 초기화될 때 호출됩니다. CRT 초기화를 우회하는 경우(예: 진입점을 지정하는 데 사용하는 /ENTRY
경우) 자신을 호출 __security_init_cookie
해야 합니다. __security_init_cookie
호출되지 않으면 전역 보안 쿠키가 기본값으로 설정되고 버퍼 오버런 보호가 손상됩니다. 공격자는 이 기본 쿠키 값을 악용하여 버퍼 오버런 검사를 통과할 수 있으므로 진입점을 직접 정의할 때는 항상 __security_init_cookie
를 호출하는 것이 좋습니다.
__security_init_cookie
는 오버런 방지 함수에 진입하기 전에 호출해야 합니다. 그렇지 않으면 가상 버퍼 오버런이 검색됩니다. 자세한 내용은 C 런타임 오류 R6035를 참조하세요.
예시
C 런타임 오류 R6035의 예제를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
__security_init_cookie |
<process.h> |
__security_init_cookie
는 표준 C 런타임 라이브러리에 대한 Microsoft 확장입니다. 호환성에 대한 자세한 내용은 호환성을 참조하세요.