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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
llxxyy卢21 小时前
文件操作之文件下载读取全解
安全
虹科网络安全1 天前
艾体宝洞察 | 利用“隐形字符”的钓鱼邮件:传统防御为何失效,AI安全意识培训如何补上最后一道防线
运维·网络·安全
冰敷逆向1 天前
苏宁滑块VMP深入剖析(一):解混淆篇
javascript·爬虫·安全·web
小五传输1 天前
隔离网闸的作用是什么?新型网闸如何构筑“数字护城河”?
大数据·运维·安全
石像鬼₧魂石1 天前
内网渗透是网络安全渗透测试
安全·web安全
Neolnfra1 天前
渗透测试标准化流程
开发语言·安全·web安全·http·网络安全·https·系统安全
奋飞安全1 天前
给你的Ida插上翅膀
安全·逆向
llxxyy卢1 天前
逻辑越权之找回机制接口安全
安全
pusheng20251 天前
普晟传感直播预告 |重塑安全边界:储能与AI数据中心的锂电风险、气体探测技术革新与可量化风险管控
人工智能·安全
云计算练习生1 天前
渗透测试行业术语扫盲(第十六篇)—— 红蓝对抗与演练类
网络·安全·网络安全·信息安全·渗透测试术语