> Я в общем-то не спорю (хотя видел либы с выпилинными реалоками - Если утонченно извращаться - возможны фокусы поинтереснее. Вон например сабжевую либу можно запустить как исполняемый файл. Либа расскажет что это такое, какой версии, etc. Т.е. оно одновременно и либа и executable. Требует немного утонченного шаманства на уровне линкера (но чем-то таким настоящие системщики и отличаются от сброда).
Релокейшны из либы выпилить технически, конечно, можно. Но это чревато тем что при попытке вгрузки либы лыжи встанут на асфальт и либу вообще не удастся вгрузить. Если адреса заняты а релокаций нет - что остается? Правильно: срубить загрузку либы с ошибкой.
А так - у винды в работе с либами вообще есть несколько веселых заскоков, живущих с незапамятных времен. Путем некоторых относительно честных манипуляций (только системные вызовы, никаких руткитов и суперпривилегий) можно слепить например стелс-процесс который напрочь не видно в манагерах задач, но который выполняется.
> была либа, обработанная "противо-крякерской-защитой")
Всякие пакеры и протекторы делают загрузку кода в память сами, перехватывая инициативу на себя. Что они при этом и как делают с кодом - это очень отдельный вопрос. Могут делать что угодно. В том числе - взять релокации где-то сбоку, в кастомном формате и самолично их обсчитать, например. Если не лениво кодить свой сильно кастомный лоадер и обработку кода - это все возможно. При этом "нет релокаций" лишь с точки зрения того кто ожидал их в дефолтном месте найти, а на самом деле есть, но где их брать и как применять - пакер/протектор сам разбирается.
> Т.е да:
>> вопрос сводится в основном к желанию loader'а либы сделать рандомизацию
Именно. И если микрософтушка это не сделал - это к ним вопросы, имхо.
> помню) одно время даже екзешники такие выдавали - т.е с нужными реалокми.
Да вроде почти все компилеры по дефолту выдают исполняемые файлы с релокейшнами. В случае EXE их можно срезать. Тогда исполняемый файл разумеется будет по фиксированным адресам.
> Да, можно -- но для "суперсекурных" дополнений антивирей желательно загрузить
> либу как можно раньше, что бы значит контроль был и все такое
Для этого есть всякие указания лоадеру ОС сделать прелоад либы. В *никс-образных через переменную окружения LD_PRELOAD, в винде - через какое-то тошнилово с реестром.
> (я честно не понял, зачем нужно грузить либу, если все равно добавляются
> хуки в ядро)
Фиг знает. Может чтобы сложнее было синхронно и незаметно везде вынести антивиря отовсюду, до того как он заметит что что-то идет не так?
> Ну или SetWindowsHookEx.
Ну это все круто, но меня анатомия виндов нынче не очень интересует.
> которой можно менять опции -- т.е "forcing aslr" и все
> в таком духе. А вот "хай-секюрити-софт" -- как раз наоборот :)
Насколько я помню - форсирование ALSR везде может привести к тому что часть программ запускаться не будет (как раз поди те где какой-то умник релоки срезал).
[заскипано]
Как я уже сказал, интимные особенности виндов мне малоинтересны.