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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
2301_7807896620 小时前
渗透测试与网络安全审计的关系
网络·数据库·安全·web安全·网络安全
恒拓高科WorkPlus21 小时前
安全聊天:为何内网 IM 系统成企业首选?
安全
Clownseven21 小时前
云市场周报 (2025.09.05):解读腾讯云AI安全、阿里数据湖与KubeVela
人工智能·安全·腾讯云
卓码软件测评1 天前
第三方web测评机构:【WEB安全测试中HTTP方法(GET/POST/PUT)的安全风险检测】
前端·网络协议·安全·web安全·http·xss
张较瘦_1 天前
[论文阅读] 软件工程 | 告别“线程安全玄学”:基于JMM的Java类静态分析,CodeQL3分钟扫遍GitHub千仓错误
java·论文阅读·安全
hunzi_11 天前
搭建商城系统安全防护体系的核心要点与实施策略
安全·系统安全
被巨款砸中1 天前
前端视角下的 Web 安全攻防:XSS、CSRF、DDoS 一次看懂
前端·安全·xss
似水流年 光阴已逝1 天前
《网络安全实战:CC攻击(应用层)与DDoS攻击(网络层)的底层逻辑与防御体系》
安全·web安全·ddos·网络攻击·安全防护·cc攻击
wanhengidc1 天前
云手机运行是否消耗自身流量?
运维·科技·安全·游戏·智能手机
网络安全大学堂1 天前
【网络安全入门基础教程】网络安全零基础学习方向及需要掌握的技能
网络·学习·安全·web安全·网络安全·黑客