Systrace для Windows

Я ищу эквивалент Windows Systrace или по крайней мере strace. Я знаю StraceNT, но интересно, есть ли еще альтернативы там. В частности, я ищу конкретный способ программного обеспечения политик системных вызовов, хотя это может происходить после факта, а не активно останавливать их.

Есть ли хороший способ сделать это сейчас?

Ответ 3

Инструмент Dr. Memory (http://drmemory.org) поставляется с инструментом отслеживания системных вызовов под названием drstrace, в котором перечислены все системные вызовы, сделанные целевой приложение вместе со своими аргументами: http://drmemory.org/strace_for_windows.html

Для программного обеспечения политик системных вызовов вы можете использовать те же базовые модули, что и drstrace: платформа инструментов DynamoRIO (http://dynamorio.org) и Библиотека мониторинга системных вызовов DrSyscall (http://drmemory.org/docs/page_drsyscall.html). Они используют технологию динамического бинарного перевода, которая наносит некоторые накладные расходы (20% -30% в устойчивом состоянии, но намного выше при запуске нового кода, например, запуск большого приложения для настольных компьютеров), что может быть или не быть подходящим для ваших целей.

Ответ 4

API Monitor выглядит очень полезным для этой цели.

Ответ 5

Вот довольно интересная статья, я не знаю, попадает ли она в цель, которую вы ищете, но я думаю, что вы можете найти ее, ведущую вас в нужном вам направлении.

http://jbremer.org/intercepting-system-calls-on-x86_64-windows/

Ответ 6

strace можно получить у Cygwin в пакете cygwin . Вы можете скачать его из Cygwin mirror, например:

http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
#      |                      |                              |     |
#      +-----------+----------+                              +--+--+
#                  |                                            |
#               mirror                                       version

strace - одна из немногих программ Cygwin, которая не полагается на Cygwin DLL, поэтому вы должны просто скопировать strace.exe туда, где хотите, и использовать его.

Ответ 8

Вы можете использовать монитор процессов, написанный Марком Руссиновичем. Это фантастическое приложение, которое позволит вам подключаться к любому запущенному процессу в системе и видеть все системные вызовы, которые этот процесс в настоящее время делает.

https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx

Ответ 9

Strace поддерживается Git, как упомянул Майкл Фокс. Может быть, бесполезен для сложных программ /windows.