Помогите разобраться. Не могу понять, что происходит. Беру обычный калькулятор (calc.exe из Windows7). В бинарнике указан ImageBase = 01000000h (тоже и LordPE). Когда гружу его через ollydbg он, грузится не по этому адресу. (Но ведь это exe-шник. Весь простор ВАП открыт) Кроме того, сам олли говорит, что ImageBase = 00c70000h. Кто-нибудь с этим сталкивался? Мне нужно знать, как это обойти. А именно, нужно ТОЧНО знать, какой ImageBase будет использоваться при загрузке.
Это называется address space layout randomization. Не основная его часть, но как одна из фич. Системные модули всегда грузятся по разным адресам
нет необходимости ничего удалять, достаточно выставить флаг IMAGE_FILE_RELOCS_STRIPPED в IMAGE_FILE_HEADER->characteristics
Bazhan Есть. При выставленном флаге образ всё равно может грузиться не по дефолтному базовому адресу. Пруфлинк: http://www.wasm.ru/forum/viewtopic.php?id=34349
На самом деле желанность наличия\отсутствия директории релоков может зависеть от задачи. Вот здесь были такие варианты: – IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE ASLR для модуля мягко отключена (флаг может быть передавлен общесистемным параметром 'MoveImages'). – IMAGE_FILE_RELOCS_STRIPPED ASLR для модуля жёстко отключена (флаг не может быть передавлен, но при кофликте адресов в момент проецирования и наличии директории релоков модуль может быть релоцирован).