数据执行保护(Data Execution Prevention)

作者:{YSYY}@ArkTeam

Data Execution PreventionDEP),即数据执行保护,是Windows上的可执行空间保护策略,能够在内存上执行额外检查以阻止数据页(如默认的堆页、各种堆栈页及内存池页)执行恶意代码,防止缓冲区溢出攻击。


图1 DEP工作原理

缓冲区溢出攻击的根源在于计算机对数据和代码没有明确区分,当程序溢出成功转入数据页的shellcode时,会成功执行恶意指令。而DEP的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode尝试在数据页面上执行指令时,CPU 会抛出异常,而不执行恶意指令。

微软从Windows XP SP2开始提供DEP支持。操作系统通过在内存的页面表(Page Table)设置内存页的NX/XD属性标记,来指明不能从该内存执行代码。当该标识位设置为0时表示这个页面允许执行指令,设置为1时表示该页面不允许执行指令。

附录:

1. Win7/Win10开启数据执行保护(默认开启)

“计算机”->右键菜单”属性”->”高级系统设置”->”高级”->”设置”->”数据执行保护”,可设置”仅为基本Windows程序和服务启用DEP”或”为除下列选定程序之外的所有程序和服务启用DEP”。


图2 Win7开启数据执行保护操作过程

2. Win7/Win10关闭数据执行保护(不推荐关闭)

命令行窗口->右键”以管理员身份运行”->执行命令”bcdedit.exe/set {current} nx AlwaysOff”->重启电脑后生效(所有设置显示为不可用状态)。


图3 Win7关闭数据执行保护


图4 Win7关闭数据执行保护后设置选项显示不可用

发表评论

电子邮件地址不会被公开。 必填项已用*标注