Добрый день, совершенно нубский вопрос. Нужна программа, которая отображает цепочку вызовов внутри определенного ядерного апи. Понятное дело, что можно подглядеть в иду, но это долго и неудобно. Что посоветуете?
для юзермода есть много разных вариантов... для ядра не знаю, можно написать скрипт на windbg наверное...
Для юзермода тоже интересует. Хотя бы буду знать куда копать. Может и опенсурсное что-нибудь есть? Windbg тоже не особо приятно лишний раз открывать :lol:
Благодарю. Оказывается не все так просто... Я почему-то был убежден в том, что существует множество готовых решений на любой вкус и цвет как говорится. Буду искать.
Юзермод отличается от кернел. В юм в несколько строк трассировка обычная машинная реализуется - установил ловушку и обрабатывай останов. В ядре же контекстные переключения, отключения прерываний и прочие вещи, там просто так трассировать локально нельзя. И вообще не ясно, нужен граф или нужно трассировать ? К примеру ида в статике граф строит. Вам что именно нужно ?
Возьмем MmGetSystemRoutineAddress к примеру: Код (Text): ; MmGetSystemRoutineAddress ; ----> RtlUnicodeStringToAnsiString ; ------------> ... ; ----> KeDelayExecutionThread ; ------------> ... ; ----> RtlFindExportedRoutineByName ; ------------> RtlImageDirectoryEntryToData ; --------------------> ... ; И так далее Вот такой вывод нужно получить.
hiddy, Значит вам просто в статике нужно простейший граф создать. Для этого есть кучи моторов https://clck.ru/FX2ss Бесчисленное множество, измени критерий поиска если нужно.
ну такую штуку можно в статике построить: http://www.hexblog.com/?p=99 ну или заюзать IDAPython, наверняка есть уже готовые скрипты, погугли...