Как включить DEP или ASLR для моего приложения .NET? - PullRequest
6 голосов
/ 03 июля 2010

Я пишу свою программу на VS2010, и целью сборки является .NET 4. Я считаю, что флаг совместимости DEP включен по умолчанию.Это правда?

.NET также совместим по умолчанию с ASLR , и включена ли ASLR по умолчанию для моего процесса, или я должен запросить его во время выполнения?

1 Ответ

14 голосов
/ 04 июля 2010

Да, флаг NXCOMPAT включен стандартными компиляторами языка .NET, поскольку .NET 2.0 SP1.

ASLR по существу автоматически в программах .NET благодаря компилятору JIT.Где он будет размещен скомпилированный машинный код JIT непредсказуемо.Хотя это, вероятно, будет повторяться на той же машине с точно таким же номером ревизии CLR и точно таким же потоком кода запуска и точно такими же DLL-библиотеками, внедряемыми в процесс.Не легко нацелены вредоносными программами, хотя.Начиная с выпуска .NET 3.5 с пакетом обновления 1 (SP1) .NET сборки ngen поддерживают ASLR.

Гораздо более мощным является ASLR для данных, что является более важной мерой против атак.Важно, потому что подавляющее большинство атак начинается с вредоносных данных.Каждый раз, когда вы запускаете вашу программу, меняется расположение стека потока, кучи GC и статических данных.Может быть довольно больно, если вы пытаетесь отладить AVE, кстати.

ASLR защищает от известных не исправляемых недостатков безопасности.Сначала должен существовать недостаток безопасности, необычный в проверяемом коде.

...