Каковы эти загадочные адреса в трассировках системных вызовов ядра Windows?

Я использую трассировку событий для Windows (ETW) для трассировки ядра системных вызовов в Windows Server 2008 R2.

Я бегу:

logman start "NT Kernel Logger" -p "Windows Kernel Trace" (process,thread,cswitch,syscall) -o events.etl -ets

В полученных трассировках ядра я смотрю на атрибут SysCallAddress и вижу много того, что ожидал: например, 0xFFFFF80001999EE0, который является nt!NtWriteFile.

Проблема в том, что я вижу много адресов в диапазоне 0xFFFFF960, например 0xFFFFF9600004421C, и я не знаю, что находится по этим адресам. Команда ln в отладчике ядра не возвращает никакой информации ни для одного из этих адресов. Кто-нибудь знает, что живет по этим адресам, которые трассировщик ядра считает системными вызовами?


person canzar    schedule 09.05.2012    source источник


Ответы (1)


Это системные вызовы в win32k.sys. Подумайте о GetMessage, EndDraw и т. д.

person Neeraj Singh    schedule 10.05.2012
comment
Спасибо за ответ! У вас есть ссылки? Кроме того, почему отладчик ничего не говорит мне о них? - person canzar; 10.05.2012
comment
win32k отображается в пространство сеанса. Если ваш отладчик взломан, а не в контексте процесса в сеансе, то ничего не будет видно. Используйте .process /p /r ‹адрес explorer.exe›, чтобы добраться до места, где вы можете увидеть эти адреса. - person Neeraj Singh; 12.05.2012
comment
При ближайшем рассмотрении я замечаю, что действительно могу видеть эти импорты, когда нахожусь в контексте процесса. Однако я могу разрешить только часть из них. Я вижу, что win32k начинается с fffff960 00e0000, и я могу разрешить те вызовы, которые происходят за пределами этого адреса, но есть вызовы, которые приходят до этого адреса, например FFFFF960 0005CE44. Любое понимание этого? Независимо от того, какой процесс я выбрал, в этом диапазоне адресов никогда не загружалась библиотека. - person canzar; 17.05.2012
comment
Есть только два разных модуля, которые предоставляют системные вызовы, поэтому функция будет либо в win32k, либо в ntoskrnl. Эти адреса модулей меняются каждый раз, когда вы перезагружаетесь. Есть ли шанс, что это происходит? - person Neeraj Singh; 20.05.2012
comment
:) конечно да -- система фактически перезагрузилась с тех пор, как я собрал трассировку, которую изучал -- спасибо за помощь. - person canzar; 21.05.2012
comment
Кстати, я также обнаружил, что выдача .reload в отладчике ядра, который загружает список выгруженных модулей и символы, также позволяет мне разрешать эти имена без переключения контекстов. - person canzar; 25.05.2012