Релокейшены

Тема в разделе "WASM.WIN32", создана пользователем B_108, 28 окт 2004.

  1. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    Гм..

    Я запутался...

    Где кроме Fix Up's Table RVA по смещению A4h от начала PE-заголовка может находиться адрес таблиц(ы) настроек?



    Вопрос конкретней: как, например, запускаются все графические fasm'ы?

    Таблица релоков у них отсутствует...
     
  2. Turkish

    Turkish New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    80
    Адрес:
    Russia
    Как и любая другая прога... Грузится образ по адресу 400000h и запускется код по смещению, кратному 1000h. А в чем вопрос то?
     
  3. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    И, кроме того, вовсе не обязательно по смещению A4h от начала PE-заголовка. Так искать фиксапы не корректно.
     
  4. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    Turkish

    А если 400000h уже занят?



    volodya

    А как корректно?)
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    B_108 >




    Как он будет занят, если под процесс (по нормальному) выделяется своё виртуальное адресное пространство?
     
  6. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    Окей,

    поправьте, где я ошибаюсь:

    Фишка вирт. адр. пространства заключается в том, что винда для каждого процесса имеет свой каталог страниц и "переключает" каталоги вместе с переключением процессов.

    Если процесс хочет дотянуться до вирт. адреса, который отстутствует в каталоге страниц, возникает исключение.

    У нас флэт модель памяти. Т.е. адрес 400000h есть только у одного процесса.
     
  7. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Это кто такие, где можно пример посмотреть?
     
  8. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62


    Это компиляторы под винду со встроенным редактором :)

    _http://flatassembler.net/download.php
     
  9. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Эти компиляторы :) (Fasmw.exe) не имеют релоков и у них фиксированный image base (400000h), по которому они и грузятся, т.к. exe модуль проецируется в юзерное простр-во вторым (в NT после ntdll.dll). Это место (400000h) в виртуальном адр. простр-ве свободно (у ntdll.dll image base выше 70000000h) и вообще юзерное простр-во у каждого процесса своё
     
  10. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62


    Все, дошло :)

    Тогда еще один вопрос: когда вообще могут понадобиться релокейшены в екзешниках (не длл)?
     
  11. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    В екзешниках, наверное только когда их надо загрузить по адресу, отличному от image base, указанному на этапе их компиляции.



    Чтобы увидеть "своими глазами" процесс создания процесса :), то, что происходит на этапе инициализации и загрузки модулей в юзермоде, советую сделать так:



    1. Установить OllyDbg

    2. В его настройках поставить галочку (а лучше везде)
    Код (Text):
    1. OllyDbg\Options\Debugging options\Events\[+]Break on debug string
    3. Запустить рег-файл примерно следующего содержания
    Код (Text):
    1. REGEDIT4
    2.  
    3. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\msgbox.exe]
    4. "GlobalFlag"="0x00000002"
    5. "Debugger"="c:\\masm32\\tools\\ollydbg\\ollydbg.exe"
    Где msgbox.exe - отлаживаемое приложение, при запуске которого, будет стартовать отладчик (или что другое;), уведомляемый LDR-строками

    з.ы. во время отладки посматривать на карту памяти (Alt+M)
     
  12. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    B_108

    > когда вообще могут понадобиться релокейшены в екзешниках (не длл)



    Если собрать файл с ImageBase<0x400000 и запускать его в win98 тогда релоки определенно понадобятся :derisive:
     
  13. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    bogrus

    Понял :)

    Спасибо за быстрые ответы :)))

    Наверно, последний вопрос :)





    Но если указывать image base=400000h,

    то на всех существующих версиях виндов конфликта происходить не будет?
     
  14. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    bogrus

    Asterix

    Пока писал, уже ответили :)))

    Всем спасибо!
     
  15. Turkish

    Turkish New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    80
    Адрес:
    Russia
    Процесс, в силу некоторых причин, может отображаться в адресное пр-во другого процесса (например при установке хуков и уж точно не по адресу 400000h), тогда нужны релокейшены. Но, в РЕ ЕХЕ в Виннде2000 и ХР релокейшены игноририруются, в отличнии от 98. Для ДЛЛ релокейшены необходимы, тк вообще говоря неизвестно по какому адресу она грузится.