我需要对某些功能抑制缓冲区安全检查 (/GS) 功能 (MSVC),但不能像 /GS 那样对整个项目抑制。MSVSC 文档https://learn.microsoft.com/en-us/cpp/preprocessor/strict-gs-check?view=vs-2017提示使用 #pragma strict_gs_check(off)。不幸的是,它对我不起作用 - 我仍然在程序集中看到“cookie”。请提供任何帮助。
这是最简单的复制代码,这里有大胆的链接:https ://godbolt.org/z/gYiGam
#include <memory>
struct Tmp {
char v[8];
};
//#pragma check_stack(off)
#pragma strict_gs_check(off)
int make1(Tmp& a)
{
Tmp r;
return memcmp(&r, &a, sizeof(r));
}
//result
//-------------------------
pop esi
mov ecx, DWORD PTR __$ArrayPad$[esp+12]
xor ecx, esp
call @__security_check_cookie@4
add esp, 12 ; 0000000cH
ret 0
$LN6@make1:
mov ecx, DWORD PTR __$ArrayPad$[esp+16]
sbb eax, eax
pop esi
xor ecx, esp
or eax, 1
call @__security_check_cookie@4
add …Run Code Online (Sandbox Code Playgroud)