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

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

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

6
задан Tim Lovell-Smith 19 July 2011 в 04:16
поделиться

1 ответ

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

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

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

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

14
ответ дан 8 December 2019 в 17:18
поделиться
Другие вопросы по тегам:

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