Как вручную добраться до user mode стека в windbg
Думаю каждый сталкивался с вот такой картиной:
93b35d38 badb0d00 ntdll!KiFastSystemCall+0x3 (FPO: [0,0,0]) WARNING: Frame IP not in any known module. Following frames may be wrong.
И дальше нет колстека или какой-то мусор. Стек не распарсился, и дальше ядра строиться не хочет. А вызов пришел из ring-3 и нужно позарез узнать стек.
Тег «Далее»
Особенности хуков SSDT
По-моему нет ничего более банального, чем хучить API ядра через патч таблицы сервисов. Все это делали 100 раз, и вот на 101 раз выясняется, что есть особенности.
Тег «Далее»
Об именах процессов в ядре
Каждый кто писал драйвера для Windows сталкивался с потребностью фильтрации чего-либо по имени процесса. И вот тут начинаются свистопляски, потому что нет нормального документированного способа получить имя процесса в ядре.
Тег «Далее»
Как работает обработчик сискола в Windows
Все вроде бы понимают, как происходит переход из ring-3 в ring-0 но никто не рассказывает детально.
Тег «Далее»
Совсем удаленная отладка драйверов или safe mode — наше все.
Вспоминается анекдот-загадка:
Сколько нужно программистов чтобы вкрутить лампочку?
Ответ: Ни одного. Программисты не решают апаратные проблемы.
С удаленной отладкой примерно также: сколько нужно компьютеров, чтобы удаленно отлаживать драйвера? Ответ: три.
Почему 3, а не 2? Да потому что, если это настоящая удаленная отладка, то драйвер выполняется на машине у клиента, а вы конектитесь на еще одну удаленную машину, которая через COM или Firewire подключена к первому. Итого: 2 компа у клиента, и один у вас.
Но это мечта программиста, в реальности обычно используется 2:
1) ваш, на котором «все работает»
2) комп клиента, на котором все не работает.
Как же с этим жить и успешно фиксить баги?
Тег «Далее»