了解VS安全编译选项GS

缓冲区溢出攻击的基本原理就是溢出时覆盖了函数返回地址,之后就会去执行攻击者自己的函数;

针对缓冲区溢出时覆盖函数返回地址这一特征,微软在编译程序时使用了安全编译选项-GS;

目前版本的Visual Studio中默认启用了这个编译选项;

GS的工作机制是,

在所有函数调用发生时,向栈帧内压入一个额外的随机DWORD,称为Security Cookie;

Security Cookie位于EBP之前,系统还将在.data的内存区域中存放一个Security Cookie的副本;

当栈中发生溢出时,Security Cookie将被首先淹没,之后才是EBP和返回地址;

在函数返回之前,系统将执行一个额外的安全验证操作,被称做Security check;

这样如果Security Cookie被改变了,就证明受到了缓冲区溢出攻击;

此选项默认开启;VS2015,如下图;

只是了解一下;还不会反汇编跟踪查看到栈帧内的Security Cookie;

如果每个函数调用都进行Security check,对性能还是会有影响;

根据MS的说法,

如果值不同(Security Cookie),则指示可能已覆盖堆栈。 如果检测到不同的值,将终止进程。

如果命令行编译则是加 /GS 选项;

根据MS的说法,

/GS 编译器选项保护以下项:

函数调用的返回地址;

函数的异常处理程序地址;

易受攻击的函数参数;

相关推荐
147API19 小时前
Project Glasswing 扩展后,AI 安全扫描不能只看发现漏洞
人工智能·安全·api·claude
KKKlucifer20 小时前
AI赋能安全运营,构建闭环数据风险防御体系
人工智能·安全
黎阳之光21 小时前
数智赋能水厂全链路安全|黎阳之光以视频孪生技术落地供水精细化管控
人工智能·物联网·算法·安全·数字孪生
常宇杏起在1 天前
AI安全专项:AI密码技术的应用与安全防护
人工智能·安全
Raink老师1 天前
【AI面试临阵磨枪-94】Skill 安全:注入、越权、数据泄露、恶意代码、沙箱?
数据库·安全·面试
Bruce_Liuxiaowei1 天前
2026年6月第1周网络安全形势周报
人工智能·安全·web安全·ai·智能体
AI创界者1 天前
【网络安全】图形化玩转 Hashcat:GUI 界面部署与实战密码审计指南
安全·web安全
米丘1 天前
浏览器 本地存储 (cookie 、sessionStorage、localStorage)
安全·http·浏览器
闭关修炼啊哈1 天前
灵感日报 · 晚报 | 2026年06月05日:品牌叙事重塑、校园防诈、AI代码规范化、考试安全检测
人工智能·安全