Получить максимальный адрес стека x86

Тема в разделе "WASM.BEGINNERS", создана пользователем cryptoexp, 1 сен 2019.

  1. cryptoexp

    cryptoexp New Member

    Публикаций:
    0
    Регистрация:
    6 сен 2017
    Сообщения:
    19
    Как получить максимальный адрес стека, для своего потока без использования API.
    FS:[0x04] и FS:[0x08] хранят непонятные мне значения. Я так понимаю нужно в TEB найти это значение. Но не могу там разобраться.
     
  2. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Ну как вариант поставить SEH обработчик и тестировать обращение к страницам, пока не поймаешь исключение.
     
  3. maestroant

    maestroant New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2019
    Сообщения:
    14
    Все просто, в FS:[0x04] и сидит максимальный адрес. Присмотритесь)
     
    cryptoexp и Bedolaga нравится это.
  4. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    131
    Какое-то время назад за эту инфу я готов был горло перегрызть....
     
    maestroant нравится это.
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    С этим два подводных камня может быть. Во первых база может меняться, так с фиберами происходит. А во вторых если сменить диапазон стека на это защита в некоторых сервисах среагирует, при выделении памяти например.
     
  6. maestroant

    maestroant New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2019
    Сообщения:
    14
    Indy_, у каждого волокна же свой стек, соответственно и свой макс.адрес, не?
     
    cryptoexp нравится это.
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    maestroant,

    Все интернал нюансы таким путем нельзя учесть. Я например это выяснил когда апп падало работая под визором у которого общий стек. К примеру предполагается что в любой момент времени поточный стек валид в юзер мод, это необходимо для локальной отладки. Но есть есчо подводные камни, некоторые функции расширения стека на время переключают указатель, если в этот момент апп трассируется то процесс прибьёт ядро, так как не сможет развернуть исключение.
     
    q2e74 нравится это.
  8. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    999
    а можно на это посмотреть?