Здравствуйте, CaptainFlint, Вы писали:
CF>Пока что только успел попробовать /FIXED:NO, но он релокаций не добавил (что ожидаемо, ибо это и CF>так умолчальное значение для программ), а на большее времени пока не удалось выкроить.
Релокаций здесь не добавлено, потому что код очень компактный и без CRT.
Видимо, он получился полностью базонезависимым и секция релоков ему просто не нужна.
CF>...чем вообще отличаются опции /FIXED:NO и /DYNAMICBASE…
Когда указан флаг 'FIXED:NO', генерируется секция релоков, но система все равно в
первую очередь будет пытаться загружать модуль по предпочтительному адресу, и
только если это невозможно, например адрес уже занят другим модулем, будет
перемещать его.
Когда указан флаг 'DYNAMICBASE', система сразу пытается загружать модуль по
произвольному адресу (рандомному, см. технологию ASLR). HIGHENTROPYVA добавляет
еще больше рандомности в этот процесс.
Разница, насколько я понимаю, лишь в этом.
Кстати, на последних Виндах можно программно запретить запуск приложений, скомпиленных
без поддержки релоков + ASLR, см. SetProcessMitigationPolicy + ProcessASLRPolicy.