Трассировка windows api

Тема в разделе "WASM.BEGINNERS", создана пользователем hiddy, 7 апр 2019.

  1. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    Добрый день, совершенно нубский вопрос. Нужна программа, которая отображает цепочку вызовов внутри определенного ядерного апи. Понятное дело, что можно подглядеть в иду, но это долго и неудобно. Что посоветуете?
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    для юзермода есть много разных вариантов... для ядра не знаю, можно написать скрипт на windbg наверное...
     
  3. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    Для юзермода тоже интересует. Хотя бы буду знать куда копать. Может и опенсурсное что-нибудь есть?

    Windbg тоже не особо приятно лишний раз открывать :lol:
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
  5. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    Благодарю. Оказывается не все так просто... Я почему-то был убежден в том, что существует множество готовых решений на любой вкус и цвет как говорится. Буду искать.
     
  6. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Юзермод отличается от кернел. В юм в несколько строк трассировка обычная машинная реализуется - установил ловушку и обрабатывай останов. В ядре же контекстные переключения, отключения прерываний и прочие вещи, там просто так трассировать локально нельзя.

    И вообще не ясно, нужен граф или нужно трассировать ?
    К примеру ида в статике граф строит. Вам что именно нужно ?
     
    M0rg0t нравится это.
  7. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    Возьмем MmGetSystemRoutineAddress к примеру:

    Код (Text):
    1.  
    2. ; MmGetSystemRoutineAddress
    3. ; ----> RtlUnicodeStringToAnsiString
    4. ; ------------> ...
    5. ; ----> KeDelayExecutionThread
    6. ; ------------> ...
    7. ; ----> RtlFindExportedRoutineByName
    8. ; ------------> RtlImageDirectoryEntryToData
    9. ; --------------------> ...
    10. ; И так далее
    11.  
    Вот такой вывод нужно получить.
     
  8. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    hiddy,

    Значит вам просто в статике нужно простейший граф создать. Для этого есть кучи моторов https://clck.ru/FX2ss

    Бесчисленное множество, измени критерий поиска если нужно.
     
    hiddy нравится это.
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    ну такую штуку можно в статике построить: http://www.hexblog.com/?p=99
    ну или заюзать IDAPython, наверняка есть уже готовые скрипты, погугли...
     
    hiddy нравится это.