Сколько битов адреса памяти будет рандомизировано ASLR в 32 и 64-битных Linux и Windows? Пожалуйста, приведите несколько примеров.

1 ответ1

0

Следующее было извлечено из статьи Technet, которая содержит дополнительную информацию.

До Windows 8 64-битные исполняемые изображения получали ту же степень энтропии, которая использовалась при рандомизации 32-битных исполняемых изображений (8 бит или 1 из 256 шансов угадать правильно). Количество энтропии, применяемой к 64-битным изображениям, было значительно увеличено в большинстве случаев, начиная с Windows 8:

DLL images based above 4 GB: 19 bits of entropy (1 in 524,288 chance of guessing correctly)
DLL images based below 4 GB: 14 bits of entropy (1 in 16,384 chance of guessing correctly). 
EXE images based above 4 GB: 17 bits of entropy (1 in 131,072 chance of guessing correctly).
EXE images based below 4 GB: 8 bits of entropy (1 in 256 chance of guessing correctly).

Причина, по которой существуют различия в энтропии из-за базового адреса изображения, опять же по причинам совместимости. В настоящее время ядро Windows использует предпочтительный базовый адрес образа в качестве подсказки, чтобы определить, поддерживает ли образ размер более 4 ГБ. Изображения, основанные на объеме менее 4 ГБ, возможно, не были протестированы в сценариях, в которых они перемещены выше 4 ГБ, и, следовательно, могут иметь проблемы с усечением скрытых указателей. Таким образом, ядро Windows делает все возможное, чтобы эти изображения загружались ниже 4 ГБ. Из-за этих ограничений подавляющее большинство 64-разрядных EXE-файлов и DLL-файлов в Windows 8 и Windows 8.1 были основаны на объеме свыше 4 ГБ, чтобы обеспечить максимальную степень энтропии. 64-разрядные изображения, создаваемые цепочкой инструментов Visual C++, по умолчанию также содержат изображения размером более 4 ГБ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .