我的工作涉及使用我没有来源的第三方工具进行系统级性能测试。我也在测试 Windows,可以使用调试符号但不能使用 Windows 源代码。我想要一种定量的方式来描述我的测试涵盖的主机操作系统的区域。有两个重要步骤:确定我想要查看的 DLL 和函数,然后确定如何分析对它们的调用。
覆盖的想法:
- 来自 kernel.dll、ntdll.dll、user.dll 等的所有函数……主要的内置模块。这可能是大量的矫枉过正,并且可能会发现许多仅与弃用功能有关的差距。
- 只是目标应用程序使用的任何 DLL 的模块名称。没有那么详细,但也不太可能错过目标应用程序中的关键功能。
- 应用程序特定模块,例如 DirectX 10 应用程序的 d3d10.dll。
- 基本块。我猜这将是一篇博士论文的工作量。
剖析思路:
- 对我的所有测试运行 VTune 调用图分析。这种工作,但似乎提供了一个有限的视图来了解实际调用了哪些内置函数。
- 使用 Pin 或 DynamoRIO 等动态检测应用程序。可能的缺点:慢。
- 使用 WinDbg 接听电话。不确定这是否比 Pin 更容易或更快。
- 使用 IDA Pro 等反汇编工具进行静态分析。
在 Windows 上是否有任何符合这些方面的已发表作品?您是否曾经使用过其中一种工具来进行足够多的挂钩或日志记录,以至于您可以推荐它?