Как определить, участвует ли EXE (или DLL) в ASLR, то есть можно ли перемещать?

Как определить, участвует ли EXE (или DLL) в ASLR, то есть можно ли перемещать?

Я хочу проверить некоторые EXE-файлы в моей системе, можно ли их перемещать и участвовать в ASLR.

Я знаю, что поведение компоновщика по умолчанию состоит в удалении базовых перемещений, чтобы EXE не перемещался?

Как я могу увидеть из такого инструмента, как FileAlyzer, участвует ли изображение в ASLR?

1 ответ

Перемещаемый модуль (exe или dll) не обязательно должен включать ASLR, но модуль с включенным ASLR должен быть перемещаемым.

Модуль с поддержкой ASLR (использующий переключатель компоновщика /DYNAMICBASE) будет загружен по произвольному адресу независимо от его ImageBase (предпочтительный адрес загрузки), и поэтому он должен быть перемещаемым или не может быть загружен.

Если модуль не поддерживает ASLR, загрузчик сначала попытается загрузить его в ImageBase. Если это невозможно (память уже выделена), она попытается загрузить ее по другому адресу; если модуль перемещаем, он будет успешным, если нет, то потерпит неудачу.

Как определить перемещаемый модуль?

Модуль, который нельзя перемещать, будет иметь битовый флаг IMAGE_FILE_RELOCS_STRIPPED (0x0001), установленный в поле "Характеристики" своего заголовка файла. У перемещаемого модуля этот бит будет очищен, и у него также будет раздел с перемещениями (например,.reloc). Вы можете проверить этот флаг с помощью программного обеспечения, такого как PEView или dumpbin /headers your_module.exe (или dll)

Как определить модуль с включенным ASLR?

Модуль с поддержкой ASLR будет перемещаемым (флаг удаления лишних перемещений не установлен), а также будет иметь флаг IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE (0x0040), установленный в поле DllCharacteristics необязательного заголовка. DllCharacteristics используется как для EXE, так и для DLL независимо от его имени.

Опять же, вы можете проверить наличие этого флага с помощью проводника PE-файлов, такого как PEView или dumpbin /headers your_module.dll (или exe).

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