DEP
DEP- =
Data Execution Prevention=数据执行保护 - 背景
- 早期操作系统没有区分数据和代码,
EIP指向哪里就去哪里执行 - -> 溢出攻击的根源在于现代计算机对数据和代码没有明确区分这一先天缺陷,就目前来看重新去设计计算机体系结构基本上是不可能的,我们只能靠向前兼容的修补来减少溢出带来的损害,DEP(数据执行保护,Data Execution Prevention)就是来弥补计算机对数据和代码混淆这一缺陷的
- 微软从WinXP SP2开始提供这种技术支持
- 早期操作系统没有区分数据和代码,
- 含义:
堆,栈上的内存页属性为不可执行,执行会出错 - 目的:防止某些内存区块,比如栈,被执行
- 如何开启
- 语法:
- 开启:
/NXCOMPAT - 关闭:
/NXCOMPAT:NO
- 开启:
- 选项设置
- 语法:
- 效果
- 开启了DEP后,能帮助检测到异常情况:
- 开启DEP前后的流程对比
- 开启了DEP后,能帮助检测到异常情况:
- 详解
DEP能够在内存上执行额外检查以帮助防止在系统上运行恶意代码DEP是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在Microsoft Windows XP Service Pack 2及以上版本的Windows中,由硬件和软件一起强制实施DEP- 支持
DEP的CPU利用一种叫做No eXecute=不执行的技术识别标记出来的区域。如果发现当前执行的代码没有明确标记为可执行(例如程序执行后由病毒溢出到代码执行区的那部分代码),则禁止其执行,那么利用溢出攻击的病毒或网络攻击就无法利用溢出进行破坏了。如果CPU不支持DEP,Windows 会以软件方式模拟出DEP的部分功能
- =
相关
- 如果同时开启了
DEP和ASLR- 会让破解非常困难
- 背景:一般用
shellcode和ROP技术去破解
- 背景:一般用
- 会让破解非常困难
ROP- =
Return Oriented Programming- 早期叫:
Ret2Libc - 实现原理
ROP由一系列的Gadget组成- 所谓
ROP Gadget,就是一系列以retn结尾的指令,所有的这些Gadget组合起来就能完成特定的任务- 比如调用
VirtualProtect给指定的内存块添加可执行属性
- 比如调用
- 早期叫:
- =
- 寄存器
eipesp+offset
- 如果同时开启了



