Подробно описание на функцията Data Execution Prevention (Предотвратяване на изпълнението на код, DEP) в Windows XP Service Pack 2, Windows XP Tablet PC Edition 2005 и Windows Server 2003

Преводи на статии Преводи на статии
ID на статията: 875352 - Преглед на продукти, за които се отнася тази статия.
Разгъване на всички | Сгъване на всички

На тази страница

КРАТКО ИЗЛОЖЕНИЕ

Data Execution Prevention (DEP) e комбинация от хардуерни и софтуерни технологии, извършващи допълнителни проверки на паметта с цел предотвратяване на изпълнението на опасен код в системата. В Microsoft Windows XP Service Pack 2 (SP2) и Microsoft Windows XP Tablet PC Edition 2005 реализацията на DEP се извършва от хардуера и от софтуера.

Основното предимство на DEP е това, че тя помага за предотвратяване на изпълнението на код от страници с данни. Обикновено кодът не се изпълнява от динамичната памет и стека по подразбиране. Хардуерно реализираната DEP открива код, задействан от тези местоположения, след което извиква изключение при изпълнението му. Софтуерно реализираната DEP може да помогне за предотвратяването на възможността опасният код да се възползва от механизмите за обработка на изключения в Windows.

ВЪВЕДЕНИЕ

ДОПЪЛНИТЕЛНА ИНФОРМАЦИЯ

Хардуерно реализирана DEP

При използване на хардуерно реализирана DEP всички области на паметта се маркират като неизпълними, освен ако мястото изрично не съдържа изпълним код. Съществува клас от атаки, които се опитват да вмъкнат код в области на паметта, които не съдържат изпълним код, след което да го стартират. DEP помага за предотвратяването на тези атаки, като ги прихваща и извиква изключение.

Хардуерно реализираната DEP разчита на хардуера на процесора да маркира области на паметта с атрибут, сочещ, че от тези области не бива да се изпълнява код. DEP функционира на ниво виртуални страници и обикновено извършва малки промени в записа на таблицата на страницата (PTE), за да маркира страницата на паметта.

Архитектурата на процесора определя реализацията на DEP в хардуера и начина, по който DEP отбелязва виртуалната страница на паметта. Процесори, поддържащи хардуерно реализираната DEP, могат да извикват изключения при изпълнение на код от страница, маркирана чрез съответния низ от атрибути.

Компаниите AMD и Intel са дефинирали и произвеждат съвместими с Windows архитектури, поддържащи DEP.

Започвайки от Windows XP SP2 32-битовите версии на Windows използват една от следните функции:
  • Дефинираната от AMD процесорна функция no-execute page-protection (NX).
  • Дефинираната от Intel функция Execute Disable Bit (XD).
За да използвате тези процесорни функции, е необходимо процесорът да работи в режим на разширение на физически адреси (PAE). Windows автоматично активира режима PAE, за да поддържа DEP, поради което не е необходимо потребителите отделно да активират PAE с помощта на параметъра /PAE във boot.ini.

Забележка Тъй като 64-битовите ядра поддържат Address Windowing Extensions (AWE), 64-битовите версии на Windows не съдържат отделно PAE ядро.
За допълнителна информация относно PAE и AWE в Windows Server 2003 щракнете върху следния номер на статия в базата знания на Microsoft:
283037 Поддръжка на памети с голям размер в Windows Server 2003 и в Windows 2000 (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)

Софтуерно реализирана DEP

Допълнителна поредица от проверки на защитата Data Execution Prevention (Предотвратяване на изпълнението на код) е била добавена в Windows XP SP2. Тези проверки, известни като софтуерно реализирана DEP, са създадени за блокиране на опасен код, който се възползва от механизмите за обработка на изключения в Windows. Софтуерно реализираната DEP функционира на всеки компютър, съвместим с Windows XP SP2. По подразбиране софтуерно реализираната DEP помага за защитата само на ограничени системни двоични файлове независимо поддръжката от процесора на хардуерно реализираната DEP.

Предимства

Основното предимство на функцията DEP, е че тя помага за предотвратяване на изпълнението на код от страници с данни (като страници по подразбиране на динамичната памет, различни стекови страници и страници от пула на паметта). Обикновено кодът не се изпълнява от динамичната памет и стека по подразбиране. Хардуерно реализираната DEP открива код, задействан от тези местоположения, след което извиква изключение при изпълнението му. Ако изключението остане необработено, изпълнението на процеса ще бъде спряно. Изпълнението на код от защитената памет в режима на ядрото причинява стоп-грешка.

Функцията DEP може да помогне за блокирането на клас атаки срещу защитата. В частност DEP може да помогне за блокиране на опасна програма, в която вирус (или друг вид атака) е поместил процес с допълнителен код и се опитва да го задейства. В система с функцията DEP изпълнението на вложен код причинява изключение. Софтуерно реализираната DEP може да помогне за блокирането на програми, които се възползват от механизмите за обработка на изключения в Windows.

Конфигурация на DEP, обхващаща цялата система

Конфигурацията на DEP за системата се контролира чрез параметри във файла Boot.ini. Ако сте влезли в системата като администратор, можете лесно да конфигурирате настройките на функцията DEP в диалоговия прозорец System (Система) на контролния панел.

Windows поддържа четири конфигурации, обхващащи цялата система, както за хардуерно реализирани, така и за софтуерно реализирани DEP.
Сгъване на таблицатаРазгъване на таблицата
КонфигурацияОписание
OptIn (С добавяне)Тази настройка представлява конфигурацията по подразбиране. На системи с процесори, поддържащи хардуерно реализирана DEP, последната се активира по подразбиране за ограничени системни двоични файлове и добавени към обхвата на DEP програми. При тази опция само системни двоични файлове на Windows се обхващат от DEP по подразбиране.
OptOut (С изключване)DEP се активира по подразбиране за всички процеси. Можете ръчно да създадете списък с определени програми, към които DEP да не се прилага, чрез диалоговия прозорец System (Система) в контролния панел. Специалистите могат да използват Application Compatibility Toolkit (Комплекта инструменти за проверка на съвместимостта на приложенията) за да изключват една или повече програми от защитата на DEP. Корекциите за системна съвместимост за функцията DEP влизат в сила.
AlwaysOn (Винаги активна)Тази настройка осигурява пълен обхват на цялата система от DEP. Всички процеси винаги протичат с прилагане на DEP. Не съществува списък с програми, които да са изключения от DEP защитата. Корекциите за системна съвместимост за функцията DEP не влизат в сила. Програмите, които са били изключени с помощта от Application Compatibility Toolkit (Комплекта инструменти за проверка на съвместимостта на приложенията), функционират с прилагане на DEP.
AlwaysOff (Винаги неактивна)Tази настройка не осигурява никакво DEP покритие за която и да е част на системата, независимо от хардуерната поддръжка на DEP. Процесорът не функционира в режим PAE, освен ако опцията /PAE е налична във файла Boot.ini.
Хардуерно реализираната DEP е конфигурирана по един и същи начин със софтуерно реализираната функция DEP. Ако DEP правилата, обхващащи цялата система, са в режим OptIn, същите основни двоични файлове и програми на Windows ще бъдат защитени както от хардуерно реализираната, така и от софтуерно реализираната функция DEP. Ако системата не може да използва хардуерно реализираната DEP, то основните двоични файлове и програми на Windows ще бъдат защитени само от софтуерно реализираната DEP.

По подобен начин, ако правилата на функцията DEP за цялата система са в режим OptOut, то програмите, които са били изключени от защитените от DEP, ще бъдат изключени както от хардуерно реализираната, така и от софтуерно реализираната DEP.

Параметрите на файла Boot.ini са следните:
/noexecute=ниво_на_правилата
Забележка ниво_на_правилата може да приема стойности AlwaysOn, AlwaysOff, OptIn или OptOut.

Наличните параметри /noexecute във файла Boot.ini не се променят след инсталацията на Windows XP SP2. Тези настройки не се променят също и при преместване на образ на операционната система Windows на други компютри, независимо от наличието на тях на хардуерно реализирана поддръжка на DEP.

При инсталацията на Windows XP SP2 и Windows Server 2003 SP1 (или следващи версии), нивото на правилата OptIn се активира по подразбиране, освен ако различно ниво на правилата е посочено при автоматичната инсталация. Ако параметърът /noexecute=ниво_на_правилата липсва във файла Boot.ini за версия на Windows, която поддържа функцията DEP, поведението на системата ще е същото, като при включване на настройката /noexecute=OptIn.

Ако сте влезли в системата като администратор, можете ръчно да конфигурирате DEP да превключва между правилата (режимите) OptIn и OptOut в раздела Data Execution Prevention (Предотвратяване на изпълнението на код) в System Properties (Системни свойства). Следната процедура описва начин за ръчно конфигуриране на DEP на компютъра:
  1. Щракнете върху Start (Старт), изберете Run (Изпълни), въведете sysdm.cpl и след това натиснете OK.
  2. В раздела Advanced (Разширени) под Performance (Производителност) натиснете Settings (Настройки).
  3. В раздела Data Execution Prevention (Предотвратяване на изпълнението на код) реализирайте една от следните процедури:
    • Щракнете върху Turn on DEP for essential Windows programs and services only (Активиране на DEP само за най-важните програми и услуги на Windows), за да изберете правилото OptIn.
    • Щракнете върху Turn on DEP for all programs and services except those I select (Активиране на DEP за всички програми и услуги, освен избраните от мен), за да изберете правилото OptOut, след което натиснете Add (Добави), за да добавите програмите, за които не искате да се използва функцията DEP.
  4. Натиснете двукратно върху OK.
