了解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 编译器选项保护以下项:

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
j***29483 小时前
IPV6公网暴露下的OPENWRT防火墙安全设置(只允许访问局域网中指定服务器指定端口其余拒绝)
服务器·安全·php
漏洞文库-Web安全6 小时前
CTF密码学之SM4
安全·web安全·网络安全·密码学·ctf
石像鬼₧魂石6 小时前
常用的安全审计工具可以用于靶机学习
学习·安全
知攻善防实验室6 小时前
双节期间,我收到了一封高危漏洞的邮件。
安全·网络安全
赵师的工作日8 小时前
MongoDB-从0到1-安全管理
数据库·安全·mongodb
虹科网络安全8 小时前
艾体宝洞察 | 图数据驱动:网络安全威胁管理从分散情报到攻击图谱
网络·安全·web安全
Bruce_Liuxiaowei11 小时前
Windows安全事件4625分析:检测登录失败与防范暴力破解
运维·windows·安全·网络安全
Fortinet_CHINA11 小时前
2026 年度 CISO 预测报告
网络·安全·ai
kali-Myon12 小时前
NewStarCTF2025-Week5-Web
java·python·安全·web安全·php·web·ctf
xiaobangsky13 小时前
前端安全防护指南(三)反射型XSS
前端·安全·xss