Трассировка Windows API из пользовательского режима в режим ядра
Я хотел бы отслеживать / регистрировать весь поток вызова API из пользовательского режима в режим ядра. Например, если приложение пользовательского режима вызывает API-интерфейс FindFirstFile (), я хотел бы зарегистрировать следующее:
FindFirstFile -> NtQueryDirectoryFile -> SYSCALL -> KiSystemService -> KiFastCallEntry -> NtQueryDirectoryFile -> IRP ->...
Есть ли сегодня какая-нибудь программа, которая может это сделать? (Rohitab API Monitor может выполнять трассировку API пользовательского режима, но не одновременно). Если нет, то какой самый элегантный способ развить такую способность?
2 ответа
Так как ProcExplorer предоставляет полную трассировку потоков, это тоже можно сделать. Я нашел этот веб-сайт, который объясняет, как реализовать режим ядра GetThreadContext(), чтобы завершить картину стека (с StackWalk64).
http://blog.airesoft.co.uk/2009/02/grabbing-kernel-thread-contexts-the-process-explorer-way/
Да, вы можете сделать это, используя windbg, это программа от Microsoft, которая может отлаживать режим пользователя, а также режим ядра.
Вы можете начать отсюда.
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/getting-started-with-windbg
а также, если вы хотите прочитать об этом и увидеть пример этого, вы также можете увидеть здесь.
http://www.osronline.com/article.cfm?id=257
Удачи:-)