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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
2601_956456341 天前
2026跨境多账号防封指南:四大指纹浏览器多维深度横测,哪款指纹浏览器适合推荐?
人工智能·安全
风落无尘1 天前
第十一章《对齐与安全》 完整学习资料
python·安全·机器学习
JGDT_1 天前
端侧优化与企业落地挑战:Token成本与安全边界
安全
Sagittarius_A*1 天前
H3CSE 高性能园区网:SNMP 网络管理协议详解
网络·计算机网络·安全·h3cse
黎阳之光1 天前
视频孪生+空天地水工融合,黎阳之光构建智慧水利监测新范式
大数据·人工智能·物联网·算法·安全
心 一1 天前
Lonkero Web安全扫描器:从安装到实战的完整指南
安全·web安全
小鹿软件办公1 天前
微软不再声称 Win11 内置安全防护可替代第三方杀毒软件
安全·microsoft
学习溢出1 天前
【网络安全】追踪PowerShell命令历史
安全·网络安全
会周易的程序员1 天前
使用 QClaw 驱动多 Agent 团队对项目进行专业安全审计实战
物联网·安全·iot·aiot·qclaw
codingPower1 天前
JAVA后端安全进阶:基于HMAC-SHA256+Nonce+Timestamp的API防重放攻击方案
java·开发语言·spring boot·安全