Загрузка не по ImageBase

Тема в разделе "WASM.BEGINNERS", создана пользователем Codegrammer, 13 апр 2010.

  1. Codegrammer

    Codegrammer New Member

    Публикаций:
    0
    Помогите разобраться. Не могу понять, что происходит. Беру обычный калькулятор (calc.exe из Windows7). В бинарнике указан ImageBase = 01000000h (тоже и LordPE). Когда гружу его через ollydbg он, грузится не по этому адресу. (Но ведь это exe-шник. Весь простор ВАП открыт) Кроме того, сам олли говорит, что ImageBase = 00c70000h. Кто-нибудь с этим сталкивался? Мне нужно знать, как это обойти. А именно, нужно ТОЧНО знать, какой ImageBase будет использоваться при загрузке.
     
  2. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    А в этом файле есть таблица поправок?
    Если есть, то Win7 может грузить его по другому адресу.
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Codegrammer
    удали из .exe директорию релоков
     
  4. Codegrammer

    Codegrammer New Member

    Публикаций:
    0
    Да. Спасибо большое. Дело было в этом.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Это называется address space layout randomization. Не основная его часть, но как одна из фич. Системные модули всегда грузятся по разным адресам
     
  6. Bazhan

    Bazhan Андрей

    Публикаций:
    0
    нет необходимости ничего удалять, достаточно выставить флаг IMAGE_FILE_RELOCS_STRIPPED в IMAGE_FILE_HEADER->characteristics
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Bazhan
    Есть. При выставленном флаге образ всё равно может грузиться не по дефолтному базовому адресу.
    Пруфлинк: http://www.wasm.ru/forum/viewtopic.php?id=34349
     
  8. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    На самом деле желанность наличия\отсутствия директории релоков может зависеть от задачи. Вот здесь были такие варианты:

    – IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
    ASLR для модуля мягко отключена (флаг может быть передавлен общесистемным параметром 'MoveImages').

    – IMAGE_FILE_RELOCS_STRIPPED
    ASLR для модуля жёстко отключена (флаг не может быть передавлен, но при кофликте адресов в момент проецирования и наличии директории релоков модуль может быть релоцирован).