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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
快降重1 天前
不只是降重:实测“快降重”对论文逻辑结构与连贯性的提升作用
人工智能·安全·ai写作·降重·降ai
德迅--文琪1 天前
网站如何防止被篡改?
安全
骥龙1 天前
2.4上、固件安全分析与漏洞挖掘:从提取到逆向的完整实战指南
网络·物联网·安全
久违 °1 天前
【安全开发】Nmap端口发现技术详解(一)
安全·网络安全
信创天地1 天前
信创日志全流程管控:ELK国产化版本与华为日志服务实战应用
运维·安全·elk·华为·rabbitmq·dubbo
@大迁世界1 天前
停止使用 innerHTML:3 种安全渲染 HTML 的替代方案
开发语言·前端·javascript·安全·html
缘木之鱼1 天前
CTFshow __Web应用安全与防护 第二章
前端·安全·渗透·ctf·ctfshow
Xudde.1 天前
在网络空间安全专业大二上学期个人经历
笔记·学习·安全
xwz小王子1 天前
【Science Advances】“安全可触”的低电压仿生人工肌肉,让机器人更柔、更轻、更安全
安全·机器人
Guheyunyi1 天前
智能巡检:技术融合与系统生成
大数据·人工智能·科技·安全·信息可视化