понимание диспетчера системных вызовов для windows? - PullRequest
3 голосов
/ 27 января 2012

Я пытаюсь сделать что-то задом наперед, чтобы выяснить вызов функции за сценой.

При отладке с использованием windbg я натолкнулся на вызов,

mov     edx,offset SharedUserData!SystemCallStub
call    dword ptr [edx]

вызов приводит к приведенному ниже коду,

ntdll! KiFastSystemCall:

8bd4        mov     edx,esp
0f34        sysenter

Согласно этой документации, eax содержит порядковый номер системного вызова. и значение в eax равно 11CC.

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

Ответы [ 2 ]

4 голосов
/ 27 января 2012

В принципе вам нужен способ сброса SSDT - на x32 это можно сделать легко.Вероятно, самый простой способ - это поискать утилиту, которая вывела бы SSDT по необходимым индексам, и вы увидите, что соответствует этому конкретному индексу.По сути, eax будет хранить индекс в таблице функций, поэтому системный диспетчер в какой-то момент сделает call FunctionTable[eax] Обновленный список таблиц вызовов можно найти здесь

2 голосов
/ 27 января 2012

0x1xxx диапазон для системных вызовов Win32k.См. здесь для списка.

...