Как флаг NX работает?

Вы могли объяснить, что флаг NX и как он работает (быть техническим)?

7
задан Psychonaut 20 February 2015 в 13:53
поделиться

3 ответа

Помечает не исполняемую страницу памяти в системе виртуальной памяти и в TLB (структуре, используемой CPU для разрешения отображений виртуальной памяти). Если с такой страницы будет выполняться какой-нибудь программный код, то процессор выйдет из строя и передаст управление операционной системе для обработки ошибок.

Программы обычно имеют свой двоичный код и статические данные в разделе памяти, доступном только для чтения, и если они когда-либо попытаются туда записать, то процессор выйдет из строя, и тогда операционная система, как правило, убьет приложение (это называется ошибкой сегментации или нарушением доступа).

Из соображений безопасности память программы, предназначенная для чтения/записи, по умолчанию защищена NX. Это не позволяет злоумышленнику предоставить какому-либо приложению свой вредоносный код в качестве данных, заставляя приложение записать это в свою область данных, а затем каким-то образом выполнить этот код, обычно с помощью уязвимости переполнения/переполнения буфера в приложении, перезаписывая адрес возврата функции в стеке с местоположением вредоносного кода в области данных.

Некоторые легитимные приложения (особенно высокопроизводительные эмуляторы и JIT-компиляторы) также должны выполнять свои данные, так как они компилируют код во время выполнения, но они специально выделяют память без NX-флага для этого.

4
ответ дан 7 December 2019 в 10:01
поделиться

Из Википедии

Бит NX, что означает "Нет". eXecute, это технология, используемая в процессорах. для разделения областей памяти для использования при любом хранении процессора инструкции (или код) или для хранения данных, функция, которая обычно встречается только в архитектурных процессорах Гарварда. Однако, бит NX всё более широко используемый в обычных фургонах Неймановские архитектурные процессоры, для из соображений безопасности.

Операционная система с поддержкой бит NX может отмечать некоторые области память как неисполняемая. процессор откажется выполнять любой код, проживающий в этих районах память. Общая техника, известная в качестве исполняемой защиты пространства, является используемый для предотвращения некоторых видов вредоносная программа от принятия на себя компьютеры путем вставки их кода в область хранения данных другой программы и запускают свой собственный код изнутри этот раздел; он известен как атака переполнения буфера.

2
ответ дан 7 December 2019 в 10:01
поделиться

Посмотрите на это « DEP , найденные в Wikipedia, который использует NX BIT. Что касается предоставления технического ответа, извините, я не знаю этого, но к цитату:

Предотвращение выполнения данных (DEP) - это функция безопасности, включенная в современную Microsoft Windows Операционные системы, предназначенные для предотвращения Приложение или сервис от выполнения кода из неизонной области памяти. ....

DEP был представлен в Windows XP Service Pack 2 и включен в Windows XP Tablet PC Edition 2005, Windows Server 2003 Пакет обновления 1 и позже, Windows Vista и Windows Server 2008 и все новые версии Windows. ...

Attribrued Hapware DEP позволяет NX BIT на совместимых процессорах через Автоматическое использование ядра PAE в 32-разрядных окнах и нативную поддержку на 64-битных ядра. Windows Vista DEP работает, отмечая определенные части памяти как предназначена для Удерживайте только данные, которые получают процессор NX или XD Bit, затем понимают как не исполняемый. Это помогает предотвратить превышение преодоления буферов после успеха. В Windows Vista, Статус DEP для процесса, то есть ли DEP включен или отключен для Особый процесс можно просматривать на вкладке процессов в задаче Windows Менеджер.

также см. Также здесь из базы знаний MSDN о DEP. Здесь очень подробное объяснение о том, как это работает.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0
ответ дан 7 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: