首页 > 解决方案 > 如何使用 Visual Studio 知道 Windows 系统调用的汇编代码?

问题描述

我有兴趣找出 Windows API 函数之间的差异(实现方式)timeGetTime()GetTickCount()因为源代码不会公开,我正在考虑使用 Visual Studio 中的汇编代码分析它们的实现,有人能提出更好的主意吗?

标签: windowsvisual-studiox86operating-system

解决方案


为用户模式代码使用调试器,如Ollydbgx64dbgIDA pro或 Visual Studio 本身。如果您需要切换到内核模式端,请使用WinDBG

编写一个尽可能简单的程序,然后调用您要分析的 API:

  1. 如果它不是系统范围的调试器,则将其加载到调试器中。
  2. 在 API 上设置断点。
  3. 运行程序。
  4. 一旦中断,根据需要单步执行。

调试器对 Windows 的了解越多(阅读更多调试符号),分析就越容易。
WinDBG 有丰富的符号库,但使用起来有点硬件。


要了解像您这样的 API GetTicksCount,此页面可能会很有用:

正如Peter Corders所设想的那样,Windows 在所有用户模式进程共享的内存区域中公开频繁访问信息,例如滴答计数。
GetTicksCount仅从中复制数据(进行一些同步)。


推荐阅读