94

我正在寻找 Windows 等效的Systrace或至少strace。我知道 StraceNT,但想知道是否还有其他选择。具体来说,我正在寻找一种以编程方式强制执行系统调用策略的特定方法,尽管这可能是事后而不是主动阻止它们。

目前有没有好的方法来做到这一点?

4

9 回答 9

44

几个选项:

进程监视器

此外,请参阅这篇关于 Windows 7 内置工具的文章:

核心操作系统工具

于 2011-08-02T22:56:30.830 回答
29

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-

于 2012-10-12T14:32:51.093 回答
15

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%,但在运行新代码(例如启动大型桌面应用程序)时要高得多),这可能适合您的目的,也可能不适合您的目的。

于 2014-04-07T13:14:38.243 回答
13

API Monitor看起来对这个目的非常有用。

于 2015-01-21T17:57:16.827 回答
6

这是一篇非常有趣的文章,我不知道它是否达到了您正在寻找的目标,但我想您可能会发现它会引导您朝着您想要的方向前进。

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

于 2013-07-26T13:44:32.787 回答
3

strace 可从 Cygwin 的cygwin 包中获得。您可以从Cygwin 镜像下载它,例如:

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

strace 是少数几个不依赖 Cygwin DLL 的 Cygwin 程序之一,因此您应该能够复制strace.exe到您想要的位置并使用它。

于 2015-06-03T03:14:36.623 回答
2

有几个工具都是围绕 Xperf 构建的。它相当复杂但非常强大——请参阅快速入门指南Windows 性能分析页面上还有其他有用的资源

于 2011-12-20T09:02:17.757 回答
1

您可以使用 Mark Russinovich 编写的进程监视器。这是一个很棒的小应用程序,它允许您附加到系统上任何正在运行的进程,并查看该进程当前正在进行的所有系统调用。

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

于 2017-01-21T16:38:57.723 回答
-2

strace通过安装 Windwos Git支持,正如 Michael Fox 提到的,可能对复杂/windows 软件没有用处。

在此处输入图像描述

在此处输入图像描述

于 2019-08-22T22:10:56.880 回答