数据执行保护(Data Execution Prevention,简称DEP)操作系统中的一项安全功能,旨在防止恶意代码利用缓冲区溢出漏洞执行。它通过将内存的某些区域标记为不可执行,从而防止从这些区域执行代码。这适用于所有程序,包括第三方程序,而不仅仅是Windows系统组件和服务。。根据设置,DEP的保护范围和严格程度会有所不同。

1. **为所有程序和服务启用DEP**:这种模式被称为“AlwaysOn”,它为所有程序和服务启用了DEP保护,不允许任何程序从受保护的内存区域执行代码。这种模式提供了最大程度的保护,但可能会影响一些旧版软件的兼容性。在64位操作系统上,默认情况下DEP就是以这种方式启用的。

2. **仅为基本Windows程序和服务启用DEP**:这种模式被称为“Option”,它只对Windows系统组件和服务启用DEP保护,而对其他第三方应用程序则不启用。这样既可以保护系统关键组件不受恶意代码的侵害,又能避免影响大多数第三方应用程序的正常运行。这是DEP的默认设置,在一些旧的Windows版本中,可以通过系统属性中的“数据执行保护”选项卡进行配置。

  为所有程序和服务启用DEP与仅为基本Windows程序和服务启用DEP的主要区别在于保护范围和潜在的兼容性问题。当您选择为所有程序和服务启用DEP”时,DEP将会对计算机上运行的所有程序进行监控,以确保它们安全地使用系统内存,从而提供更高级别的安全保护。然而,这也可能导致一些较旧的或不兼容的程序出现问题或无法运行。

相反,选择仅为基本Windows程序和服务启用DEP”则仅对Windows系统组件和服务提供保护,这可以减少对第三方程序的干扰,但相应地降低了对某些潜在威胁的防护。这种模式通常足以满足大多数用户的需求,同时保持系统的稳定性和兼容性。

仅为基本Windows程序和服务启用DEP”的配置下,DEP仅对关键的Windows系统组件和服务提供保护,但这种模式可以被应用程序动态关闭。这意味着,如果第三方程序确定它们不会受到缓冲区溢出攻击的影响,或者它们需要执行某些特定的内存操作,它们可以选择关闭DEP。然而,这可能会使这些程序容易受到攻击,然后可能会传播到计算机上的其他程序和文件

数据执行保护开启步骤如下:

 

1. **打开系统属性**

   - Windows搜索栏中输入“系统”,然后打开它。

 

 

2. **进入高级系统设置**

   - 在系统属性窗口中,点击“高级”选项卡,然后点击“设置”按钮旁边的“性能”部分。

 

 

 

3. **打开数据执行保护选项**

   - 在性能选项窗口中,点击“数据执行保护”选项。

 

 

4. **选择DEP策略**

   - 在数据执行保护窗口中,可以选择以下选项之一:

     - 仅为基本Windows程序和服务启用DEP

     - 为所有程序和服务启用DEP

 

5. **应用更改**

   - 选择适当的选项后,点击“应用”按钮来保存更改。

 

 

6. **重启计算机**

   - 为了使更改生效,需要重启计算机。

 

7. **验证DEP状态**

   - 打开“命令提示符”(以管理员身份)。

   - 输入命令 `wmic OS Get DataExecutionPrevention_SupportPolicy` 并按回车键。

   - 系统将返回一个数字,代表DEP的当前状态:

     - **0**:所有进程都禁用DEP

     - **1**:所有进程均启用DEP

     - **2**(默认):仅对Windows系统组件和服务启用DEP

 

 

8. **验证DEP状态是否生效**

   运行包含故意制造缓冲区溢出的代码,例如使用不安全的gets函数。如果DEP生效,尝试运行该程序时,程序应该会因违反DEP规则而被操作系统终止

 

 

缓存区溢出代码示例:

#include <stdio.h>
#include <stdlib.h>

int main() {
    // 声明一个大小为256的字符数组
    char buffer[256];

    // 通过gets函数填充buffer,这是一个危险操作,因为它不检查边界
    printf("请输入一些文本:");
    gets(buffer);

    // 尝试执行buffer中的代码
    // 如果DEP生效,此操作将导致程序被操作系统终止
    ((void (*)())buffer)();

    return 0;
}

  

 

posted on 2024-08-28 00:56  阿吉啊  阅读(37)  评论(0编辑  收藏  举报