我正在寻找 Windows 等效的Systrace或至少strace。我知道 StraceNT,但想知道是否还有其他选择。具体来说,我正在寻找一种以编程方式强制执行系统调用策略的特定方法,尽管这可能是事后而不是主动阻止它们。
目前有没有好的方法来做到这一点?
WinDbg 的 Logger.exe 最接近 strace:https ://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/logger-and-logviewer
编辑:还有windbg的重量:https ://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/wt--trace-and-watch-data-
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%,但在运行新代码(例如启动大型桌面应用程序)时要高得多),这可能适合您的目的,也可能不适合您的目的。
API Monitor看起来对这个目的非常有用。
这是一篇非常有趣的文章,我不知道它是否达到了您正在寻找的目标,但我想您可能会发现它会引导您朝着您想要的方向前进。
http://jbremer.org/intercepting-system-calls-on-x86_64-windows/
有几个工具都是围绕 Xperf 构建的。它相当复杂但非常强大——请参阅快速入门指南。Windows 性能分析页面上还有其他有用的资源
您可以使用 Mark Russinovich 编写的进程监视器。这是一个很棒的小应用程序,它允许您附加到系统上任何正在运行的进程,并查看该进程当前正在进行的所有系统调用。
https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx