Получить адрес возврата

Тема в разделе "WASM.NT.KERNEL", создана пользователем guessWh0_o, 6 мар 2019.

  1. guessWh0_o

    guessWh0_o New Member

    Публикаций:
    0
    Регистрация:
    6 окт 2018
    Сообщения:
    27
    Драйвер под Win7x86. После подмены адресов в SSDT таблице хочу получить адрес возврата из стека путем получения значения из регистра [ebp + 4]. В итоге адрес не совпадает с ожидаемым. Как правильно реализовать данный механизм?
     
  2. im.

    im. Active Member

    Публикаций:
    0
    Регистрация:
    16 сен 2017
    Сообщения:
    310
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Межкольцевое переключение приводит к смене контекста.

    При входе потока в ядро формируется KTRAP_FRAME. Если выполняется проход по цепочке фреймов(x86), то он оканчивается на этом фрейме. Далее вам нужно взять из него юзер указатель(EBP) и продолжить бэктрейс. И не забыть что это юзер память и указатель может быть любым. Ну что бы не создать уязвимость.
    Кстате забыл про важный нюанс. Вы спросите как этот фрейм обнаружить - там есть отладочный маркер.