как отменить релоцирование базового адреса EXE

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by sn0w, 3 Jun 2011.

  1. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,310
    Reputations:
    327
    бывает такое, напрягает например при отладке(пизжу, при кряке конечно, не в дизасме ж свой код разбирать) - дизасм по одной базе шпарит, EXE в дебаггере по другой...

    вообщем идем в поле DllCharacteristics в PE (на диске) и смело пишем туда 0x8000 (бывает иногда crc надо пересчитывать - но эт далеко не всегда), теперь несмотря на наличие релоков образ будет грузиться по указанному ImageBase.
     
    #1 sn0w, 3 Jun 2011
    Last edited: 4 Jun 2011
  2. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    виндоус плохой) на хп всё нормально с этим, всегда 0х400000
     
  3. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    IMAGE_NT_HEADERS::IMAGE_OPTIONAL_HEADER::DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress=0
    И экзе будет всегда грузится виндой по своей базе
     
  4. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    google: disable aslr
     
  5. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,310
    Reputations:
    327
    эт тоже да