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

    函数调用的返回地址;

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

    易受攻击的函数参数;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/659428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MT2075 礼物

思路: x,y为质数,若x2,y3,则xy的最小公倍数6既不能给A也不能给B。 所以假设共有V个数,在1-V中,可以选的个数为:V-⌊V/(x*y)⌋ 个。(⌊V/(x*y)⌋为V个数中有多少个xy的公倍数) 所以…

Kibana使用教程

Kibana使您能够轻松地向Elasticsearch发送请求,并以交互方式分析、可视化和管理数据。 1.安装 1.1 docker安装Kibana 如果你还没安装Elasticsearch,先执行docker安装Elasticsearch,下面是单机部署。 创建一个ES网络: docker n…

信息系统项目管理师0137:输出(8项目整合管理—8.9结束项目或阶段—8.9.3输出)

点击查看专栏目录 文章目录 8.9.3 输出8.9.3 输出 项目文件(更新)可在结束项目或阶段更新所有项目文件,并标记为最终版本。特别值得注意的是,经验教训登记册的最终版本要包含阶段或项目收尾的最终信息。最终版本的经验教训登记册可包含:效益管理、项目评估的准确性、项目和…

Spring和Servlet的整合

Servlet对象是谁创建的? 由服务器端创建的 程序启动调用加载spring配置文件代码 Web应用程序启动也需要加载Spring配置文件 Web开发中有三大组件: 1、servlet 2、filter 3、listener(request,session,application&…

(4)医疗图像处理:MRI磁共振成像-成像技术--(杨正汉)

目录 一、特殊成像技术 1.水成像技术 2.化学位移成像技术 二、成像辅助技术 1.脂肪抑制技术 2.磁化转移技术 3.流动补偿技术 4.空间饱和空间标记技术 5.生理门控及导航回波技术 所有的这些技术最终就是为了使得K空间通过傅里叶变化之后得到的图片变的更为清晰。 一、…

React Hooks是如何保存的

React 函数式组件是没有状态的,需要 Hooks 进行状态的存储,那么状态是怎么存储的呢?Hooks是保存在 Fiber 树上的,多个状态是通过链表保存,本文将通过源代码分析 Hooks 的存储位置。 创建组件 首先我们在组件中添加两…

Nocobase快速上手 - 常见block的使用

在上一篇文章 Nocobase快速上手 -第一个collection 中,我们新建了一个collection ,并且通过在页面中配置block实现了数据的展示,本文继续探索block的使用。 Block类型 Block(区块)的整体架构如下图: 我们可以看到,block分为三个大类&#…

文心智能体平台 | 想象即现实

目录 文心智能体平台介绍平台简介通过平台能做什么平台的优势智能体介绍智能体类型AI 插件介绍 动手创建一个智能体访问平台并进行账号注册根据适合的方式选择智能体类型快速创建智能体智能体个性化模块配置 总结注意事项我的智能体 文心智能体平台介绍 平台简介 文心智能体平…

用Python实现办公自动化

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

【第五节】C++的多态性与虚函数

目录 前言 一、子类型 二、静态联编和动态联编 三、虚函数 四、纯虚函数和抽象类 五、虚析构函数 六、重载,重定义与重写的异同 前言 面向对象程序设计语言的三大核心特性是封装性、继承性和多态性。封装性奠定了基础,继承性是实现代码重用和扩展…

AC/DC电源模块:可靠持久的能源供应

BOSHIDA AC/DC电源模块:可靠持久的能源供应 AC/DC电源模块是一种被广泛应用于工业、通信、医疗等领域的电源设备。其可靠持久的能源供应能够保证设备的正常运行和稳定性能,具有重要的意义。在本文中,我们将详细介绍AC/DC电源模块的特点和优势…

实用新型专利申请被驳回原因

实用新型专利作为知识产权的重要组成部分,对推动技术创新和产业发展具有重要意义。然而,在申请实用新型专利的过程中,有时会遇到被驳回的情况。 实用新型专利被驳回的一个常见原因是技术方案不具备新颖性、创造性和实用性等专利授权条件。专利…

Vue从入门到实战Day12~14 - Vue3大事件管理系统

一、用到的知识 Vue3 compositionAPIPinia / Pinia持久化处理Element Plus(表单校验,表格处理,组件封装)pnpm 包管理升级Eslint prettier 更规范的配置husky(Git hooks工具):代码提交之前,进行校验请求模…

【408真题】2009-24

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

每天学点小知识:图床搭建 + CDN简介

前言: 本章内容帮你解决,本地图片不能分享到网上的问题。需要工具github JSDelivr 知识点 Q:什么是JSDelivr? JSDelivr是一个免费且公开的内容分发网络(CDN),专门用于加速开源项目和静态网站…

武汉城投城更公司与竹云科技签署战略协议,携手构建智慧城市新未来!

2024年5月16日,武汉城投城更公司与深圳竹云科技股份有限公司(以下简称“竹云”)签订战略合作协议,双方将深入推进产业项目合作。 签约现场,双方围绕产业项目合作方向、路径和内容等进行了全面深入交流。城投城更公司党…

AI视频智能分析引领智慧园区升级:EasyCVR智慧园区视频管理方案

一、系统概述与需求 随着信息技术的不断发展,智慧园区作为城市现代化的重要组成部分,对安全监控、智能化管理提出了更高的要求。智慧园区视频智能管理系统作为实现园区智能化管理的重要手段,通过对园区内各关键节点的视频监控和智能分析&…

破解面试难题:面试经典150题 之双指针法详解与代码实现

面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 125. 验证回文串 125. 验证回文串 STL容器 思路: 遍历输入的字符串,将其中的字母字符转换为小写&am…

FL Studio21.2.8中文版让你的音乐创作如鱼得水

在音乐的世界里,我们都是探索者,追求着无尽的创新和可能性。而在这个过程中,我们往往会遇到各种挑战和困扰。如何快速高效地创作出满意的音乐作品?如何将我们的创意完美地呈现出来?这些问题可能一直困扰着你。今天&…

详解 HTML5 服务器发送事件(Server-Sent Events)

HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新。 EventSource 是单向通信的(是服务器向客户端的单向通信,客户端接收来自服务器的事件流)、基于 HTTP 协议(EventSource 是基于标准…