Как включить DEP или ASLR для моего приложения.NET?

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам