Да все так, вы абсолютно правы, приложение должно быть даже не слинковано, а скомпилировано с -fPIE (у вас в Windows это /DYNAMICBASE у линкера), что бы его рантайм-линкер мог загрузить по любому адресу.
Статья задумывалась научно-популярной, пересказ же сотни аббревиатур кого угодно загонит в сон.
К тому же по многим из них, если углубляться в детали, можно по отдельной статье написать. Те же нюансы реализации ASLR: что библиотеки друг относительно друга не рандомизируются, а только общая база, что в Windows библиотеки рандомизируются один раз при загрузке lol, что fork() на корню убивает смысл ASLR (привет Android), а так же что рандомизировать можно не только библиотеки, но и объектники/функции, да и структуры. Ну и Kernel ASLR просто беспомощен для любого сайдченела.
Да все так, вы абсолютно правы, приложение должно быть даже не слинковано, а скомпилировано с -fPIE (у вас в Windows это /DYNAMICBASE у линкера), что бы его рантайм-линкер мог загрузить по любому адресу.
Статья задумывалась научно-популярной, пересказ же сотни аббревиатур кого угодно загонит в сон.
К тому же по многим из них, если углубляться в детали, можно по отдельной статье написать. Те же нюансы реализации ASLR: что библиотеки друг относительно друга не рандомизируются, а только общая база, что в Windows библиотеки рандомизируются один раз при загрузке lol, что fork() на корню убивает смысл ASLR (привет Android), а так же что рандомизировать можно не только библиотеки, но и объектники/функции, да и структуры. Ну и Kernel ASLR просто беспомощен для любого сайдченела.