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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
CDN36016 小时前
360CDN 全系列产品体验:CDN / 高防 / SDK 游戏盾横向测评
运维·安全·游戏
小陈工16 小时前
2026年3月26日技术资讯洞察:WebAssembly崛起、AI代码质量危机与开源安全新挑战
人工智能·python·安全·架构·开源·fastapi·wasm
LlNingyu18 小时前
文艺复兴,什么是XSS,常见形式(一)
前端·安全·web安全·xss
LlNingyu20 小时前
文艺复兴,什么是XSS,常见形式(二)
前端·安全·xss
北京软秦科技有限公司21 小时前
AI报告审核守护公共卫生安全:IACheck助力公共纺织品卫生检测报告合规与健康保障
大数据·人工智能·安全
阆遤21 小时前
利用TRAE对nanobot进行安全分析并优化
python·安全·ai·trae·nanobot
不一样的故事1261 天前
核心预测未来 10 年
运维·安全·自动化
LlNingyu1 天前
文艺复兴, 什么是XSS,常见形式(三)
网络·安全·xss
Honeyeagle1 天前
无线移动在线复合式多合一气体检测仪:工业安全监测的革新利器
运维·网络·安全
桌面运维家1 天前
网络运维:防火墙异常流量监控与安全配置优化
运维·网络·安全