当前位置: 首页 > news >正文

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

    函数调用的返回地址;

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

    易受攻击的函数参数;

相关文章:

  • 【一百】【算法分析与设计】N皇后问题常规解法+位运算解法
  • C语言(内存函数)
  • 挂上了代理加速器梯子之后,Git clone指令下载仍旧很慢的问题
  • OpenCV学习 基础图像操作(十七):泛洪与分水岭算法
  • 9 html综合案例-注册界面
  • LIO-EKF: 运行数据UrbanNav与mid360设备详细教程
  • 黑马一站制造数仓实战2
  • C#使用GDI对一个矩形进行任意角度旋转
  • exe语言编程:深入探索与挑战未知
  • 香橙派OrangePI AiPro测评 【运行qt,编解码,xfreeRDP】
  • 49、Floyd求最短路
  • 4K高刷显示器 - 蚂蚁电竞ANT27VU
  • Swift 并发
  • 机器学习模型以及优缺点——logistic
  • java基础-chapter18(网络编程)
  • [数据结构]链表的实现在PHP中
  • 230. Kth Smallest Element in a BST
  • android 一些 utils
  • Android交互
  • CODING 缺陷管理功能正式开始公测
  • Cookie 在前端中的实践
  • Docker: 容器互访的三种方式
  • HashMap ConcurrentHashMap
  • JavaScript函数式编程(一)
  • JS实现简单的MVC模式开发小游戏
  • magento2项目上线注意事项
  • Python - 闭包Closure
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 多线程 start 和 run 方法到底有什么区别?
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 开源SQL-on-Hadoop系统一览
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 驱动程序原理
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • Linux权限管理(week1_day5)--技术流ken
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #QT(串口助手-界面)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)常见O(n^2)排序算法解析
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (二)学习JVM —— 垃圾回收机制
  • (七)c52学习之旅-中断
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (算法)N皇后问题
  • (算法设计与分析)第一章算法概述-习题
  • (学习总结)STM32CubeMX HAL库 学习笔记撰写心得
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转)http协议
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)视频码率,帧率和分辨率的联系与区别
  • .form文件_一篇文章学会文件上传
  • .NET Micro Framework初体验(二)