小编Iur*_*nko的帖子

如何禁用函数的缓冲区安全检查 (#pragma strict_gs_check)

我需要对某些功能抑制缓冲区安全检查 (/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)

security buffer local disable

4
推荐指数
1
解决办法
3462
查看次数

标签 统计

buffer ×1

disable ×1

local ×1

security ×1