Нужна ли секция '.reloc'?..

Тема в разделе "WASM.WIN32", создана пользователем AsmGuru62, 10 дек 2006.

  1. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    В примере PEDEMO (пакет FASM) - есть в конце файла такая запись:
    Код (Text):
    1. section '.reloc' fixups data readable discardable
    Я пробовал компилировать с этой записью и без неё - программа работает без проблем в обеих случаях. Вопрос: в каких случаях нужна эта запись? Эта секция пуста почему-то...
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    в PEDEMO.EXE она точно не нужна, но она не пуста ;)
    Нужна DLL'кам и драйверам
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    забыл добавить, нужна в случае загрузки PE не по предпочтительной базе, прописанной в заголовке,
    т.е. например база 0x100000, но файл запускается под win98 где он может быть загружен
    только по базе >=0x400000, если релоков нет, то такой файл не будет загружен вобще
     
  4. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Отлично. Спасибо.
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Надо сказать, что именно секция не обязательно, вполне работает и
    data fixups
    end data

    В отличие от секции ресурсов (.rsrc).
     
  6. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    привет, а для ресурсов отдельная секция ведь тоже не обязательна, главное их (data resource\end data) разместить в начале первой секции, или что-то изменилось с тех пор как тут это тестили?
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    в случае с ресурсами можно сделать в файле всего одну секцию с названием .rsrc
     
  8. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Так можно ж без названия и без описывания секции...
    Код (Text):
    1. ;================================================
    2. format      pe gui
    3. include     '%fasminc%\win32a.inc'
    4. ;================================================
    5. data        resource
    6. end         data
    7. ;================================================
    8. entry       $
    9.             ret
    10. ;================================================
    11. data        import
    12. end         data
    13. ;================================================
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    bogrus
    винда ищет секцию .rsrc, поэтому дабы не иметь проблем лучше с названием

    http://www.wasm.ru/comment.php?toolid=156
     
  10. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Угу....
    SFX-архивы (раровские и др. архиваторов) юзают релок, и если потрешь - файл будет испорчен.
     
  11. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    oleaut32.dll ищет секцию .rsrc. Если прога никак не использует ресурсы TYPELIB (интересно, кстати, что это за ресурс?), то можно без всяких проблем не использовать эту секцию. Причём абсолютному большинству редакторов ресурсов это сносит крышу. (ExeScope, Restorator, ResHacker, VC++6 не видят, только VS2005 как-то справляется)