Windows下DEP保护机制详解及其绕过

写在前面:

本篇博客为本人原创,但非首发,首发在先知社区
原文链接:

https://xz.aliyun.com/t/13855?time__1311=mqmxnQG%3DKDu7D%2F7iiQGkAmpoxIEVmYD&alichlgref=https%3A%2F%2Fxz.aliyun.com%2Fu%2F74789

各位师傅有兴趣的话也可以去先知社区个人主页逛逛(个人昵称:Shad0w_2023)。
在开始DEP保护机制的介绍之前,想一想没有开保护时我们的攻击过程,以及开了我们前面介绍的GS和SafeSEH保护的攻击过程,相信大家都能发现一个问题:就是我们本来写入数据区的数据被当作代码执行了,那么站在一个开发者的角度,我们该如何避免这种问题?

一.DEP保护机制详解

我们溢出攻击的根源就是现代计算机对代码和数据没有做明确的区分导致存储在数据区的数据被当作代码执行,而DEP保护机制,就是来弥补计算机这个缺陷的。
DEP将内存中的代码区和数据区明确区分开来,阻止数据页(如默认的堆页,各种堆栈页以及内存池页)执行代码,当指令指针指向数据区的时候,就会抛出异常。微软从Windows XP SP2就开始支持这种技术了。
关于段页保护机制,可以看看大佬写的这篇文章:操作系统学习 — 启动操作系统:进入保护模式
而根据实现的机制不同,可以分为软件DEP和硬件DEP。

  • 软件DEP
    软件DEP实际上就是我们前面介绍的SafeSEH,大家回想一下,是不是阻止数据区代码执行?它的目的是阻止利用SEH的攻击。
  • 硬件DEP
    可以说硬件DEP才是真正的DEP,硬件DEP需要CPU的支持,AMD和Intel都为此做了设计,AMD称之为No-Execute Page-Protection(NX),Intel称之为Execute Disable Bit(XD),两者的工作原理实际上都在本质上相同。

由于软件DEP我们前面已经介绍过了,在这篇文章中我们就来着重介绍一下硬件DEP。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shad0w-2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值