Чем заменить API Monitor?

Тема в разделе "WASM.WIN32", создана пользователем GwasmG, 9 янв 2022.

  1. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Чтобы быстро понять, как приложение взаимодействует с ОС, использовал инструмент API Monitor (rohitab).
    На новых версиях Win10 и Win11 начал замечать нестабильное поведение данного приложения. Короче говоря, оно уже устарело.

    Чем вообще его можно заменить? Смотрел альтернативы, но они делают не совсем то, что хотелось бы. Нужен трассировщик, которым можно быстро смотреть цепочки вызовов.

    Кто чем пользуется? Я склоняюсь к WinDbg, но не имею особого опыта работы с ним.
     
  2. k3rnl

    k3rnl New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2021
    Сообщения:
    27
  3. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    k3rnl, знаком со всем этим. По смыслу подходит лишь procmon, но он ограничен в возможностях. Ну, и ещё просмотр стека и последних системных вызовов тредов. Это не совсем то.

    Нужен именно трассировщик API-вызовов, чтобы посмотреть поведение приложения в среде, подсмотреть какую функциональность системы использует. Естественно, в динамике (хотя и статика приветствуется, если это удобно).
     
  4. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    В чем именно проявляется эта нестабильность? МБ попробовать сначала выяснить причину нестабильности.
     
  5. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Да в разном. От работы драйвера, до работы с какими-то библиотеками. Было бы чудно починить его, но может есть более актуальный инструмент.

    WinDbg, например, имеет какие-то расширения для этого (по крайней мере, имел году в 2008), и мне интересно, может им кто-то пользуется для этой цели? Или этим вообще уже никто не занимается?
     
  6. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Ну это нужно конкретно знать в чем проявляется проблема, с такой расплывчатой формулировкой не понятно даже в принципе что может быть.

    Мне кажется просто смещения где-то поменялись в системных структурах и достаточно просто пофиксить несколько байт в либах. Но это только на первый взгляд.
     
  7. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Thetrik, в том и суть моего поста. Стоит ли его вообще чинить, или проще похоронить...
    Мало того, что не поддерживается давно, он ещё и приложения крашит, даже на старых системах.
     
  8. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Это зависит от того что в итоге требуется. Если решение проблемы занимает слишком много усилий, то возможно стоит поискать другой инструмент, но я тут уже не подскажу т.к. подобных инструментов с такой функциональностью я не знаю. Мне просто интересен данный вопрос именно в контексте "выяснить причину и пофиксить баг".
     
  9. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Понял. Причину я буду искать после того, как не найду достойной альтернативы.

    Пока я знаю лишь, что драйвер не загружается (приложение лишилось части возможностей кернела), и есть какие-то ошибки с системными длл (может, это связано с работой драйвера).

    То что целевой процесс крашится - уже привык :don-t_mention:
     
  10. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Про какой драйвер речь?
     
  11. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Поставляемый с приложением кернел-модуль. Там их 2x2, на разрядности. Думаю, что не работают оба.
    --- Сообщение объединено, 9 янв 2022 ---
    Thetrik, и в логе он жалуется на ApiSet'ы.
     
  12. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    GwasmG, наверное , тут как раз подошел бы тот самый визор. Попробуйте например вот это https://github.com/hasherezade/tiny_tracer
    правда, гуёв там нет, но врядли будет какой-то инструмент по типу апи монитора.

    кстати, можно было бы пойти на форум разраба (рохитаб) и запостить там баг репорт. Но с такой расплывчатой формулировкой (не работает, а что - сам не знаю) толку не будет.
     
    Indy_ нравится это.
  13. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Просмотрю, спасибо. А гуй и не нужен для таких вещей. Несколько окон консоли - куда удобнее для текстовой информации, чем отрисовка в графических элементах. Я ж даже про WinDbg писал...

    Разраб ещё в 2018 году писал, что вроде как что-то там ищет время и силы на обновление, но 2018 уже давно прошёл. Думаю, мысль понятна :no2:
     
  14. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Это обычные DLL. Можно глянуть почему не грузятся, только там примитивная антиотладка, но она элементарно обходится.
     
    M0rg0t нравится это.
  15. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Вот, как раз, в роли длл они загружаются. А дальше - хз.
     
  16. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    При запуске 32 битной версии на 64 битной системе запускается 64 битный с параметром psn. Этот вызов отрабатывает успешно? apimonitor-psn-x64.sys инжектируется в csrss? CsrCreateProcess перехватывается успешно? Уверен, где-то в этой цепочке трабла.
     
  17. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Только что увидел, что это действительно лишь длл для внедрения в подсистему... Я даже не знаю, упрощает ли это задачу, или усложняет.
     
  18. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Ну ты посмотри, проходит ли инжект в csrss. С большой вероятностью система просто отклоняет все модификации / аллокации памяти / создание удаленных потоков в этом процессе и все. В этом и проблема скорее всего.
     
  19. GwasmG

    GwasmG New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2021
    Сообщения:
    25
    Нет, модуль только в процессе самого монитора. Это я и подразумевал, когда писал
    Меня это и удивило. Я-то думал, что там драйвер упакован.

    А по сути - да, где-то в этой цепочке и кроется проблема. Но кроме того, смущают ApiSet'ы в логе (Schema Map Version 6 is not supported; и куча Failed to open).
    --- Сообщение объединено, 9 янв 2022 ---
    Thetrik, похоже, вот и ответ:
    Failed to open process: 696 - Error: 5, Отказано в доступе.
    Failed to open process: 784 - Error: 5, Отказано в доступе.


    Оба айди соответствуют csrss.exe
     
  20. Indy_

    Indy_ Well-Known Member

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

    А в чём проблема, пропатчить весь экспорт/импорт ?

    Там коденга на час. Думаешь визор собрать или какой то трейсер проще - нет, нет там гуя он не нужен.