отладка драйвера - понять с какого места совершается прыжок

Тема в разделе "WASM.NT.KERNEL", создана пользователем vladqq, 29 апр 2010.

  1. vladqq

    vladqq New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2009
    Сообщения:
    69
    хай всем

    такой вопрос
    отлаживаю драйвер через windbg
    в произвольный момент eip драйвера оказывается равен левому числу, которое я заметил в стеке, тоесть очевидно на него совершается возврат. сперва подумал на ret, повставлял перед каждым ret проверку правильности адреса возврата - ничё не дало. потом тоже самое поделал везде где адрес прыжка call/jmp не константен, тоже ничё не дало. есть ли способ заставить windbg трейсить код автоматически, чтоб я мог хоть как-то понять откуда происходит фатальный прыжок ? или может есть профайлер какой ?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    vladqq
    Бактрейс. Если не получится, тогда проблемы у вас.
     
  3. vladqq

    vladqq New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2009
    Сообщения:
    69
    В бактрейсе ерунда, поэтому то и хочется какой-нить авто трейсинг сделать.
     
  4. hlt

    hlt Member

    Публикаций:
    0
    Регистрация:
    21 дек 2007
    Сообщения:
    56
    в windbg можно писать отладочные скрипты.
    Пример из моих закромов:
    Конечно, в твоем случае надо придумывать чото свое. Так что прийдется курить доки по коммандам дебаггера.
     
  5. vladqq

    vladqq New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2009
    Сообщения:
    69
    эх блин... уже две недели убил. самое обидное что когда включаешь дебаг-логи всё работает как часы.
     
  6. hlt

    hlt Member

    Публикаций:
    0
    Регистрация:
    21 дек 2007
    Сообщения:
    56
    нутак сделай скрипт с пошаговой анимацией, - ход выполнения будет отображаться в основном логе. Там вроде как есть комманда цикла ".while" (сам чесслово не пользовал).
     
  7. hlt

    hlt Member

    Публикаций:
    0
    Регистрация:
    21 дек 2007
    Сообщения:
    56
    если не будет отображаться, - в цикле выводи eip просто в лог.
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    vladqq
    В стеке полюбому должны быть адреса возврата из функций. Если их нет, то недавно была смена кпл нулевое, тоесть проблемы в обработчиках самого верхнего уровня, скорее всего вы сст затрагиваете, хотя всёравно адрес возврата хотябы в код формирующий трап-фрейм должен быть.
    Значит стек сбалансирован и не изза этого рушится. Опишите подробно проблему, что за произвольный момент и возврат.
     
  9. hlt

    hlt Member

    Публикаций:
    0
    Регистрация:
    21 дек 2007
    Сообщения:
    56
    кстати, еще есть такая хрень в анализе крешдампа - last control transfer - вроде так называется.