Специалистите могат да контролират конфигурацията на функцията DEP за цялата система използвайки няколко различни метода. Файлът Boot.ini може да бъде модифициран директно чрез механизми за скриптиране или с инструмента Bootcfg.exe, включен в Windows XP SP2.

За конфигуриране на DEP да премине към правилото AlwaysOn чрез файла Boot.ini изпълнете следните стъпки:
  1. Натиснете бутона Start (Старт), щракнете с десния бутон върху My Computer (Моят компютър) и след това върху Properties (Свойства).
  2. Щракнете върху раздела Advanced (Разширени), след което върху Settings (Настройки) под полето Startup and Recovery (Стартиране и възстановяване).
  3. В полето System startup (Стартиране на системата) натиснете Edit (Редактиране). Файлът Boot.ini се отваря в Notepad (Бележник).
  4. В Notepad (Бележник) изберете опцията Find (Намери) в менюто Edit (Редактиране).
  5. В полето Find what (Намери какво) въведете /noexecute и натиснете Find Next (Намери следващ).
  6. В диалоговия прозорец Find (Търсене) натиснете Cancel (Отказ).
  7. Сменете ниво_на_правилата с AlwaysOn.

    ПРЕДУПРЕЖДЕНИЕ Уверете се, че сте въвели текста правилно. Параметърът на файла Boot.ini сега трябва да е:
    /noexecute=AlwaysOn
  8. В Notepad (Бележник) изберете опцията Save (Запиши) в менюто File (Файл).
  9. Натиснете двукратно върху OK.
  10. Рестартирайте компютъра.
При автоматични инсталации на Windows XP SP2 или по-късни версии можете да използвате файла Unattend.txt за предварително задаване на определена DEP конфигурация. Можете да използвате записа OSLoadOptionsVar в раздела [Data] на файла Unattend.txt, за да зададете конфигурация на DEP за цялата система.

Конфигурация на DEP за отделни програми

Когато нивото на правилата на DEP е зададено като OptOut с цел осигуряване на съвместимост между програми можете да деактивирате DEP за избрани отделни 32-битови програми. За целта използвайте раздела Data Execution Prevention (Предотвратяване на изпълнението на код) в System Properties (Системни свойства), за да деактивирате DEP за отделна програма. За IT специалисти в Windows XP SP2 е добавена нова корекция за съвместимост на програми, наречена DisableNX. Корекцията за съвместимост DisableNX деактивира Data Execution Prevention (Предотвратяване на изпълнението на код) за програмата, към която се прилага корекцията.

Корекцията за съвместимост DisableNX може да бъде приложена към програма с помощта на Application Compatibility Toolkit (Комплекта инструменти за проверка на съвместимостта на приложенията). За повече информация относно съвместимостта на програми с Windows вижте Windows Application Compatibility (Съвместимост на приложения с Windows) на следния сайт на Microsoft:
http://www.microsoft.com/technet/prodtechnol/windows/appcompatibility/default.mspx
За допълнителна информация щракнете върху следния номер на статия в базата знания на Microsoft:
912923 Как да определите, дали хардуерна DEP присъства и е конфигурирана на вашия компютър (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)

БИБЛИОГРАФИЯ

За допълнителна информация щракнете върху следния номер на статия в базата знания на Microsoft:
899298 В помощната тема "Какво представлява Data Execution Prevention (Предотвратяване на изпълнението на код)" е неправилно посочена настройката по подразбиране за DEP в Windows Server 2003 Service Pack 1 (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)

Свойства

ID на статията: 875352 - Последна рецензия: 24 ноември 2006 г. - Редакция: 14.1
ВАЖИ ЗА
  • Microsoft Windows Server 2003 Service Pack 1 при използване с:
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows XP Professional Service Pack 2 (SP2)
  • Microsoft Windows XP Home Edition Service Pack 2 (SP2)
  • Microsoft Windows XP Media Center Edition Service Pack 2 (SP2)
  • Microsoft Windows XP Tablet PC Edition 2005
Ключови думи: 
kbinfo kbtshoot KB875352

Изпратете обратна информация

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com