Проблемы с WinDBG. Некоторые команды выдают ошибки

Тема в разделе "WASM.NT.KERNEL", создана пользователем gh05t, 21 ноя 2009.

  1. gh05t

    gh05t New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2008
    Сообщения:
    34
    Код (Text):
    1. lkd> x nt!*TimerTable*
    2. fffff800`01c06d60 nt!KeInitializeTimerTable = <no type information>
    3. fffff800`01ab45a8 nt!KiTimerTableSize = <no type information>
    4. fffff800`0188a810 nt!KiInsertTimerTable = <no type information>
    KiTimerTableListHead нет... Значит символы не те?
     
  2. 0x6b65

    0x6b65 Забанен

    Публикаций:
    0
    Регистрация:
    8 окт 2009
    Сообщения:
    92
    попробуй пореверсить функцию nt!KeInitializeTimerTable. Судя по названию - она должна инициализировать KiTimerTableListHead (которая, возможно, в твоей сборке ка-то по другому называется). Возможно листинг этой функции тебя натолкнет на какие-то мысли.
     
  3. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    gh05t
    >KiTimerTableListHead нет... Значит символы не те?
    Как сказал green, символы ещё те. Просто переменной KiTimerTableListHead, вероятно, действительно нет в х64. (А может быть есть, но из всех доступных публичных символов это вырезано и ничего с этим не поделаешь). Кроме того, множество команд изначально писалось под х32 и до сих пор не были обновлены – при том, что некоторые переменные\поля структур имеют другие названия или отсутствуют в х64.

    > ln
    > GetContextState failed, 0x80004001
    ln, кстати, работает – если адрес, близкий к какому-нибудь модулю, таки задать.
    И !thread должен работать, если адрес реально-существующего-в-данный-момент треда передать.
    Если один рассматривает всё это в целях обучения, то можем лишь предложить установить 32х-битную систему на виртуальную машину и пользовать её.


    green
    Инсайдерская информация, каким-нибудь случаем? )
    А насколько скоро?
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    хех, пропустил про x64.
    Действительно некоторые переменные убраны из 64-битной версии.
    Возможно это связано с PG.
     
  5. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    Подниму тему. Локальная отладка ядра дает иногда ошибку
    GetContextState failed, 0x80004001

    Win 10 x64, стандартный windbg. Например, команда eq дает или при запуске.
    HoShiMin или может кто еще знает.
     
  6. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.427
    Адрес:
    Россия, Нижний Новгород
    M0rg0t, 0x80004001 - это E_NOTIMPL (https://docs.microsoft.com/ru-ru/windows/win32/seccrypto/common-hresult-values)
    Значит, то, что ты пытаешься сделать, или неприменимо в режиме живой отладки ядра (а она ОЧЕНЬ ограничена в возможностях, там нельзя практически ничего), или версия WinDbg, которую ты используешь, ещё не умеет делать то, что тебе нужно.
    Или WinDbg понимает, но не понимает его драйвер или система.
     
  7. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    хотел скопировать токен с одного процесса в другой (_EPROCESS.token ).
     
  8. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.427
    Адрес:
    Россия, Нижний Новгород
    А если то же самое сделать с полноценной отладкой ядра, когда отлаживаешь виртуалку?