Reloc Table в PE64

Discussion in 'WASM.RESEARCH' started by slesh, Mar 21, 2011.

  1. slesh

    slesh New Member

    Blog Posts:
    0
    Столкнулся с интересной вещью - Взял 3 DLL скомпилировал их под x32 - везде есть таблица релоков. Те же DLL компилирую под x64 (на выходе получаю PE64 файл) и там уже релоков нет, но при этом всё работает нормально.
    Вот и возникает вопрос: каким образом система настраивает адреса для DLL? И каким образом тогда можно грузить вручную dll?
    Если для PE32 я выделял память в нужном регионе через VirtualAlloc, затем после обработки секций, если адрес не совпадал с ImageBase из PE то обрабатывал таблицу релоков. А как быть тогда в PE64?

    Или же там не важно куда будет загружена DLL, главное чтобы младшие 32 бита адреса совпали?
     
  2. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
  3. slesh

    slesh New Member

    Blog Posts:
    0
    Спасибо. т.е. выходит что если файл PE64 то скорее всего релоков там не будет, а если и будут то игнорить их?
     
  4. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
    Думаю, совсем игнорировать нельзя, т.к. возможность абсолютной адресации осталась. Не знаю только, используют ее компляторы или нет.
     
  5. KeSqueer

    KeSqueer Сергей

    Blog Posts:
    0
    var a;
    var *pa = &a;
    Так?
     
  6. hewr

    hewr New Member

    Blog Posts:
    0
    >Не знаю только, используют ее компляторы или нет.
    В ряде случаев обойтись без неё просто невозможно, поэтому не могут не использовать релоки. Настраивается по аналогии с х86 достаточно просто.
     
  7. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
    hewr
    А можно пример, когда без них не обойтись?
     
  8. abcd008

    abcd008 New Member

    Blog Posts:
    0
    наверно когда надо обратится к абсолютному адресу. а программу перенесли)
    ведь по умолчанию все относительно rip. перенес rip и абсолютный адрес уже другой... если конечно явно не прописать что надо компилировать в абсолютной адресации.
     
  9. hewr

    hewr New Member

    Blog Posts:
    0
    >А можно пример, когда без них не обойтись?

    псевдокод: